46c61cda90938e10fd1cacf841e56a64b481b14a
[dragonfly.git] / gnu / usr.bin / as / README.coff
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