******************************************************************************* * PLEASE: If you have any bug reports, suggestions, or comments regarding * * the ALN LINKER, please send them to: * * * * Atari Jaguar Developer Support: * * * * Mike Fulton, Tel: +1 (408)745-8821, Compuserve: 75300,1141 * * Normen B. Kowalewski, Tel: +1 (408)745-2127, Compuserve: 75300,3444 * * Scott Sanders, Tel: +1 (408)745-2143, Compuserve: 70007,1135 * * Fax: +1-408 745-2088 * * BBS: +1 408 745-2157 * * * * Brainstorm: * * * * Fax: +331-44670811 (France) * * BBS: +331-44670844 (France) * * Email: Internet: alex@brasil.frmug.fr.net * * or Compuserve: 76004,1616 * ******************************************************************************* Please note that the file ADDENDUM.ALN has been merged into ALN.TXT so there is now just a single file. ******************************************************************************* ALN Feature Additions/Changes (since version 1.11) -------------------------------------------------- ALN now takes 68K BSD object files (like those output by GCC). (MADMAC needs -fb option in order to output BSD object files). This allows input of symbols of any length. It also outputs COFF encapsulated BSD programs (only in absolute). This allows output of symbols of any length, source level and other things. It understands DBX source-level informations optionally generated by MADMAC (with the -g option) and GCC (with the -g option). THIS ONLY WORKS with BSD OBJECTS! So you must use the -fb option with MADMAC. ALN can also use SYMDEFed BSD libraries, like those created with: ar cs New Command Line Switches ------------------------- -? Prints usage. -e Output COFF encapsulated BSD programs (only in absolute). -g Output source-level (if present in input object files). -ii Same as -i without truncating symbols to 8 characters. -n# where n is {2,4,8}. This outputs EPROM files *.r0 to *.r(#-1) with byte 0 in .r0, byte 1 in .r1, etc ... -r: Section alignment size. -w: word (2 bytes) -l: long (4 bytes) -p: phrase (8 bytes, default alignment) -d: double phrase (16 bytes) -q: quad phrase (32 bytes) ALN now creates 3 internal variables: _TEXT_E points right after the last byte of TEXT section. _DATA_E points right after the last byte of DATA section. _BSS_E points right after the last byte of BSS section. Common variables are considered part of the BSS section for _BSS_E. Changes to ALN (Alex Lemaresquier @ Brainstorm, 1993-1995) ------------------------------------------------------------- Main course: * Management of BSD and COFF encapsulated BSD file formats. * Source level handled with DBX stabs. 10-may-1995 ----------- + COFF output now doesn't generate global symbols if -s is not specified. 08-may-1995 (Bad day) ----------- + Relocate N_STSYM and N_LCSYM. 03-may-1995 ----------- - DOS: removed '-m486' compile option for 386 users. 31-mar-1995 ----------- + DOS: GO32 release 1.12m3 is now used as DOS extender. Was crashing under Windows NT and probably Windows 95. Reported and fixed by Brian McGroarty @ High Voltage Software. 17-mar-1995 ----------- + Handle new BSD archive format (!). This is used by the DOS/Linux versions of AR. 15-feb-1995 ----------- + Moved printing of output file name after all arguments parsing (including command file parsing). One can have the old behaviour with -v -v. Requested by Dan @ Rebellion. + Removed 256 arguments limit in command files. ORIGINAL. Requested by Dan @ Rebellion. - Fixed missing implicit option settings when using -C or -I: -s implied by -l, -p implied by -q. ORIGINAL. 22-jan-1995 ----------- = Nothing else than being compiled with GCC 2.6.3 with -O3. 21-oct-1994 ----------- - Fixed a pb when partial linking (-p) with include file (-i or -ii). Since the internal format became BSD (because of -ii option),the output DRI file was not reliable. Now fixed. And, for the moment, it is not possible to use -p with -e. In the future, it will output BSD object file. - Fixed a pb when the # of symbols in the output file was > 32767. ORIGINAL. Thanks to Daniel @ ATD. 22-sep-1994 ----------- - Fixed a bug if there was no argument to '-h' option. ORIGINAL. 21-sep-1994 ----------- - Warn on 16-bit fixup overflow only if > 65535. (wish of Robert Dibley @ Rebellion Software). 8-sep-1994 ---------- - _TEXT_E,_DATA_E,_BSS_E were reexported if the link involved a library. - Dependencies in BSD libraries with names longer than 8 cars were not found. 29-aug-1994 ----------- + Added 3 internal variables: _TEXT_E points right after the last byte of TEXT section. _DATA_E points right after the last byte of DATA section. _BSS_E points right after the last byte of BSS section. Common variables are considered part of the BSS section for _BSS_E. 26-aug-1994 ----------- + Changed (again) the way 16-bits and 8-bits overflows are checked (wish of Robert Dibley @ Rebellion Software). Also changed non pc-relative overflow "error" in BSD format to "warning" as in DRI format. 25-aug-1994 ----------- - In some error messages, the line number shown was wrong. + Added -n# option, where n is {2,4,8}. This outputs EPROM files *.r0 to *.r(#-1) with byte 0 in .r0, byte 1 in .r1, etc ... 24-aug-1994 ----------- + If -n option is used together with -e, then -e is simply forgot. 29-jul-1994 (still in holiday ;=(() ----------- + Same as below, enhanced. Source filenames and line numbers are now displayed the same way as in madmac, allowing direct source loading under your editor with the same macro sets. + DOS: '/' are translated to '\' in input filenames. This allows use of '/' in makefiles instead of '\\'. 22-jul-1994 (in holiday ;=() ----------- + Changed the way 16-bits overflow was checked (wish of Robert Dibley @ Rebellion Software). + Enhanced error display when relocating BSD object files. 29-jun-1994 ----------- - Removed a bug that could occur when local/global variable clash happened when not in -b command line option. This happens usually only in DRI format (8 cars max). 27-jun-1994 ----------- - Removed a bug in checking object file consistency. It would only appear when padding with more than a word a DRI object when it was necessary. 15-jun-1994 ----------- + Added BSD library support. For the moment, it only works with __.SYMDEF libraries (it is faster anywway), so you must use 'ar cs ' or run 'ranlib' on libraries that are not __.SYMDEFed. 22-may-1994 ----------- ! Changed the default file extension for COFF executables from .ABS to .COF. If you didn't specified an extension in your makefiles, be careful! You will have to change target names. Same thing for specific scripts. 5-may-1994 ---------- ? Moved gpu/dsp eqr test from ((add>=GPUEQR) && (add<=GPUEQR|31)) to (add&0xffffff80)==GPUEQR. (GPUEQR=0x80000080). Even if I don't understand why. Wish of Robert Dibley @ Rebellion Software. 28-apr-1994 ----------- + Added a new display in case of unresolved symbols. If the '-u' option is activated, the relocation locations are printed during the process, together with source level informations if they are present. So, aln -u .... gives something like: Unresolved symbol: ( in BSD object ) at offset 0X120. Near /mywork/work/work.s:57. 18-apr-1994 ----------- - Bug in this ... BSD format in alignement. I "forgot" that BSD addresses where TEXT absolute (not section relative!). So, data and bss relocations and symbols were improperly aligned. MANY THANKS to ROBERT DIBLEY @ REBELLION SOFTWARE! BTW, default phrase alignement is requested by Atari... - Bug in '-r's parameters recognition (was taking the following one) (Robert, again). + Added a warning when relocating with a GPU/DSP regequ value (Wish from ... guess who?). 26-mar-1994 ----------- + Added '-r' option (as in MADMAC) which sets section alignment. See addendum.aln for syntax. Unlike MADMAC, the default alignment is PHRASE (8 bytes) for backward compatibility (the previous versions of ALN for Jaguar were forcing BSS section size and included file sizes to PHRASE alignment). Therefore, no more "Error: odd-sized TEXT or DATA section; link aborted." and "Warning: DATA section size of xxx.o is not phrase-aligned.". 21-mar-1994 ----------- + Added N_ASLINE stab (0x4c) which is a absolute source line. This is an extension to standard DBX stabs. 10-mar-1994 ----------- - Removed a bug in DRI symbol table check. ! There seem to be problems under PC/DOS if you don't use the -B option. Fixed 29-jun-1994. 26-feb-1994 ----------- - Added '-ii' command line option, same as '-i' but doesn't truncate symbols to 8 cars. 19-feb-1994 ----------- - Fixed a comparison bug in word fixups in BSD format on Atari (thanks to Rebellion Software's bug report - Hi Robert ;=)). - Moved long to unsigned long comparison for symbol name offset in BSD format (should only happen with crashed object files, thanks (again) to Robert). - Fixed a print crash when not enough memory is available for the output COFF file. 1-feb-1994 ----------- - Fixed common BSD labels bug (Thanks again to Loriciel's bug report). 31-jan-1994 ----------- + Common BSD labels are now handled (Thanks to Loriciel's bug report). - DRI output from BSD input is now ok (same as above ^^). 19-jan-1994 ----------- - Bug in name offset for stabs removed. (RDB loads ok, get sources list with 'mlist' command.) 17-jan-1994 ----------- + Source level handling done. Have to test. Use '-g' option to get it. Must be used with '-e' option. Not tested without '-a' option. So you should have in your makefiles something like: For MAC: -g -fb For ALN: -g -l -e -a x -o if you want source level. (RDB doesn't load it yet anyway). ! Careful: symbols generated with '-e' are now BSD! Please use the next RDB version if you want to use it, even without source level. 16-jan-1994 ----------- - No more "unknown BSD symbol type" message (it should be stab!). ? I don't understand how ld performs its xref pc relocation. I couldn't make it work, and MAC and ALN work ok with my code. So it must be a bug in ld's code or something... I don't think gcc generates pc relative external references anyway so it could be kept hidden until now. Anyway, people should ALWAYS use ALN instead of ld. 14-jan-1994 ----------- + Output of COFF seems ok. The file extension is .abs, so you can use 'aread '. But the file is not DRI at all ... RDB loads it now. So now you should have in your makefiles: For MAC: -fb For ALN: -l -e -a x -o With this you can have symbols of any length in link time, and with 23 cars max in RDB (RDB restriction only). For the moment, symbols are DRI (changed on 17-jan-1994 to BSD). 13-jan-1994 ----------- + Output COFF files (no source level yet). Use '-e' switch. (RDB doesn't load it yet anyway: done on 14-jan-1994). 11-jan-1994 ----------- - Cleaned BSD object input. Now seems ok. Works with turtdemo. 6-jan-1994 ----------- - Removed a bug in the dot check in output name (was misinterpreting something like ..\myprog). ORIGINAL. 5-jan-1994 ----------- - Removed a bug that would not make a BSS absolute in a .abs file. It was caused by an extern int reference to a short value. (Don't know when it came). - When an empty line was typed in, its contents wasn't cleared. ORIGINAL. 4-jan-1994 ----------- + Added skipping multiply-defined locals (use -b to avoid it). This was made necessary because of the add of 'aread ' in RDB. One day I will make it more clever (yes it will use more memory :=)). + Now takes BSD object files (Big endian only (Motorola), of course!). 31-dec-1993 ----------- + Added string table management. + Symbols are now COFF-like, can read BSD objects. + Relocation is function ptr'ed. 25-dec-1993 ----------- + Added bsdobj.c.