mirror of
https://git.FreeBSD.org/src.git
synced 2024-12-29 12:03:03 +00:00
53 lines
1.8 KiB
Plaintext
53 lines
1.8 KiB
Plaintext
(This file under construction).
|
|
|
|
|
|
The GAS Configuration Plan
|
|
|
|
Theory:
|
|
|
|
The goal of the new configuration scheme is to bury all object format,
|
|
target processor, and host machine dependancies in object, target, and
|
|
host specific files. That is, to move as many #ifdef's as possible
|
|
out of the gas common code.
|
|
|
|
Here's how it works. There is a .h and a .c file for each object file
|
|
format, a .h and a .c file for each target processor, and a .h for
|
|
each host. configure creates {sym}links in the current directory to
|
|
the appropriate files in the config directory.
|
|
|
|
Implementation:
|
|
|
|
host.h is a {sym}link to .../config/ho-yourhost.h. It is intended to
|
|
be used to hide host compiler, system header file, and system library
|
|
differences between host machines. If your host needs actual c source
|
|
files, then either: these are generally useful functions, in which
|
|
case you should probably build a local library outside of the gas
|
|
source tree, or someone, perhaps me, is confused about what is needed
|
|
by different hosts.
|
|
|
|
obj-format.h is a {sym}link to .../config/obj-something.h. It is
|
|
intended to hide object file format differences from the bulk of gas,
|
|
and from most of the cpu backend.
|
|
|
|
All gas .c files include as.h.
|
|
|
|
as.h #define's "gas", includes host.h, defines a number of gas
|
|
specific structures and types, and then includes tp.h, obj.h, and
|
|
target-environment.h.
|
|
|
|
te-something.h defines a target environment specific preprocessor
|
|
flag, eg, TE_SUN, and then includes obj-format.h.
|
|
|
|
obj-format.h defines an object format specific preprocessor flag, eg,
|
|
OBJ_AOUT, OBJ_BOUT, OBJ_COFF, includes "target-processor.h", and then
|
|
defines the object specific macros, functions, types, and structures.
|
|
|
|
target-processor.h
|
|
|
|
target-processor.
|
|
|
|
Porting:
|
|
|
|
There appear to be four major types of ports; new hosts, new target
|
|
processors, new object file formats, and new target environments.
|