| 1 | The coff patches intend to do the following : |
| 2 | |
| 3 | . Generate coff files very compatible with vanilla linker. |
| 4 | . Understands coff debug directives. |
| 5 | |
| 6 | Here are the guidelines of the work I have done : |
| 7 | |
| 8 | . Encapsulate format dependent code in macros where it is possible. |
| 9 | . Where not possible differenciate with #ifdef |
| 10 | . try not to change the calling conventions of the existing functions. |
| 11 | I made one exception : symbol_new. I would be pleased to hear about |
| 12 | a better solution. (symbols.c) |
| 13 | . Extend the use of N_TYPE_seg seg_N_TYPE tables so that segments can |
| 14 | be manipulated without using their format dependent name. (subsegs.c) |
| 15 | . Write a function to parse the .def debug directives |
| 16 | . Write two small peaces of code to handle the .ln directive. |
| 17 | . In write.c try to move all the cross compilation specifics (md_..) to |
| 18 | format dependent files. |
| 19 | . Encapsulate the data structures using generic types, macros calls. |
| 20 | . Added too much code to resolve the complexity of the symbol table |
| 21 | generated. Most of the code deals with debug stuff. |
| 22 | . Create another makefile, shorter, cleaner. |
| 23 | . Create a config.gas shell script to mimic the gcc,gdb... configuration |
| 24 | mechanism. This reduce the complexity of the makefile. |
| 25 | . Isolate the format dependent code in two files |
| 26 | coff.c coff.h |
| 27 | aout.c aout.h |
| 28 | elf.c elf.h [ Not yet ;-] |
| 29 | . added a little stack management routine for coff in file stack.c |
| 30 | . isolate os specific flags in m- files |
| 31 | |
| 32 | If further development is planed on it is should solve the following problems : |
| 33 | |
| 34 | . Encapsulate DESC & OTHER tests in a macro call. I'm not aware |
| 35 | of their exact semantics. |
| 36 | . Clean up the seg_N_TYPE N_TYPE_seg naming scheme |
| 37 | . Try to remove as much reference to segment dependent names as possible |
| 38 | . Find a cleaner solution for symbol_new. |
| 39 | . Report the modifications on vax, ns32k, sparc machine dependent files. |
| 40 | To acheive this goal, search for \<N_, sy_, symbol_new and symbolS. |
| 41 | . Allow an arbitrary number of segments (spare sections .ctor .dtor .bletch) |
| 42 | . Find a way to extend the debug information without breaking sdb |
| 43 | compatibility. Mainly intended for G++. |
| 44 | . should it do something to generate shared libraries objects ? |
| 45 | |
| 46 | I have tested this code on the following processor/os. gcc-1.37.1 was |
| 47 | used for all the tests. |
| 48 | |
| 49 | 386 SCO unix ODT |
| 50 | gcc-1.37.1, gas, emacs-18.55 |
| 51 | |
| 52 | 386 Esix rev C |
| 53 | gas-1.37/write.s |
| 54 | |
| 55 | 386 Ix 2.02 |
| 56 | gas, all the X11R4 mit clients |
| 57 | |
| 58 | 386 CTIX 3.2 |
| 59 | xsol (X11R4 solitary game), gas |
| 60 | |
| 61 | 68030 unisoft 1.3 |
| 62 | the kernel (V.3.2) + tcp/ip extensions |
| 63 | bash-1.05, bison-1.11, compress-4.0, cproto, shar-3.49, diff-1.14, |
| 64 | dist-18.55, flex-2.3, gas-1.37, gcc-1.37.1, gdb-3.6, grep-1.5, |
| 65 | kermit, make-3.58, makedep, patch, printf, makeinfo, g++-1.37.1, |
| 66 | tar-1.08, texi2roff, uuencode, uutraf-1.2, libg++-1.37.2, groff-0.5 |
| 67 | |
| 68 | 68020 sunos 3.5 (no, not coff, just to be sure that I didn't |
| 69 | introduce errors) |
| 70 | gcc-1.37.1, gas, emacs-18.55, gdb-3.6, bison-1.11, diff-1.14, |
| 71 | make-3.58, tar-1.08 |
| 72 | |
| 73 | 68030 sunos 4.0.3 (idem) |
| 74 | gas |
| 75 | |
| 76 | I would be glad to hear about new experiences |
| 77 | |
| 78 | Loic (loic@adesign.uucp or loic@afp.uucp) |
| 79 | |