222 |
|
|
223 |
#if defined(HAVE_LIBBFD) && ! defined(SPECIAL_RSYM) |
#if defined(HAVE_LIBBFD) && ! defined(SPECIAL_RSYM) |
224 |
|
|
225 |
|
static int bfd_update; |
226 |
|
|
227 |
static MY_BFD_BOOLEAN |
static MY_BFD_BOOLEAN |
228 |
bfd_combined_table_update(struct bfd_link_hash_entry *h,PTR ct) { |
bfd_combined_table_update(struct bfd_link_hash_entry *h,PTR ct) { |
229 |
|
|
238 |
return MY_BFD_FALSE; |
return MY_BFD_FALSE; |
239 |
} |
} |
240 |
|
|
241 |
SYM_ADDRESS(combined_table,combined_table.length)=h->u.def.value+h->u.def.section->vma; |
if (bfd_update) { |
242 |
SYM_STRING(combined_table,combined_table.length)=(char *)h->root.string; |
if (combined_table.length>=combined_table.alloc_length) |
243 |
|
FEerror("combined table overflow", 0); |
244 |
|
|
245 |
|
SYM_ADDRESS(combined_table,combined_table.length)=h->u.def.value+h->u.def.section->vma; |
246 |
|
SYM_STRING(combined_table,combined_table.length)=(char *)h->root.string; |
247 |
|
} |
248 |
|
|
249 |
combined_table.length++; |
combined_table.length++; |
250 |
|
|
251 |
return MY_BFD_TRUE; |
return MY_BFD_TRUE; |
295 |
#if defined(HAVE_LIBBFD) |
#if defined(HAVE_LIBBFD) |
296 |
if (link_info.hash) { |
if (link_info.hash) { |
297 |
|
|
298 |
if (combined_table.length+link_info.hash->table.size >= |
bfd_update=0; |
299 |
combined_table.alloc_length) |
bfd_link_hash_traverse(link_info.hash, |
300 |
cfuns_to_combined_table(combined_table.length+link_info.hash->table.size+20); |
bfd_combined_table_update,&combined_table); |
301 |
|
|
302 |
|
if (combined_table.length >=combined_table.alloc_length) |
303 |
|
cfuns_to_combined_table(combined_table.length); |
304 |
|
|
305 |
|
bfd_update=1; |
306 |
bfd_link_hash_traverse(link_info.hash, |
bfd_link_hash_traverse(link_info.hash, |
307 |
bfd_combined_table_update,&combined_table); |
bfd_combined_table_update,&combined_table); |
308 |
|
bfd_update=0; |
309 |
|
|
310 |
} |
} |
311 |
#endif |
#endif |