aboutsummaryrefslogtreecommitdiff
path: root/gas/NOTES
blob: dd3501eb32ece25a9df6284dd74ab9ec25f733b0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
-*- text -*-

PORTING:

Sorry, no description of the interfaces is written up yet.  Look at existing
back ends and work from there.

New hosts: If your host system has a strange header file setup, create a
config/ho-foo.h file for it and include the appropriate header files or
definitions there.  If your host has a broken compiler, or some broken macros
in header files, create a host-specific file and repair the damage there.
(See, for example, ho-rs6000.h.  The "assert" macro on that system doesn't work
right, and a flag is set to rewrite an expression in tc-m68k.c that the native
compiler mis-compiles.)

New target formats: Look at the BFD_ASSEMBLER code.  The a.out code might be a
fair example.  There are no "good" examples yet, unfortunately, nor any good
documentation of the changes.

New target processors: Check first to see if the BFD_ASSEMBLER interface is
supported by the file format code you need to use.

New environments: ???

DOCUMENTATION:

The internals of gas need documenting.  (Actually, there is some documentation
in doc/as.texinfo, but it's *way* out of date.)

The documentation should also contain a "Trouble" section similar to gcc's
manual: real bugs, common problems, incompatibilities, etc.

Anyone want to offer to maintain a man page?

BFD CONVERSION:

The "#ifdef BFD_ASSEMBLER" code is on its way in; the "#ifndef BFD_ASSEMBLER"
code is on its way out.  The new code uses BFD data structures, and calls BFD
for anything that needs to be written to the output file.  The old code did all
the writing itself, or in a couple of cases, used BFD as a slightly higher
level than stdio (i.e., bfd_seek, bfd_write -- these are not the preferred
interface).

Because of this, some of this code is messy.  Lots of ifdef's, and the
non-BFD_ASSEMBLER version often has multiple conditional tests inside it for
various processors or formats.  As the various targets get converted over,
these will gradually go away.

As of the moment I'm editing this file, only the "sun4" and "decstation-bsd"
targets can really use the BFD code.  Other back ends still need merging or
touching up.

TO DO:

Remove DONTDEF code, commented-out code.

Eliminate, as much as possible, anything not in config that is conditionalized
on a CPU, format, or environment.

Finish conversion to using BFD for all object file writing.  (This is the
BFD_ASSEMBLER code, not BFD or BFD_HEADERS.)  VMS might be the tough one here,
since there's no BFD support for it at all yet.  Eliminate the old code.

Fix lots of uses of empty strings to use null pointers.  Will improve
efficiency, and should make code clearer too.

Clean up comments; lots of 'em are one previous maintainer griping about
another previous maintainer, unrelated to the code.  (And with no names,
they're not so fun to read. :-)

Lots of documentation.

Get Steve to document H8/500 stuff.

Put together a test suite, using DejaGnu.

(From old "NOTES" file to-do list, not really reviewed:)

fix relocation types for i860, perhaps by adding a ref pointer to fixS?

remove the ifdef's from fx_callj tests?

space tighten sparc alignment?

md_ => tc_

share b.out with a.out.