sim: fix spelling typo
[deliverable/binutils-gdb.git] / bfd / coff-aux.c
CommitLineData
252b5132 1/* BFD back-end for Apple M68K COFF A/UX 3.x files.
35ed3f94 2 Copyright 1996, 1997, 2000, 2002, 2005, 2007, 2008, 2011
2b5c217d 3 Free Software Foundation, Inc.
252b5132
RH
4 Written by Richard Henderson <rth@tamu.edu>.
5
cd123cb7 6 This file is part of BFD, the Binary File Descriptor library.
252b5132 7
cd123cb7
NC
8 This program is free software; you can redistribute it and/or modify
9 it under the terms of the GNU General Public License as published by
10 the Free Software Foundation; either version 3 of the License, or
11 (at your option) any later version.
252b5132 12
cd123cb7
NC
13 This program is distributed in the hope that it will be useful,
14 but WITHOUT ANY WARRANTY; without even the implied warranty of
15 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 GNU General Public License for more details.
252b5132 17
cd123cb7
NC
18 You should have received a copy of the GNU General Public License
19 along with this program; if not, write to the Free Software
20 Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
21 MA 02110-1301, USA. */
252b5132
RH
22
23#define TARGET_SYM m68kaux_coff_vec
24#define TARGET_NAME "coff-m68k-aux"
25
26#ifndef TARG_AUX
27#define TARG_AUX
28#endif
29
30#define COFF_LONG_FILENAMES
31
32/* 4k pages */
33#define COFF_PAGE_SIZE 0x1000
34
346ceb11 35/* On AUX, a STYP_NOLOAD|STYP_BSS section is part of a shared library. */
252b5132
RH
36#define BSS_NOLOAD_IS_SHARED_LIBRARY
37
38#define STATIC_RELOCS
39
40#define COFF_COMMON_ADDEND
41
252b5132 42#include "sysdep.h"
3db64b00 43#include "bfd.h"
252b5132 44
b34976b6 45static bfd_boolean coff_m68k_aux_link_add_one_symbol
346ceb11 46 PARAMS ((struct bfd_link_info *, bfd *, const char *, flagword,
b34976b6 47 asection *, bfd_vma, const char *, bfd_boolean, bfd_boolean,
252b5132
RH
48 struct bfd_link_hash_entry **));
49
50#define coff_link_add_one_symbol coff_m68k_aux_link_add_one_symbol
51
2b5c217d
NC
52#ifndef bfd_pe_print_pdata
53#define bfd_pe_print_pdata NULL
54#endif
55
252b5132
RH
56#include "coff/aux-coff.h" /* override coff/internal.h and coff/m68k.h */
57#include "coff-m68k.c"
58
59/* We need non-absolute symbols to override absolute symbols. This
60 mirrors Apple's "solution" to let a static library symbol override
61 a shared library symbol. On the whole not a good thing, given how
62 shared libraries work here, but can work if you are careful with
346ceb11 63 what you include in the shared object. */
252b5132 64
b34976b6 65static bfd_boolean
252b5132
RH
66coff_m68k_aux_link_add_one_symbol (info, abfd, name, flags, section, value,
67 string, copy, collect, hashp)
68 struct bfd_link_info *info;
69 bfd *abfd;
70 const char *name;
71 flagword flags;
72 asection *section;
73 bfd_vma value;
74 const char *string;
b34976b6
AM
75 bfd_boolean copy;
76 bfd_boolean collect;
252b5132
RH
77 struct bfd_link_hash_entry **hashp;
78{
79 struct bfd_link_hash_entry *h;
80
81 if ((flags & (BSF_WARNING | BSF_CONSTRUCTOR | BSF_WEAK)) == 0 &&
82 !bfd_is_und_section (section) &&
83 !bfd_is_com_section (section))
84 {
85 /* The new symbol is a definition or an indirect definition */
86
87 /* This bit copied from linker.c */
88 if (hashp != NULL && *hashp != NULL)
89 {
90 h = *hashp;
91 BFD_ASSERT (strcmp (h->root.string, name) == 0);
92 }
93 else
94 {
b34976b6 95 h = bfd_link_hash_lookup (info->hash, name, TRUE, copy, FALSE);
252b5132
RH
96 if (h == NULL)
97 {
98 if (hashp != NULL)
99 *hashp = NULL;
b34976b6 100 return FALSE;
252b5132
RH
101 }
102 }
103
104 if (info->notice_hash != (struct bfd_hash_table *) NULL
b34976b6 105 && (bfd_hash_lookup (info->notice_hash, name, FALSE, FALSE)
252b5132
RH
106 != (struct bfd_hash_entry *) NULL))
107 {
16d96b5b
AM
108 if (! (*info->callbacks->notice) (info, h, abfd, section, value,
109 flags, string))
b34976b6 110 return FALSE;
252b5132
RH
111 }
112
113 if (hashp != (struct bfd_link_hash_entry **) NULL)
114 *hashp = h;
115 /* end duplication from linker.c */
116
117 if (h->type == bfd_link_hash_defined
118 || h->type == bfd_link_hash_indirect)
119 {
120 asection *msec;
121
122 if (h->type == bfd_link_hash_defined)
123 msec = h->u.def.section;
124 else
125 msec = bfd_ind_section_ptr;
126
127 if (bfd_is_abs_section (msec) && !bfd_is_abs_section (section))
128 {
129 h->u.def.section = section;
130 h->u.def.value = value;
b34976b6 131 return TRUE;
252b5132
RH
132 }
133 else if (bfd_is_abs_section (section) && !bfd_is_abs_section (msec))
b34976b6 134 return TRUE;
252b5132
RH
135 }
136 }
137
138 /* If we didn't exit early, finish processing in the generic routine */
139 return _bfd_generic_link_add_one_symbol (info, abfd, name, flags, section,
140 value, string, copy, collect,
141 hashp);
142}
This page took 0.603698 seconds and 4 git commands to generate.