OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.3/] [bfd/] [doc/] [aoutx.texi] - Blame information for rev 1773

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1181 sfurman
@section a.out backends
2
 
3
 
4
@strong{Description}@*
5
BFD supports a number of different flavours of a.out format,
6
though the major differences are only the sizes of the
7
structures on disk, and the shape of the relocation
8
information.
9
 
10
The support is split into a basic support file @file{aoutx.h}
11
and other files which derive functions from the base. One
12
derivation file is @file{aoutf1.h} (for a.out flavour 1), and
13
adds to the basic a.out functions support for sun3, sun4, 386
14
and 29k a.out files, to create a target jump vector for a
15
specific target.
16
 
17
This information is further split out into more specific files
18
for each machine, including @file{sunos.c} for sun3 and sun4,
19
@file{newsos3.c} for the Sony NEWS, and @file{demo64.c} for a
20
demonstration of a 64 bit a.out format.
21
 
22
The base file @file{aoutx.h} defines general mechanisms for
23
reading and writing records to and from disk and various
24
other methods which BFD requires. It is included by
25
@file{aout32.c} and @file{aout64.c} to form the names
26
@code{aout_32_swap_exec_header_in}, @code{aout_64_swap_exec_header_in}, etc.
27
 
28
As an example, this is what goes on to make the back end for a
29
sun4, from @file{aout32.c}:
30
 
31
@example
32
       #define ARCH_SIZE 32
33
       #include "aoutx.h"
34
@end example
35
 
36
Which exports names:
37
 
38
@example
39
       ...
40
       aout_32_canonicalize_reloc
41
       aout_32_find_nearest_line
42
       aout_32_get_lineno
43
       aout_32_get_reloc_upper_bound
44
       ...
45
@end example
46
 
47
from @file{sunos.c}:
48
 
49
@example
50
       #define TARGET_NAME "a.out-sunos-big"
51
       #define VECNAME    sunos_big_vec
52
       #include "aoutf1.h"
53
@end example
54
 
55
requires all the names from @file{aout32.c}, and produces the jump vector
56
 
57
@example
58
       sunos_big_vec
59
@end example
60
 
61
The file @file{host-aout.c} is a special case.  It is for a large set
62
of hosts that use ``more or less standard'' a.out files, and
63
for which cross-debugging is not interesting.  It uses the
64
standard 32-bit a.out support routines, but determines the
65
file offsets and addresses of the text, data, and BSS
66
sections, the machine architecture and machine type, and the
67
entry point address, in a host-dependent manner.  Once these
68
values have been determined, generic code is used to handle
69
the  object file.
70
 
71
When porting it to run on a new system, you must supply:
72
 
73
@example
74
        HOST_PAGE_SIZE
75
        HOST_SEGMENT_SIZE
76
        HOST_MACHINE_ARCH       (optional)
77
        HOST_MACHINE_MACHINE    (optional)
78
        HOST_TEXT_START_ADDR
79
        HOST_STACK_END_ADDR
80
@end example
81
 
82
in the file @file{../include/sys/h-@var{XXX}.h} (for your host).  These
83
values, plus the structures and macros defined in @file{a.out.h} on
84
your host system, will produce a BFD target that will access
85
ordinary a.out files on your host. To configure a new machine
86
to use @file{host-aout.c}, specify:
87
 
88
@example
89
       TDEFAULTS = -DDEFAULT_VECTOR=host_aout_big_vec
90
       TDEPFILES= host-aout.o trad-core.o
91
@end example
92
 
93
in the @file{config/@var{XXX}.mt} file, and modify @file{configure.in}
94
to use the
95
@file{@var{XXX}.mt} file (by setting "@code{bfd_target=XXX}") when your
96
configuration is selected.
97
 
98
@subsection Relocations
99
 
100
 
101
@strong{Description}@*
102
The file @file{aoutx.h} provides for both the @emph{standard}
103
and @emph{extended} forms of a.out relocation records.
104
 
105
The standard records contain only an
106
address, a symbol index, and a type field. The extended records
107
(used on 29ks and sparcs) also have a full integer for an
108
addend.
109
 
