OLD | NEW |
1 /* VxWorks support for ELF | 1 /* VxWorks support for ELF |
2 Copyright 2005, 2006, 2007, 2009 Free Software Foundation, Inc. | 2 Copyright 2005, 2006, 2007, 2009, 2012 Free Software Foundation, Inc. |
3 | 3 |
4 This file is part of BFD, the Binary File Descriptor library. | 4 This file is part of BFD, the Binary File Descriptor library. |
5 | 5 |
6 This program is free software; you can redistribute it and/or modify | 6 This program is free software; you can redistribute it and/or modify |
7 it under the terms of the GNU General Public License as published by | 7 it under the terms of the GNU General Public License as published by |
8 the Free Software Foundation; either version 3 of the License, or | 8 the Free Software Foundation; either version 3 of the License, or |
9 (at your option) any later version. | 9 (at your option) any later version. |
10 | 10 |
11 This program is distributed in the hope that it will be useful, | 11 This program is distributed in the hope that it will be useful, |
12 but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 but WITHOUT ANY WARRANTY; without even the implied warranty of |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
84 { | 84 { |
85 struct elf_link_hash_table *htab; | 85 struct elf_link_hash_table *htab; |
86 const struct elf_backend_data *bed; | 86 const struct elf_backend_data *bed; |
87 asection *s; | 87 asection *s; |
88 | 88 |
89 htab = elf_hash_table (info); | 89 htab = elf_hash_table (info); |
90 bed = get_elf_backend_data (dynobj); | 90 bed = get_elf_backend_data (dynobj); |
91 | 91 |
92 if (!info->shared) | 92 if (!info->shared) |
93 { | 93 { |
94 s = bfd_make_section_with_flags (dynobj, | 94 s = bfd_make_section_anyway_with_flags (dynobj, |
95 » » » » bed->default_use_rela_p | 95 » » » » » bed->default_use_rela_p |
96 » » » » ? ".rela.plt.unloaded" | 96 » » » » » ? ".rela.plt.unloaded" |
97 » » » » : ".rel.plt.unloaded", | 97 » » » » » : ".rel.plt.unloaded", |
98 » » » » SEC_HAS_CONTENTS | SEC_IN_MEMORY | 98 » » » » » SEC_HAS_CONTENTS | SEC_IN_MEMORY |
99 » » » » | SEC_READONLY | SEC_LINKER_CREATED); | 99 » » » » » | SEC_READONLY |
| 100 » » » » » | SEC_LINKER_CREATED); |
100 if (s == NULL | 101 if (s == NULL |
101 || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align)) | 102 || !bfd_set_section_alignment (dynobj, s, bed->s->log_file_align)) |
102 return FALSE; | 103 return FALSE; |
103 | 104 |
104 *srelplt2_out = s; | 105 *srelplt2_out = s; |
105 } | 106 } |
106 | 107 |
107 /* Mark the GOT and PLT symbols as having relocations; they might | 108 /* Mark the GOT and PLT symbols as having relocations; they might |
108 not, but we won't know for sure until we build the GOT in | 109 not, but we won't know for sure until we build the GOT in |
109 finish_dynamic_symbol. Also make sure that the GOT symbol | 110 finish_dynamic_symbol. Also make sure that the GOT symbol |
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 break; | 274 break; |
274 | 275 |
275 case DT_VX_WRS_TLS_DATA_SIZE: | 276 case DT_VX_WRS_TLS_DATA_SIZE: |
276 sec = bfd_get_section_by_name (output_bfd, ".tls_data"); | 277 sec = bfd_get_section_by_name (output_bfd, ".tls_data"); |
277 dyn->d_un.d_val = sec->size; | 278 dyn->d_un.d_val = sec->size; |
278 break; | 279 break; |
279 | 280 |
280 case DT_VX_WRS_TLS_DATA_ALIGN: | 281 case DT_VX_WRS_TLS_DATA_ALIGN: |
281 sec = bfd_get_section_by_name (output_bfd, ".tls_data"); | 282 sec = bfd_get_section_by_name (output_bfd, ".tls_data"); |
282 dyn->d_un.d_val | 283 dyn->d_un.d_val |
283 » = (bfd_size_type)1 << bfd_get_section_alignment (abfd, sec); | 284 » = (bfd_size_type)1 << bfd_get_section_alignment (output_bfd, |
| 285 » » » » » » » sec); |
284 break; | 286 break; |
285 | 287 |
286 case DT_VX_WRS_TLS_VARS_START: | 288 case DT_VX_WRS_TLS_VARS_START: |
287 sec = bfd_get_section_by_name (output_bfd, ".tls_vars"); | 289 sec = bfd_get_section_by_name (output_bfd, ".tls_vars"); |
288 dyn->d_un.d_ptr = sec->vma; | 290 dyn->d_un.d_ptr = sec->vma; |
289 break; | 291 break; |
290 | 292 |
291 case DT_VX_WRS_TLS_VARS_SIZE: | 293 case DT_VX_WRS_TLS_VARS_SIZE: |
292 sec = bfd_get_section_by_name (output_bfd, ".tls_vars"); | 294 sec = bfd_get_section_by_name (output_bfd, ".tls_vars"); |
293 dyn->d_un.d_val = sec->size; | 295 dyn->d_un.d_val = sec->size; |
294 break; | 296 break; |
295 } | 297 } |
296 return TRUE; | 298 return TRUE; |
297 } | 299 } |
298 | 300 |
299 | 301 |
OLD | NEW |