OLD | NEW |
1 /* IA-64 support for 64-bit ELF | 1 /* IA-64 support for 64-bit ELF |
2 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, | 2 Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, |
3 2008, 2009, 2010, 2011 Free Software Foundation, Inc. | 3 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc. |
4 Contributed by David Mosberger-Tang <davidm@hpl.hp.com> | 4 Contributed by David Mosberger-Tang <davidm@hpl.hp.com> |
5 | 5 |
6 This file is part of BFD, the Binary File Descriptor library. | 6 This file is part of BFD, the Binary File Descriptor library. |
7 | 7 |
8 This program is free software; you can redistribute it and/or modify | 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 | 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 | 10 the Free Software Foundation; either version 3 of the License, or |
11 (at your option) any later version. | 11 (at your option) any later version. |
12 | 12 |
13 This program is distributed in the hope that it will be useful, | 13 This program is distributed in the hope that it will be useful, |
(...skipping 20 matching lines...) Expand all Loading... |
34 #define ARCH_SIZE NN | 34 #define ARCH_SIZE NN |
35 | 35 |
36 #if ARCH_SIZE == 64 | 36 #if ARCH_SIZE == 64 |
37 #define LOG_SECTION_ALIGN 3 | 37 #define LOG_SECTION_ALIGN 3 |
38 #endif | 38 #endif |
39 | 39 |
40 #if ARCH_SIZE == 32 | 40 #if ARCH_SIZE == 32 |
41 #define LOG_SECTION_ALIGN 2 | 41 #define LOG_SECTION_ALIGN 2 |
42 #endif | 42 #endif |
43 | 43 |
44 /* Only add code for vms when the vms target is enabled. This is required | |
45 because it depends on vms-lib.c for its archive format and we don't want | |
46 to compile that code if it is not used. */ | |
47 #if ARCH_SIZE == 64 && \ | |
48 (defined (HAVE_bfd_elf64_ia64_vms_vec) || defined (HAVE_all_vecs)) | |
49 #define INCLUDE_IA64_VMS | |
50 #endif | |
51 | |
52 typedef struct bfd_hash_entry *(*new_hash_entry_func) | 44 typedef struct bfd_hash_entry *(*new_hash_entry_func) |
53 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); | 45 (struct bfd_hash_entry *, struct bfd_hash_table *, const char *); |
54 | 46 |
55 /* In dynamically (linker-) created sections, we generally need to keep track | 47 /* In dynamically (linker-) created sections, we generally need to keep track |
56 of the place a symbol or expression got allocated to. This is done via hash | 48 of the place a symbol or expression got allocated to. This is done via hash |
57 tables that store entries of the following type. */ | 49 tables that store entries of the following type. */ |
58 | 50 |
59 struct elfNN_ia64_dyn_sym_info | 51 struct elfNN_ia64_dyn_sym_info |
60 { | 52 { |
61 /* The addend for which this entry is relevant. */ | 53 /* The addend for which this entry is relevant. */ |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_info | 171 static struct elfNN_ia64_dyn_sym_info * get_dyn_sym_info |
180 (struct elfNN_ia64_link_hash_table *ia64_info, | 172 (struct elfNN_ia64_link_hash_table *ia64_info, |
181 struct elf_link_hash_entry *h, | 173 struct elf_link_hash_entry *h, |
182 bfd *abfd, const Elf_Internal_Rela *rel, bfd_boolean create); | 174 bfd *abfd, const Elf_Internal_Rela *rel, bfd_boolean create); |
183 static bfd_boolean elfNN_ia64_dynamic_symbol_p | 175 static bfd_boolean elfNN_ia64_dynamic_symbol_p |
184 (struct elf_link_hash_entry *h, struct bfd_link_info *info, int); | 176 (struct elf_link_hash_entry *h, struct bfd_link_info *info, int); |
185 static bfd_boolean elfNN_ia64_choose_gp | 177 static bfd_boolean elfNN_ia64_choose_gp |
186 (bfd *abfd, struct bfd_link_info *info, bfd_boolean final); | 178 (bfd *abfd, struct bfd_link_info *info, bfd_boolean final); |
187 static void elfNN_ia64_dyn_sym_traverse | 179 static void elfNN_ia64_dyn_sym_traverse |
188 (struct elfNN_ia64_link_hash_table *ia64_info, | 180 (struct elfNN_ia64_link_hash_table *ia64_info, |
189 bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, PTR), | 181 bfd_boolean (*func) (struct elfNN_ia64_dyn_sym_info *, void *), |
190 PTR info); | 182 void * info); |
191 static bfd_boolean allocate_global_data_got | 183 static bfd_boolean allocate_global_data_got |
192 (struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data); | 184 (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data); |
193 static bfd_boolean allocate_global_fptr_got | 185 static bfd_boolean allocate_global_fptr_got |
194 (struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data); | 186 (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data); |
195 static bfd_boolean allocate_local_got | 187 static bfd_boolean allocate_local_got |
196 (struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data); | 188 (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data); |
197 static bfd_boolean elfNN_ia64_hpux_vec | 189 static bfd_boolean elfNN_ia64_hpux_vec |
198 (const bfd_target *vec); | 190 (const bfd_target *vec); |
199 static bfd_boolean allocate_dynrel_entries | 191 static bfd_boolean allocate_dynrel_entries |
200 (struct elfNN_ia64_dyn_sym_info *dyn_i, PTR data); | 192 (struct elfNN_ia64_dyn_sym_info *dyn_i, void * data); |
201 static asection *get_pltoff | 193 static asection *get_pltoff |
202 (bfd *abfd, struct bfd_link_info *info, | 194 (bfd *abfd, struct bfd_link_info *info, |
203 struct elfNN_ia64_link_hash_table *ia64_info); | 195 struct elfNN_ia64_link_hash_table *ia64_info); |
204 | 196 |
205 | 197 |
206 /* ia64-specific relocation. */ | 198 /* ia64-specific relocation. */ |
207 | 199 |
208 /* Given a ELF reloc, return the matching HOWTO structure. */ | 200 /* Given a ELF reloc, return the matching HOWTO structure. */ |
209 | 201 |
210 static void | 202 static void |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
520 continue; | 512 continue; |
521 | 513 |
522 else | 514 else |
523 { | 515 { |
524 /* We can't do anything with undefined symbols. */ | 516 /* We can't do anything with undefined symbols. */ |
525 if (h->root.type == bfd_link_hash_undefined | 517 if (h->root.type == bfd_link_hash_undefined |
526 || h->root.type == bfd_link_hash_undefweak) | 518 || h->root.type == bfd_link_hash_undefweak) |
527 continue; | 519 continue; |
528 | 520 |
529 tsec = h->root.u.def.section; | 521 tsec = h->root.u.def.section; |
error: old chunk mismatch |
None
OLD | NEW |