110
@subsection Internal entry points
111
 
112
 
113
@strong{Description}@*
114
@file{aoutx.h} exports several routines for accessing the
115
contents of an a.out file, which are gathered and exported in
116
turn by various format specific files (eg sunos.c).
117
 
118
@findex aout_@var{size}_swap_exec_header_in
119
@subsubsection @code{aout_@var{size}_swap_exec_header_in}
120
@strong{Synopsis}
121
@example
122
void aout_@var{size}_swap_exec_header_in,
123
   (bfd *abfd,
124
    struct external_exec *raw_bytes,
125
    struct internal_exec *execp);
126
@end example
127
@strong{Description}@*
128
Swap the information in an executable header @var{raw_bytes} taken
129
from a raw byte stream memory image into the internal exec header
130
structure @var{execp}.
131
 
132
@findex aout_@var{size}_swap_exec_header_out
133
@subsubsection @code{aout_@var{size}_swap_exec_header_out}
134
@strong{Synopsis}
135
@example
136
void aout_@var{size}_swap_exec_header_out
137
   (bfd *abfd,
138
    struct internal_exec *execp,
139
    struct external_exec *raw_bytes);
140
@end example
141
@strong{Description}@*
142
Swap the information in an internal exec header structure
143
@var{execp} into the buffer @var{raw_bytes} ready for writing to disk.
144
 
145
@findex aout_@var{size}_some_aout_object_p
146
@subsubsection @code{aout_@var{size}_some_aout_object_p}
147
@strong{Synopsis}
148
@example
149
const bfd_target *aout_@var{size}_some_aout_object_p
150
   (bfd *abfd,
151
    const bfd_target *(*callback_to_real_object_p) ());
152
@end example
153
@strong{Description}@*
154
Some a.out variant thinks that the file open in @var{abfd}
155
checking is an a.out file.  Do some more checking, and set up
156
for access if it really is.  Call back to the calling
157
environment's "finish up" function just before returning, to
158
handle any last-minute setup.
159
 
160
@findex aout_@var{size}_mkobject
161
@subsubsection @code{aout_@var{size}_mkobject}
162
@strong{Synopsis}
163
@example
164
boolean aout_@var{size}_mkobject, (bfd *abfd);
165
@end example
166
@strong{Description}@*
167
Initialize BFD @var{abfd} for use with a.out files.
168
 
169
@findex aout_@var{size}_machine_type
170
@subsubsection @code{aout_@var{size}_machine_type}
171
@strong{Synopsis}
172
@example
173
enum machine_type  aout_@var{size}_machine_type
174
   (enum bfd_architecture arch,
175
    unsigned long machine));
176
@end example
177
@strong{Description}@*
178
Keep track of machine architecture and machine type for
179
a.out's. Return the @code{machine_type} for a particular
180
architecture and machine, or @code{M_UNKNOWN} if that exact architecture
181
and machine can't be represented in a.out format.
182
 
183
If the architecture is understood, machine type 0 (default)
184
is always understood.
185
 
186
@findex aout_@var{size}_set_arch_mach
187
@subsubsection @code{aout_@var{size}_set_arch_mach}
188
@strong{Synopsis}
189
@example
190
boolean aout_@var{size}_set_arch_mach,
191
   (bfd *,
192
    enum bfd_architecture arch,
193
    unsigned long machine));
194
@end example
195
@strong{Description}@*
196
Set the architecture and the machine of the BFD @var{abfd} to the
197
values @var{arch} and @var{machine}.  Verify that @var{abfd}'s format
198
can support the architecture required.
199
 
200
@findex aout_@var{size}_new_section_hook
201
@subsubsection @code{aout_@var{size}_new_section_hook}
202
@strong{Synopsis}
203
@example
204
boolean aout_@var{size}_new_section_hook,
205
   (bfd *abfd,
206
    asection *newsect));
207
@end example
208
@strong{Description}@*
209
Called by the BFD in response to a @code{bfd_make_section}
210
request.
211
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.