2 |
This does not include symbol information, found in sym.h and |
This does not include symbol information, found in sym.h and |
3 |
symconst.h. |
symconst.h. |
4 |
|
|
5 |
Copyright 2001 Free Software Foundation, Inc. |
Copyright 2001, 2002, 2003, 2004 Free Software Foundation, Inc. |
6 |
|
|
7 |
This program is free software; you can redistribute it and/or modify |
This program is free software; you can redistribute it and/or modify |
8 |
it under the terms of the GNU General Public License as published by |
it under the terms of the GNU General Public License as published by |
9 |
the Free Software Foundation; either version 2 of the License, or |
the Free Software Foundation; either version 2 of the License, or |
10 |
(at your option) any later version. |
(at your option) any later version. |
11 |
|
|
12 |
This program is distributed in the hope that it will be useful, |
This program is distributed in the hope that it will be useful, |
13 |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 |
GNU General Public License for more details. |
GNU General Public License for more details. |
16 |
|
|
17 |
You should have received a copy of the GNU General Public License |
You should have received a copy of the GNU General Public License |
18 |
along with this program; if not, write to the Free Software |
along with this program; if not, write to the Free Software |
19 |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ |
20 |
|
|
21 |
#ifndef ECOFF_H |
#ifndef ECOFF_H |
22 |
#define ECOFF_H |
#define ECOFF_H |
23 |
|
|
296 |
fields are also used by the assembler to output ECOFF debugging |
fields are also used by the assembler to output ECOFF debugging |
297 |
information. */ |
information. */ |
298 |
unsigned char *line; |
unsigned char *line; |
299 |
PTR external_dnr; /* struct dnr_ext */ |
void *external_dnr; /* struct dnr_ext */ |
300 |
PTR external_pdr; /* struct pdr_ext */ |
void *external_pdr; /* struct pdr_ext */ |
301 |
PTR external_sym; /* struct sym_ext */ |
void *external_sym; /* struct sym_ext */ |
302 |
PTR external_opt; /* struct opt_ext */ |
void *external_opt; /* struct opt_ext */ |
303 |
union aux_ext *external_aux; |
union aux_ext *external_aux; |
304 |
char *ss; |
char *ss; |
305 |
char *ssext; |
char *ssext; |
306 |
PTR external_fdr; /* struct fdr_ext */ |
void *external_fdr; /* struct fdr_ext */ |
307 |
PTR external_rfd; /* struct rfd_ext */ |
void *external_rfd; /* struct rfd_ext */ |
308 |
PTR external_ext; /* struct ext_ext */ |
void *external_ext; /* struct ext_ext */ |
309 |
|
|
310 |
/* These fields are used when linking. They may disappear at some |
/* These fields are used when linking. They may disappear at some |
311 |
point. */ |
point. */ |
312 |
char *ssext_end; |
char *ssext_end; |
313 |
PTR external_ext_end; |
void *external_ext_end; |
314 |
|
|
315 |
/* When linking, this field holds a mapping from the input FDR |
/* When linking, this field holds a mapping from the input FDR |
316 |
numbers to the output numbers, and is used when writing out the |
numbers to the output numbers, and is used when writing out the |
322 |
this changes in the future. This is a pointer to an array, not a |
this changes in the future. This is a pointer to an array, not a |
323 |
single structure. */ |
single structure. */ |
324 |
FDR *fdr; |
FDR *fdr; |
|
|
|
|
/* When relaxing MIPS embedded PIC code, we may need to adjust |
|
|
symbol values when they are output. This is a linked list of |
|
|
structures indicating how values should be adjusted. There is no |
|
|
requirement that the entries be in any order, or that they not |
|
|
overlap. This field is normally NULL, in which case no |
|
|
adjustments need to be made. */ |
|
|
struct ecoff_value_adjust *adjust; |
|
|
}; |
|
|
|
|
|
/* This structure describes how to adjust symbol values when |
|
|
outputting MIPS embedded PIC code. These adjustments only apply to |
|
|
the internal symbols, as the external symbol values will come from |
|
|
the hash table and have already been adjusted. */ |
|
|
|
|
|
struct ecoff_value_adjust |
|
|
{ |
|
|
/* Next entry on adjustment list. */ |
|
|
struct ecoff_value_adjust *next; |
|
|
/* Starting VMA of adjustment. This is the VMA in the ECOFF file, |
|
|
not the offset from the start of the section. Thus it should |
|
|
indicate a particular section. */ |
|
|
bfd_vma start; |
|
|
/* Ending VMA of adjustment. */ |
|
|
bfd_vma end; |
|
|
/* Adjustment. This should be added to the value of the symbol, or |
|
|
FDR. This is zero for the last entry in the array. */ |
|
|
long adjust; |
|
325 |
}; |
}; |
326 |
|
|
327 |
/* These structures are used by the ECOFF find_nearest_line function. */ |
/* These structures are used by the ECOFF find_nearest_line function. */ |
378 |
bfd_size_type external_rfd_size; |
bfd_size_type external_rfd_size; |
379 |
bfd_size_type external_ext_size; |
bfd_size_type external_ext_size; |
380 |
/* Functions to swap in external symbolic data. */ |
/* Functions to swap in external symbolic data. */ |
381 |
void (*swap_hdr_in) PARAMS ((bfd *, PTR, HDRR *)); |
void (*swap_hdr_in) (bfd *, void *, HDRR *); |
382 |
void (*swap_dnr_in) PARAMS ((bfd *, PTR, DNR *)); |
void (*swap_dnr_in) (bfd *, void *, DNR *); |
383 |
void (*swap_pdr_in) PARAMS ((bfd *, PTR, PDR *)); |
void (*swap_pdr_in) (bfd *, void *, PDR *); |
384 |
void (*swap_sym_in) PARAMS ((bfd *, PTR, SYMR *)); |
void (*swap_sym_in) (bfd *, void *, SYMR *); |
385 |
void (*swap_opt_in) PARAMS ((bfd *, PTR, OPTR *)); |
void (*swap_opt_in) (bfd *, void *, OPTR *); |
386 |
void (*swap_fdr_in) PARAMS ((bfd *, PTR, FDR *)); |
void (*swap_fdr_in) (bfd *, void *, FDR *); |
387 |
void (*swap_rfd_in) PARAMS ((bfd *, PTR, RFDT *)); |
void (*swap_rfd_in) (bfd *, void *, RFDT *); |
388 |
void (*swap_ext_in) PARAMS ((bfd *, PTR, EXTR *)); |
void (*swap_ext_in) (bfd *, void *, EXTR *); |
389 |
void (*swap_tir_in) PARAMS ((int, const struct tir_ext *, TIR *)); |
void (*swap_tir_in) (int, const struct tir_ext *, TIR *); |
390 |
void (*swap_rndx_in) PARAMS ((int, const struct rndx_ext *, RNDXR *)); |
void (*swap_rndx_in) (int, const struct rndx_ext *, RNDXR *); |
391 |
/* Functions to swap out external symbolic data. */ |
/* Functions to swap out external symbolic data. */ |
392 |
void (*swap_hdr_out) PARAMS ((bfd *, const HDRR *, PTR)); |
void (*swap_hdr_out) (bfd *, const HDRR *, void *); |
393 |
void (*swap_dnr_out) PARAMS ((bfd *, const DNR *, PTR)); |
void (*swap_dnr_out) (bfd *, const DNR *, void *); |
394 |
void (*swap_pdr_out) PARAMS ((bfd *, const PDR *, PTR)); |
void (*swap_pdr_out) (bfd *, const PDR *, void *); |
395 |
void (*swap_sym_out) PARAMS ((bfd *, const SYMR *, PTR)); |
void (*swap_sym_out) (bfd *, const SYMR *, void *); |
396 |
void (*swap_opt_out) PARAMS ((bfd *, const OPTR *, PTR)); |
void (*swap_opt_out) (bfd *, const OPTR *, void *); |
397 |
void (*swap_fdr_out) PARAMS ((bfd *, const FDR *, PTR)); |
void (*swap_fdr_out) (bfd *, const FDR *, void *); |
398 |
void (*swap_rfd_out) PARAMS ((bfd *, const RFDT *, PTR)); |
void (*swap_rfd_out) (bfd *, const RFDT *, void *); |
399 |
void (*swap_ext_out) PARAMS ((bfd *, const EXTR *, PTR)); |
void (*swap_ext_out) (bfd *, const EXTR *, void *); |
400 |
void (*swap_tir_out) PARAMS ((int, const TIR *, struct tir_ext *)); |
void (*swap_tir_out) (int, const TIR *, struct tir_ext *); |
401 |
void (*swap_rndx_out) PARAMS ((int, const RNDXR *, struct rndx_ext *)); |
void (*swap_rndx_out) (int, const RNDXR *, struct rndx_ext *); |
402 |
/* Function to read symbol data and set up pointers in |
/* Function to read symbol data and set up pointers in |
403 |
ecoff_debug_info structure. The section argument is used for |
ecoff_debug_info structure. The section argument is used for |
404 |
ELF, not straight ECOFF. */ |
ELF, not straight ECOFF. */ |
405 |
boolean (*read_debug_info) PARAMS ((bfd *, asection *, |
bfd_boolean (*read_debug_info) (bfd *, asection *, struct ecoff_debug_info *); |
|
struct ecoff_debug_info *)); |
|
406 |
}; |
}; |
407 |
|
|
408 |
#endif /* ! defined (ECOFF_H) */ |
#endif /* ! defined (ECOFF_H) */ |