| 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 |