Merge from vendor branch TNFTP:
[dragonfly.git] / contrib / gdb-6.2.1 / bfd / ticoff.h
1 /* Copyright 2002 Free Software Foundation, Inc.
2
3    This file is part of BFD, the Binary File Descriptor library.
4
5    This program is free software; you can redistribute it and/or modify
6    it under the terms of the GNU General Public License as published by
7    the Free Software Foundation; either version 2 of the License, or
8    (at your option) any later version.
9
10    This program is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13    GNU General Public License for more details.
14
15    You should have received a copy of the GNU General Public License
16    along with this program; if not, write to the Free Software
17    Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
18
19 #undef  F_LSYMS
20 #define F_LSYMS         F_LSYMS_TICOFF
21
22 static bfd_boolean
23 ticoff0_bad_format_hook (abfd, filehdr)
24      bfd *abfd;
25      PTR filehdr;
26 {
27   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
28
29   if (COFF0_BADMAG (*internal_f))
30     return FALSE;
31
32   return TRUE;
33 }
34
35 static bfd_boolean
36 ticoff1_bad_format_hook (abfd, filehdr)
37      bfd *abfd ATTRIBUTE_UNUSED;
38      PTR filehdr;
39 {
40   struct internal_filehdr *internal_f = (struct internal_filehdr *) filehdr;
41
42   if (COFF1_BADMAG (*internal_f))
43     return FALSE;
44
45   return TRUE;
46 }
47
48 /* Replace the stock _bfd_coff_is_local_label_name
49    to recognize TI COFF local labels.  */
50 static bfd_boolean 
51 ticoff_bfd_is_local_label_name (abfd, name)
52   bfd *abfd ATTRIBUTE_UNUSED;
53   const char *name;
54 {
55   if (TICOFF_LOCAL_LABEL_P(name))
56     return TRUE;
57   return FALSE;
58 }
59
60 #define coff_bfd_is_local_label_name ticoff_bfd_is_local_label_name
61
62 /* Customize coffcode.h; the default coff_ functions are set up to use COFF2; 
63    coff_bad_format_hook uses BADMAG, so set that for COFF2.  The COFF1
64    and COFF0 vectors use custom _bad_format_hook procs instead of setting
65    BADMAG.  */ 
66 #define BADMAG(x) COFF2_BADMAG(x)
67 #include "coffcode.h"
68
69 /* COFF0 differs in file/section header size and relocation entry size.  */
70 static const bfd_coff_backend_data ticoff0_swap_table = 
71 {
72   coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
73   coff_SWAP_aux_out, coff_SWAP_sym_out,
74   coff_SWAP_lineno_out, coff_SWAP_reloc_out,
75   coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out,
76   coff_SWAP_scnhdr_out,
77   FILHSZ_V0, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ_V0, LINESZ, FILNMLEN,
78 #ifdef COFF_LONG_FILENAMES
79   TRUE,
80 #else
81   FALSE,
82 #endif
83 #ifdef COFF_LONG_SECTION_NAMES
84   TRUE,
85 #else
86   FALSE,
87 #endif
88   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
89   coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
90   coff_SWAP_reloc_in, ticoff0_bad_format_hook, coff_set_arch_mach_hook,
91   coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
92   coff_slurp_symbol_table, symname_in_debug_hook, coff_pointerize_aux_hook,
93   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
94   coff_classify_symbol, coff_compute_section_file_positions,
95   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
96   coff_adjust_symndx, coff_link_add_one_symbol,
97   coff_link_output_has_begun, coff_final_link_postscript
98 };
99
100 /* COFF1 differs in section header size.  */
101 static const bfd_coff_backend_data ticoff1_swap_table = 
102 {
103   coff_SWAP_aux_in, coff_SWAP_sym_in, coff_SWAP_lineno_in,
104   coff_SWAP_aux_out, coff_SWAP_sym_out,
105   coff_SWAP_lineno_out, coff_SWAP_reloc_out,
106   coff_SWAP_filehdr_out, coff_SWAP_aouthdr_out,
107   coff_SWAP_scnhdr_out,
108   FILHSZ, AOUTSZ, SCNHSZ_V01, SYMESZ, AUXESZ, RELSZ, LINESZ, FILNMLEN,
109 #ifdef COFF_LONG_FILENAMES
110   TRUE,
111 #else
112   FALSE,
113 #endif
114 #ifdef COFF_LONG_SECTION_NAMES
115   TRUE,
116 #else
117   FALSE,
118 #endif
119   COFF_DEFAULT_SECTION_ALIGNMENT_POWER,
120   coff_SWAP_filehdr_in, coff_SWAP_aouthdr_in, coff_SWAP_scnhdr_in,
121   coff_SWAP_reloc_in, ticoff1_bad_format_hook, coff_set_arch_mach_hook,
122   coff_mkobject_hook, styp_to_sec_flags, coff_set_alignment_hook,
123   coff_slurp_symbol_table, symname_in_debug_hook, coff_pointerize_aux_hook,
124   coff_print_aux, coff_reloc16_extra_cases, coff_reloc16_estimate,
125   coff_classify_symbol, coff_compute_section_file_positions,
126   coff_start_final_link, coff_relocate_section, coff_rtype_to_howto,
127   coff_adjust_symndx, coff_link_add_one_symbol,
128   coff_link_output_has_begun, coff_final_link_postscript
129 };
130