Mon Aug 15 18:57:04 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.16 * tools/mkimage.c: Patch from H.J.: Do not adjust data_origin for qmagic shared library. Don't know why I thought this was needed in the first place. * jumpas.c: Fix bug - inadvertently write out static variables to jump.log Tue Aug 9 22:05:22 1994 Eric Youngdale (eric@esp22) * tools/utils.c: Always write out X.Y.Z for version number in jump.params. Wed Aug 3 06:05:35 1994 Eric Youngdale (eric@esp22) * tools/Makerules (install): For now create the compatability stuff so that old Makefiles and so forth are not broken. Mon Aug 1 07:42:47 1994 Chris Metcalf (metcalf@lcs.mit.edu) * README, README.tr, example/Makefile, tools/Makefile, tools/Makerules: change installation directory to /usr/bin. Sun Jul 31 22:58:58 1994 Eric Youngdale (eric@esp22) * tools/mkimage.c: Use -Ttext, not -T for ld. Thu Jul 21 00:17:09 1994 Eric Youngdale (eric@esp22) * tools/jumpas.c (main): Bugfix - zero sized file used to crash jumpas. * tools/utils.c (readgbls): Add new code to check for and handle the new format of nm output that is generated from binutils-2.N. Tue Jun 21 08:27:04 1994 Eric Youngdale (eric@esp22) * tools/Makerules (mkimage): Add $(MD) so this is correctly added every time. Fri Jun 17 08:11:46 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.15 * mkimage.c: Ok, this time it is for real. The md_chars_to_number should only be used if HOST_TARGET_ENDIANESS_DIFFERS is defined. Thu Jun 16 20:17:29 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.14 * mkimage.c: Try this *one* more time. Empty .s files choke some versions of ld, so we supply a minimal file. Also, use md_chars_to_number when grabbing the magic number, so for cross building stuff this all works OK. Thanks to Mitch for catching all of this. * table_description: Allot 24 Mb for the Modula-3 libraries. Hopefully this will be the last one before PIC ELF libraries are ready for the punters. Thu Jun 16 00:36:49 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.13 * mkimage.c (is_q_magic): Fix bug that prevented detection of default magic format. Thu Jun 9 00:25:44 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.12 * doc/table_description: Update a few email addresses. * example/Makefile (LD_LIBRARY_PATH): export so that example works with new version of make. * mkimage.c: Add support for qmagic (i.e. we do the right thing for qmagic libraries). Automatically detect what the linker default format is and act accordingly. Sun Jan 23 18:08:13 1994 Eric Youngdale (eric@esp22) * utils.c, README.tr: Bump version to 2.11 * doc/table_description: Add new libraries. * tools/fixassy.c: Patch to handle: _yycrank(%edi,%eax,8),%eax * tools/[mkimage,mkstubs,jumpas].c: Do not complain about non-absolute pathnames if the path starts with '.'. (I.e., assume user knows what they are doing). * example/Makefile: Update a little bit. * Makefile: Remove mention of ld and crt directories. Patches from H.J.: * tools/*.c: Include errno.h. * utils.c: Add newline before an error message. * tools/mkstubs.c: Do not include symbols with type of "U". Wed Dec 8 10:41:32 1993 Eric Youngdale (eric at tantalus) Patches from Alan Modra, alan@spri.levels.unisa.edu.au: * tools/utils.c: Fix problem whith LONG_FILENAME test. * Makefile: Use rm -f for clean. Change root for tar file in dist. Thu Dec 2 16:07:15 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.10 * doc/table_description: Add a few more entries for libitcl and libBLT. * utils.c: Fix a couple of minor problems involving placeholders. Patches from Mahesh Neelakanta. * Various Makefiles: Patches from Olaf Titz. Thu Dec 2 16:07:15 1993 Mitch Dsouza (m.dsouza@mrc-apu.cam.ac.uk) * Throughout: If fopen returns NULL, exit with error message. * mkcompat.c: Shuffle a few things around. Fri Oct 8 11:38:04 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.9 Fri Oct 8 14:52:27 1993 Mitch Dsouza (m.dsouza@mrc-apu.cam.ac.uk) * Added doc/motif.advert from Mahesh Neelakanta. * More changes to mkcompat.c to properly handle DUMMY place holders. * Rebuild doc/README.ps Thu Oct 7 11:15:10 1993 Mitch Dsouza (m.dsouza@mrc-apu.cam.ac.uk) * Add Eric patches for SysVr4 compiling. * Remove verify dependencies from all Makefiles and add to Makerules * Added Mahesh Neelakanta commercial Motif advert to doc/table_table_description. Wed Oct 6 13:57:42 1993 Mitch Dsouza (m.dsouza@mrc-apu.cam.ac.uk) * tools/gentable.c warns of missing entries in table_descriptions * mkcompat.c rewritten to work on multiple libraries packaged into single DLL's like libc. * libinfo, mkcompat, support -L and -l options for library search path and library name respectively. * Cleaned up all Makefiles. Moved dependencies to Makerules * a.out.h moved to tools/linux subdirectory. Added -I. to Makerules Tue Oct 5 11:02:10 1993 Mitch Dsouza (m.dsouza@mrc-apu.cam.ac.uk) * tools/gentable awk script rewritten in C to be more portable. * DLL table in doc/README.tr deleted. Now automatically generated by tools/gentable * mkcompat.c static structure of table descriptions removed. Now automatically generated mkcompat.h header by tools/genheader. * Fixed up Makefile.cross to use -idirafter syntax for cross compiling. Now uses CROSSINCDIR and CROSSBINDIR. Tue Oct 5 10:54:04 1993 Eric Youngdale (eric at tantalus) * A number of changes from Mitch: * doc/table_description: New file - database of libraries. * tools/gentable: New file - script that generates table of libraries for README.tr and mkcompat.c * tools/mkcompat.h, doc/table.tr: New file generated by gentable. Wed Sep 21 17:13:15 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.8.1 * README.tr: Fix ending address for libsuit.a. Fix ending address for libOI.a Add entries for libld, libarma*, libwxwin.a and libandrew.a * fixassy.c: Put log file in current directory. Only generate log file if LOGFILE defined during compilation. * jumpas.c: Fix trivial bug in warning message about non-absolute paths. Thu Aug 19 15:46:18 1993 Eric Youngdale (eric at tantalus) * mkcompat.c: New version from Mitch. Mon Aug 16 23:41:19 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.8 Wed Aug 11 09:58:20 1993 Eric Youngdale (eric@kafka) * fixassy.c: Only generate the /tmp/jumpas.log file if compiled with -DDEBUG. * README.tr, logo.eps: Patches from Mitch DSouza. Display linux version number correctly, and float the table. * mkcompat.c: Patches from Mitch DSouza - make table more descriptive. Tue Aug 10 12:33:08 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.7.6 * Makefile.cross, Makefile.sgi: New Makefiles for specific purposes. * biglittle.c, md.h: New file, used when cross building shared libraries on machines with the little endianness. * Makefile.*: Add comments to the beginning describing the intended use of each Makefile. Tue Jul 27 09:55:36 1993 Eric Youngdale (eric at tantalus) * jumpas.c: Warn about non-absolute path names in JUMP_DIR. Mon Jul 19 16:11:50 1993 Eric Youngdale (eric at tantalus) * Patches to README.tr from Davin Milun installed. Includes a few grammatical fixes, plus the font is changed to courier for all references to commands within the body of the text. Wed Jun 30 21:54:07 1993 Eric Youngdale (eric@kafka) * Makefile: Remove ld and crt directories. * Add a number of patches from H.J. that are required for cross building stuff on big-endian machines. Wed Jun 30 00:08:07 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.7.5 * jumpas.c: Change "2" to the constant JUST_NM. * utils.c: Allow __GLOBAL_$[D,I]$* in the jump.ignore file (i.e. when the flag is set to JUST_NM). * mkimage.c: If the GOT is not a multiple of a page size, and an explicit address is used for the data segment, then move the start of the data segment back to the next page boundary, and add padding in front of the GOT to ensure that the GOT remains at the same address (really only used for libm). Fri Jun 4 18:19:18 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.7.4 Fix bug related to constructors for G++. * jumpas.c (send_log): Do not add symbols of the form __GLOBAL_$[I,D]$* to any of the log files. * utils.c (readgbls): Complain if any __GLOBAL_$[I,D]$* symbols are found. Thu Jun 3 19:42:36 1993 Eric Youngdale (eric@kafka) * jumpas.c: Make sure that ftail really points to EOF before adding BUILTIN_FIXUP stuff. * jumpas.c: When adding STV stuff, modify ftail if required. Wed Jun 2 18:45:55 1993 Eric Youngdale (eric@kafka) * jumpas.c: Correctly handle case of .lcomm when generating an STV label - convert to a .space directive. Tue Jun 1 00:28:14 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.7.3 * mkstubs.c: Correct address for "C" stubs when data origin is in use. Fri May 28 15:56:16 1993 Eric Youngdale (eric at tantalus) * fixassy.c(fixup): Do not check usereg2 here. * fixassy.c(spill): Check it here instead (where we need it). Print proper error message if we ran out of registers. Wed May 26 21:05:34 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.7.2 * fixassy.c(fixup): Add code to recognize and properly deal with operands of the type "offset(%ecx,%ebx)". Comes up in InterViews for some reason but nowhere else that I have seen. * fixassy.c (fixup): Fix bug where we were not properly accounting for operands that use more than one register, and could end up clobbering a register that we should not. I am not aware of any actual problems in an actual library out on the street due to this, but after fixing the above I noticed a problem with the replacement. * fixassy(fixup): Be a little more strict when handling operands of the type "offset(,%ebx,4)". Make sure that there is no trailing stuff after this - complain if there is. I doubt that this would ever happen, and I am not aware of any problems due to this, but it would be better to holler than assume. Mon May 24 18:24:11 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.7.1 * mkstubs.c: Do not add common symbols in the regular stub - instead put each common symbol into it's own stub file. Tue May 18 22:41:06 1993 Eric Youngdale (eric@kafka) * utils.c, README.tr, Makefile: Bump version to 2.7 * mkstubs.c: If override defined for symbol, use this to form the list of undefs (used to force other libraries), instead of the default list for the library as a whole. Used as a special hack for certain special cases. * utils.c(readgbls): Store 5th argument (if present) in override_undefs. * utils.h: Add override_undefs to struct global. * utils.c(readgbls): Parse the "nm -o" format correctly, if used. * README.tr: Document new hack. * README.ps: Update from README.tr. Tue May 18 18:18:08 1993 Eric Youngdale (eric at tantalus) Make patches so that constructors are run for global objects in the sharable libraries. * mkimage.c: Add a call to __main in last jump table slot. * mkstubs.c: Add a ".stabs \"___CTOR_LIST__\",20,0,0,%x" to stub library, using the address of last jump table slot. * example/Makefile: Use /usr/dll/bin in front of mkimage and mkstubs. Change -lc to -lc -lgcc -lc in command for mkimage. Mon May 17 18:06:29 1993 Eric Youngdale (eric at tantalus) * README.tr: Add entry in table for libOI. * mkimage.c: Print error message if jump table or GOT overflow. * TODO: Mention problem with global constructors in sharable libraries. Sun May 16 16:29:41 GMT 1993 Paul Pluzhnikov (besp@ellis.uchicago.edu) * doc/README.tr: Minor detail - change "libxyzzy" to your library name when generating jump.{funcs,vars} (cost me two days :-( * tools/jumpas.c: Generate random name instead of jumpas.tmp - allows to do "make -j 3" without jobs writing over each other's jumpas.tmp. Fri Apr 23 15:00:56 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.6 * tools/*.c: Change all use of the +no-cplus switch for nm to the NO_CPLUS macro. * tools/utils.h: Define NO_CPLUS as --no-cplus. Thu Apr 8 10:13:27 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.5.2 * tools/Makefile: Create ${BINDIR} if it does not exist. * mkimage.c: Use libname, not imagename when testing for absolute path. Tue Apr 6 12:47:42 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.5.1 * tools/Makefile: Install mkcompat in ${BINDIR}. Mon Apr 5 10:57:24 1993 Eric Youngdale (eric at tantalus) * mkstubs.c: Print warning if relative path is used for library name (i.e. leading character is not a /). * mkimage.c: Likewise. Fri Apr 2 09:53:59 1993 Eric Youngdale (eric at tantalus) * utils.c, README.tr, Makefile: Bump version to 2.5 * mkstubs.c: Fix bug in handling of 'U' in jump.*. * mkstubs.c: Make __LAST_DATA_ADDRESS relative to start of sharable image, not the start of the actual data. * tools/Makefile: Install mkcompat, with all of the proper symlinks. * README.tr: More touchups from Mitch DSouza, plus new appendix that explains how to use mkcompat. Thu Mar 25 07:46:14 1993 Eric Youngdale (eric at tantalus) * tools/Makefile: Install mkcompat, and add symlinks for getvars, getfuncs and libinfo. Wed Mar 24 12:28:50 1993 Eric Youngdale (eric at tantalus) * utils.c: Bump version number to 2.4 * utils.c: Remove definitions of CHECKSIZE and JUSTNM, use new definitions from utils.h * utils.h: Define CHECKSIZE and JUSTNM. * getsize.c, mkimage.c, mkstubs.c, jumpas.c: Fix unterminated string constant typo. * mkstubs.c: Define local symbols __GOT_SIZE, __PLT_SIZE and __LAST_DATA_ADDRESS to help generate jump.* files from stub libraries. * mkimage.c: Load jump.import with the JUSTNM flag. * mkcompat.c: New file from Mitch DSouza - replaces comp.c * Makefile: Compile mkcompat.c. * README.tr: Explictly list individual X libraries in table. Add preliminary entry for Motif libraries. Thu Mar 11 10:55:15 1993 Eric Youngdale (eric at tantalus) * README.tr: Patches from Mitch DSouza. * tools/comp.c: New program to be used to establish variable sizes (a la getsize) for an existing library by examining the old lib*.sa. Mon Mar 8 10:30:10 1993 Eric Youngdale (eric at tantalus) * utils.c: Bump version number to 2.3. * getsize.c: Write all debugging output to stdout. * mkimage.c: Store __jump.* in JUMP_DIR, delete __jump.o when we are through with it. * utils.c (readgbls): Treat '#' as indicating a comment and remove all text on the line that follows the '#'. Quietly ignore lines with just whitespace on them. * mkimage.c: Print warning if JUMP_DIR is not set. * mkstubs.c: Likewise. * getsize.c: Likewise. * jumpas.c: Likewise. * jumpas.c (readfile): Increase size of buffer to 16384. * fixassy.c: Increase size of buffer to 16384. * README.tr: Reserve space for InterViews in table. Wed Mar 3 10:47:07 1993 Eric Youngdale (eric at tantalus) * Version 2.2 is released. Sun Feb 28 21:13:59 1993 Eric Youngdale (eric at tantalus) * README.tr: Change all references to /usr/bin/jump to /usr/dll/jump. * README.tr: Explicitly mention that type 'A' in jump.import is OK. * README.ps: Regenerate from README.tr. Sat Feb 27 16:12:40 1993 Eric Youngdale (eric at tantalus) * jumpas.c (main): Load jump.import with flag == 2 (means that this is just an nm file, and we do not need the libname or the object file name. * README.tr: Reserve memory in table for libWc and libXp. Fri Feb 26 11:25:20 1993 Eric Youngdale (eric at tantalus) * Version 2.1 released. Thu Feb 25 1:10:38 1993 Eric Youngdale (eric@EricsPC) * fixassy.c (fixup): exit for complicated operands that do not require indirection. These are probably invalid anyhow. * Version 2.1alpha released. * README.tr: New version from Mitch - easier to change version number. Document -G switch. * tools/Makefile: Remove -DDLL from CFLAGS * utils.h: Define DLL. * fixassy.c (fixup): Wrap pushf/popf around addl instructions that we insert. * fixassy.c (fixup): Make REG_SAVE and REG_SAVE2 lcomm, not comm. * fixassy.c (spill): Always restore register before spilling - this is the only way to make sure that the two saved registers are saved in the proper order on the stack. * fixassy.c (fixup): Do not add indirection for complex operands - we are going to dereference it anyway when we simplify things. Wed Feb 24 15:13:09 1993 Eric Youngdale (eric at tantalus) * utils.c: Fix typo in fileno prototype (svr4 only). * utils.h: Do not typedef u_int on ultrix either. Add "uses_stack" field to struct instruction. * fixassy.c (spill): Use stack to save register if uses_stack is 0. Do not increment moved2 unless we use __REG_SAVE2__. * fixassy.c (restore_register): Do nothing if instruction was a pushl. Do a pop if register was saved on the stack, otherwise retrieve value from __REG_SAVE__ * fixassy.c (fixup): Set uses_stack flag if instruction is a push or a pop. Force restore_register if new instruction uses stack, even if same register is to be used for temporary results. (fixup): For pushl instructions, save register on stack. (fixup): Change usereg to (usereg & 0xf) to mask off stack flags. (fixup): Do not push register onto stack until spill has been done in order to get registers saved on the stack in the correct order. (fixup): For pushl instructions, load operand into register and then change instruction to xchg %ebx,(%esp) to swap saved register with info that we wanted to push on the stack. (fixup): If needs_indirection is set, then add instruction to lookup correct operand. If original operand is too complex for the xchg instruction, then lookup the value and substitute this into the xchg instruction. (classify_operands): Set uses_stack if %esp explicitly appears. (cleanup): Clear uses_stack flag. (fixup): Clear reg_contains if this was a pushl instruction. Mon Feb 22 00:42:54 1993 Eric Youngdale (eric@EricsPC) * Version 2.0 released. * Remove libc-linux stuff - this is all in the libc distribution. * Remove stuff in crt directory - this is all in libc. Sun Feb 21 18:42:49 1993 Eric Youngdale (eric@EricsPC) * mkstubs.c, mkimage.c: Allow jumptable and GOT size that is not a multiple of one page if the size is less than one page. Makefile: Install tools in /usr/dll/bin, /usr/dll/jump instead of /usr/bin. Add symlinks as required so that people that expect the tools in /usr/bin/ are not surprised. * jumpas.c: Use GENERATE_SECONDARY_INDEX macro to build internal symbol names that link static symbols with the initializers. Sat Feb 20 19:02:32 1993 Eric Youngdale (eric@EricsPC) * tools/mkstubs.c (in_library): New function. Test and see if a given library is in the list, and remove if present. (main): Use in_library instead of strcmp to test if a given symbol belongs in a given stub library. * doc/README.tr: New version from Mitch DSouza, includes cover page and TOC. Sat Feb 20 00:32:05 1993 H.J. Lu (hlu@nighthawk) * Merge with the C library source tree. Most of them go to libc-linux/jump/src. * Move libc-linux/gcc and libc-linux/compat to the C library source code tree. Move libc-linux/jump to libc-linux/jump/real.libc/old. Remove the rest of libc-linux. * Put modified jump.* in libc-linux/jump/real.libc. There are some new raw files in libc-linux/jump/real.libc/new. * Add "0x" to jump.params. * Fix a few bugs in tools. Thu Feb 18 22:35:32 1993 Eric Youngdale (eric@EricsPC) * doc/Makefile: Pipe output to README.txt, README.dvi as appropriate. * tools/Makefile: Define and use CC, BINDIR for more generality * Makefile.short: Patches from H.J. - this file is now set up for him to build the tools on the Decstation. * fixassy.c, jumpas.c: Use xfree, not free. * fixassy.c: Declare function cleanup as static. * getsize.c, jumpas.c, mkimage.c, mkstubs.c: If not linux or SVr4, add declarations for optind, optarg and getopt (apparently not part of SVr3). * getsize.c, jumpas.c, mkimage.c, mkstubs.c: Do not append '/' to string from getenv, make a copy and append to that instead. jumpas.c: Add PREFIX when calling assembler. Wed Feb 17 00:39:53 1993 Eric Youngdale (eric@EricsPC) * Tools-1.9 release. * README.tr: New file based upon README from Mitch DSouza. This can be turned into postscript, and it looks really sharp. * ld/: Removed - the source code is now in the binutils distribution, so I do not need to carry it here. * crt/__load.c: Fix bug where emacs would not work. We must reset the magic numbers when we are through with dynamic linking. * Added new directories: libc-linux/compat: Compatibility functions used to link libc. libc-linux/gcc: Bare minimum from gcc 2.3.3 to build libgcc.a libc-linux/jump: jump.* files to build libc.so.4.3 Mon Feb 15 11:47:01 1993 Eric Youngdale (eric@EricsPC) * Tools-1.8 released. * fixassy.c (fixup): Allow spills for cmp instructions as well as mov instructions. (spill) likewise, always use movx instruction to transfer data to secondary temporary register. * getsize.c: Declare main as returning void. * mkimage.c, mkstubs.c: Likewise. * utils.c: Initialize goof to 1, in case jump.undef does not exist (will force jump.undef to be written). * fixassy.c: Use xstrdup, not strdup. * jumpas.c (main): Only declare cpnt2 if IMPLIED_IMPORT defined. * mkimage.c (main): Likewise. Wed Feb 10 23:53:31 1993 Eric Youngdale (eric@EricsPC) * utils.c (vfyparams): Read/write version as i.j.k, if k != 0, or simply as i.j if k == 0. * mkimage.c: Use shlib_version for version number to append to shared image. * Makefile: Default case is to use jump.import for now. * ld.c (digest_symbols): Do not print fixup count unless map is selected. (write_fixups): Do not write any messages unless a link map is selected. Tue Feb 9 19:07:44 1993 Eric Youngdale (eric@EricsPC) * pre-tools-1.7.tar.z released. * fixassy.c: Include string.h, not strings.h * getsize.c: If compiling on SVr4, include stdlib.h instead of getopt.h. Add PREFIX in front of as, nm, etc to allow for use of the tools on a non-linux host. * jumpas.c: Likewise. * mkimage.c: Likewise. * mkstubs.c: Likewise. * verify.c: Likewise. * utils.c: Define PREFIX as appropriate to allow for case of a non-linux host. * jumpas.c (getline): Do not add leading tab in front of all labels, not just L*: or _*: types of labels. * jumpas.c (main): When searching for labels, check for all labels, not just L*: or _*: types of labels. * verify.c: Pass nm output from stub libraries through uniq, now that each stub library in a merged library contains the special module to force the linker to load the sharable library. * mkimage.c: Only take a particular symbol to be imported if it is not on the static variable list. (IMPLIED_IMPORT only). Mon Feb 8 20:24:07 1993 Eric Youngdale (eric@EricsPC) * fixassy.c: Treat hexadecimal constant as a number, not a symbol * jumpas.c: When using IMPLIED_IMPORT, do not try and add a fixup for a ".long __GOT_....." type of line. * jumpas.c: Keep track of the start of the fixup table, and do not try and substitute assembly code past that point. * jumpas.c: If there are multiple spaces bewteen the opcode and operands, suck them into the opcode. * (throughout): Do not define gphead if we are using IMPLIED_IMPORT * mkimage.c: Use different rule for rewriting .long directives with IMPLIED_IMPORT. * jumpas: Likewise. Fri Feb 5 22:05:08 1993 Eric Youngdale (eric@EricsPC) * Release 1.6. * ld.c: Look for cases where we have multiple definitions of the __GOT__foo symbol, but no matching _foo symbol in the symbol tables. This comes up with shared libraries (the VenRec problem), because a user program does not need this variable usually, so the variable is not in the symbol tables. The __GOT__ entries are. This is a different type of fix than before, because here we must copy a number from one GOT entry to another, while before we were storing a known number into a GOT pointer. * __load.c (__do_fixups): Handle above case. * mkimage.c: Look for .long _foo+3 as well as .long _foo, add a builtin fixup in these cases. * jumpas.c: Ditto. * __load.c (__do_fixups): Correctly handle case of: .long _foo+3 by first subtracting _foo before we call __dynamic_resolve, and then adding the (possibly) new value of _foo after we call __dynamic_resolve. * mkstubs.c: Write full GOT/PLT/___lib??? record into all stub libraries. * mkstubs.c: Use minor version number as minor/100, and minor % 100 as the patchlevel. * mkstubs.c: Ditto. * jumpas.c, mkimage.c: Use access macros for filenames for the _GVAR_*.s and _GCMN_*.s files. * utils.h: Define GVAR_FILENAME, GCMN_FILENAME, also allow an alternative filename convention that will only work on extfs or ext2 due to the longer filenames. * mkimage.c: Save library dependencies to the file jump.undefs. (this will eventually be read by mkstubs, but the concept needs work). Fri Feb 5 00:05:08 1993 Eric Youngdale (eric@EricsPC) * Release 1.5. * __load.c (__do_fixups): Initialize variable i to 0, correct typo. * Makefile: Compile __load.c with -Wall. * mkimage: Call nm with "+no-cplus". Wed Feb 3 21:01:34 1993 Eric Youngdale (eric@EricsPC) * Release 1.4. * utils.c(vfyparams): New function. Stores the parameters (text address, version number, jumptable size, etc.) in a file in the JUMP_DIR directory. Initially reads the parameters from the same file and compares the current working parameters to the ones in the file. exit(1) if there is any discrepancy. * mkimage.c, mkstubs.c: call vfyparams(). Add -f option to force vfyparams to accept the parameters, even though they may have changed. * utils.c(readgbls): Check to see if the file is also in the cwd. If it is, then fstat both the JUMP_DIR version and the one in the cwd and compare inode numbers. If this is different, then complain and exit. * mkimage.c: Call `nm libfoo.so.m.n | grep " ___lib"`, and let the output go to the screen. We do this so that the user has an indication that these libraries are required to be loaded for the library to work. * __load.c (__dynamic_resolve, __do_fixups): Complete rewrite - use structure definitions so that the operations make much more sense. Increment the magic number in __dynamic_resolve to ensure that we do not get caught in a loop if there is a circular list of libraries in use. * example/*: Supply editlib library as a very small example of how it all works. Mon Feb 1 08:39:07 1993 Eric Youngdale (eric@EricsPC) * Release 1.3. * crt0.S: Store magic number in first fixup slot. * mkimage.c: Store magic number in first fixup slot. * __load.c(__dynamic_resolve): Check for magic number in first fixup slot - blow chow if not present. * __load.c(__dynamic_resolve): Reverse order in which fixups are applied. Start at end of list and work backward. I think this is correct - we will end up applying fixups to libc first, and then work outward until we get to the fixup table for the user's program. We should end up with all of the fixups to the jump table and the __GOT__ applied correctly in this way. The builtin_fixups do not get applied until after all of the regular fixups are done, because we need to wait for all of the __GOT__ pointers to be valid before we start this. * getsize.c: Use gpnt->type instead of type coming back from nm command. Sun Jan 31 20:39:08 1993 Eric Youngdale (eric@EricsPC) * Release 1.2. * fixassy.c: Verify that the target to a call instruction is a symbol that is not listed in jump.vars * mkimage.c: Verify that all symbols defined within each _GVAR/_GCMN data file consists entirely of pseudo-ops (i.e. no machine instructions). * utils.c: Add new argument for readgbls - a string that contains the legal symbol types for the file being read in. Change throughout all programs to fix all calls to readgbls().