Index: bfd/elf32-bfin.c |
diff --git a/bfd/elf32-bfin.c b/bfd/elf32-bfin.c |
index f88e5d49919367fbe22b4a74e62611c58dbaa665..61734332a7c274b2073cb897cfa845b468760dc6 100644 |
--- a/bfd/elf32-bfin.c |
+++ b/bfd/elf32-bfin.c |
@@ -1,5 +1,5 @@ |
/* ADI Blackfin BFD support for 32-bit ELF. |
- Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011 |
+ Copyright 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 |
Free Software Foundation, Inc. |
This file is part of BFD, the Binary File Descriptor library. |
@@ -34,7 +34,7 @@ bfin_pltpc_reloc ( |
bfd *abfd ATTRIBUTE_UNUSED, |
arelent *reloc_entry ATTRIBUTE_UNUSED, |
asymbol *symbol ATTRIBUTE_UNUSED, |
- PTR data ATTRIBUTE_UNUSED, |
+ void * data ATTRIBUTE_UNUSED, |
asection *input_section ATTRIBUTE_UNUSED, |
bfd *output_bfd ATTRIBUTE_UNUSED, |
char **error_message ATTRIBUTE_UNUSED) |
@@ -48,7 +48,7 @@ static bfd_reloc_status_type |
bfin_pcrel24_reloc (bfd *abfd, |
arelent *reloc_entry, |
asymbol *symbol, |
- PTR data, |
+ void * data, |
asection *input_section, |
bfd *output_bfd, |
char **error_message ATTRIBUTE_UNUSED) |
@@ -145,7 +145,7 @@ static bfd_reloc_status_type |
bfin_imm16_reloc (bfd *abfd, |
arelent *reloc_entry, |
asymbol *symbol, |
- PTR data, |
+ void * data, |
asection *input_section, |
bfd *output_bfd, |
char **error_message ATTRIBUTE_UNUSED) |
@@ -217,7 +217,7 @@ static bfd_reloc_status_type |
bfin_byte4_reloc (bfd *abfd, |
arelent *reloc_entry, |
asymbol *symbol, |
- PTR data, |
+ void * data, |
asection *input_section, |
bfd *output_bfd, |
char **error_message ATTRIBUTE_UNUSED) |
@@ -283,7 +283,7 @@ static bfd_reloc_status_type |
bfin_bfd_reloc (bfd *abfd, |
arelent *reloc_entry, |
asymbol *symbol, |
- PTR data, |
+ void * data, |
asection *input_section, |
bfd *output_bfd, |
char **error_message ATTRIBUTE_UNUSED) |
@@ -1109,7 +1109,7 @@ bfin_bfd_reloc_name_lookup (bfd *abfd ATTRIBUTE_UNUSED, |
/* Given a bfin relocation type, return the howto. */ |
static reloc_howto_type * |
bfin_reloc_type_lookup (bfd * abfd ATTRIBUTE_UNUSED, |
- unsigned int r_type) |
+ unsigned int r_type) |
{ |
if (r_type <= BFIN_RELOC_MAX) |
return &bfin_howto_table [r_type]; |
@@ -1139,9 +1139,7 @@ elf32_bfin_final_write_processing (bfd *abfd, |
/* Return TRUE if the name is a local label. |
bfin local labels begin with L$. */ |
static bfd_boolean |
-bfin_is_local_label_name ( |
- bfd *abfd, |
- const char *label) |
+bfin_is_local_label_name (bfd *abfd, const char *label) |
{ |
if (label[0] == 'L' && label[1] == '$' ) |
return TRUE; |
@@ -1167,6 +1165,7 @@ bfin_check_relocs (bfd * abfd, |
const Elf_Internal_Rela *rel_end; |
asection *sgot; |
asection *srelgot; |
+ |
if (info->relocatable) |
return TRUE; |
@@ -1224,20 +1223,21 @@ bfin_check_relocs (bfd * abfd, |
if (sgot == NULL) |
{ |
- sgot = bfd_get_section_by_name (dynobj, ".got"); |
+ sgot = bfd_get_linker_section (dynobj, ".got"); |
BFD_ASSERT (sgot != NULL); |
} |
if (srelgot == NULL && (h != NULL || info->shared)) |
{ |
- srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); |
+ srelgot = bfd_get_linker_section (dynobj, ".rela.got"); |
if (srelgot == NULL) |
{ |
flagword flags = (SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS |
| SEC_IN_MEMORY | SEC_LINKER_CREATED |
| SEC_READONLY); |
- srelgot = bfd_make_section_with_flags (dynobj, ".rela.got", |
- flags); |
+ srelgot = bfd_make_section_anyway_with_flags (dynobj, |
+ ".rela.got", |
+ flags); |
if (srelgot == NULL |
|| !bfd_set_section_alignment (dynobj, srelgot, 2)) |
return FALSE; |
@@ -1444,9 +1444,9 @@ bfin_relocate_section (bfd * output_bfd, |
unresolved_reloc, warned); |
} |
- if (sec != NULL && elf_discarded_section (sec)) |
+ if (sec != NULL && discarded_section (sec)) |
RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, |
- rel, relend, howto, contents); |
+ rel, 1, relend, howto, 0, contents); |
if (info->relocatable) |
continue; |
@@ -1483,7 +1483,7 @@ bfin_relocate_section (bfd * output_bfd, |
if (sgot == NULL) |
{ |
- sgot = bfd_get_section_by_name (dynobj, ".got"); |
+ sgot = bfd_get_linker_section (dynobj, ".got"); |
BFD_ASSERT (sgot != NULL); |
} |
@@ -1547,7 +1547,7 @@ bfin_relocate_section (bfd * output_bfd, |
Elf_Internal_Rela outrel; |
bfd_byte *loc; |
- s = bfd_get_section_by_name (dynobj, ".rela.got"); |
+ s = bfd_get_linker_section (dynobj, ".rela.got"); |
BFD_ASSERT (s != NULL); |
outrel.r_offset = (sgot->output_section->vma |
@@ -1676,8 +1676,8 @@ bfin_gc_sweep_hook (bfd * abfd, |
sym_hashes = elf_sym_hashes (abfd); |
local_got_refcounts = elf_local_got_refcounts (abfd); |
- sgot = bfd_get_section_by_name (dynobj, ".got"); |
- srelgot = bfd_get_section_by_name (dynobj, ".rela.got"); |
+ sgot = bfd_get_linker_section (dynobj, ".got"); |
+ srelgot = bfd_get_linker_section (dynobj, ".rela.got"); |
relend = relocs + sec->reloc_count; |
for (rel = relocs; rel < relend; rel++) |
@@ -1996,10 +1996,10 @@ bfinfdpic_relocs_info_find (struct htab *ht, |
for memory allocation purposes. */ |
inline static struct bfinfdpic_relocs_info * |
bfinfdpic_relocs_info_for_global (struct htab *ht, |
- bfd *abfd, |
- struct elf_link_hash_entry *h, |
- bfd_vma addend, |
- enum insert_option insert) |
+ bfd *abfd, |
+ struct elf_link_hash_entry *h, |
+ bfd_vma addend, |
+ enum insert_option insert) |
{ |
struct bfinfdpic_relocs_info entry; |
@@ -2034,7 +2034,7 @@ bfinfdpic_relocs_info_for_local (struct htab *ht, |
inline static void |
bfinfdpic_pic_merge_early_relocs_info (struct bfinfdpic_relocs_info *e2, |
- struct bfinfdpic_relocs_info const *e1) |
+ struct bfinfdpic_relocs_info const *e1) |
{ |
e2->got17m4 |= e1->got17m4; |
e2->gothilo |= e1->gothilo; |
@@ -2100,7 +2100,7 @@ _bfinfdpic_add_dyn_reloc (bfd *output_bfd, asection *sreloc, bfd_vma offset, |
static bfd_vma |
_bfinfdpic_add_rofixup (bfd *output_bfd, asection *rofixup, bfd_vma offset, |
- struct bfinfdpic_relocs_info *entry) |
+ struct bfinfdpic_relocs_info *entry) |
{ |
bfd_vma fixup_offset; |
@@ -2155,9 +2155,8 @@ _bfinfdpic_emit_got_relocs_plt_entries (struct bfinfdpic_relocs_info *entry, |
asection *sec, |
Elf_Internal_Sym *sym, |
bfd_vma addend) |
- |
{ |
- bfd_vma fd_lazy_rel_offset = (bfd_vma)-1; |
+ bfd_vma fd_lazy_rel_offset = (bfd_vma) -1; |
int dynindx = -1; |
if (entry->done) |
@@ -2665,9 +2664,9 @@ bfinfdpic_relocate_section (bfd * output_bfd, |
osec = sec; |
} |
- if (sec != NULL && elf_discarded_section (sec)) |
+ if (sec != NULL && discarded_section (sec)) |
RELOC_AGAINST_DISCARDED_SECTION (info, input_bfd, input_section, |
- rel, relend, howto, contents); |
+ rel, 1, relend, howto, 0, contents); |
if (info->relocatable) |
continue; |
@@ -3387,8 +3386,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
int ptralign; |
/* This function may be called more than once. */ |
- s = bfd_get_section_by_name (abfd, ".got"); |
- if (s != NULL && (s->flags & SEC_LINKER_CREATED) != 0) |
+ s = bfd_get_linker_section (abfd, ".got"); |
+ if (s != NULL) |
return TRUE; |
/* Machine specific: although pointers are 32-bits wide, we want the |
@@ -3401,14 +3400,14 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
| SEC_LINKER_CREATED); |
pltflags = flags; |
- s = bfd_make_section_with_flags (abfd, ".got", flags); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".got", flags); |
if (s == NULL |
|| !bfd_set_section_alignment (abfd, s, ptralign)) |
return FALSE; |
if (bed->want_got_plt) |
{ |
- s = bfd_make_section_with_flags (abfd, ".got.plt", flags); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".got.plt", flags); |
if (s == NULL |
|| !bfd_set_section_alignment (abfd, s, ptralign)) |
return FALSE; |
@@ -3446,8 +3445,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
if (! bfinfdpic_relocs_info (info)) |
return FALSE; |
- s = bfd_make_section_with_flags (abfd, ".rel.got", |
- (flags | SEC_READONLY)); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".rel.got", |
+ (flags | SEC_READONLY)); |
if (s == NULL |
|| ! bfd_set_section_alignment (abfd, s, 2)) |
return FALSE; |
@@ -3455,8 +3454,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
bfinfdpic_gotrel_section (info) = s; |
/* Machine-specific. */ |
- s = bfd_make_section_with_flags (abfd, ".rofixup", |
- (flags | SEC_READONLY)); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".rofixup", |
+ (flags | SEC_READONLY)); |
if (s == NULL |
|| ! bfd_set_section_alignment (abfd, s, 2)) |
return FALSE; |
@@ -3470,7 +3469,7 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
if (bed->plt_readonly) |
pltflags |= SEC_READONLY; |
- s = bfd_make_section_with_flags (abfd, ".plt", pltflags); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".plt", pltflags); |
if (s == NULL |
|| ! bfd_set_section_alignment (abfd, s, bed->plt_alignment)) |
return FALSE; |
@@ -3497,7 +3496,8 @@ _bfin_create_got_section (bfd *abfd, struct bfd_link_info *info) |
} |
/* Blackfin-specific: we want rel relocations for the plt. */ |
- s = bfd_make_section_with_flags (abfd, ".rel.plt", flags | SEC_READONLY); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".rel.plt", |
+ flags | SEC_READONLY); |
if (s == NULL |
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) |
return FALSE; |
@@ -3543,27 +3543,27 @@ elf32_bfinfdpic_create_dynamic_sections (bfd *abfd, struct bfd_link_info *info) |
image and use a R_*_COPY reloc to tell the dynamic linker to |
initialize them at run time. The linker script puts the .dynbss |
section into the .bss section of the final image. */ |
- s = bfd_make_section_with_flags (abfd, ".dynbss", |
- SEC_ALLOC | SEC_LINKER_CREATED); |
+ s = bfd_make_section_anyway_with_flags (abfd, ".dynbss", |
+ SEC_ALLOC | SEC_LINKER_CREATED); |
if (s == NULL) |
return FALSE; |
/* The .rel[a].bss section holds copy relocs. This section is not |
- normally needed. We need to create it here, though, so that the |
- linker will map it to an output section. We can't just create it |
- only if we need it, because we will not know whether we need it |
- until we have seen all the input files, and the first time the |
- main linker code calls BFD after examining all the input files |
- (size_dynamic_sections) the input sections have already been |
- mapped to the output sections. If the section turns out not to |
- be needed, we can discard it later. We will never need this |
- section when generating a shared object, since they do not use |
- copy relocs. */ |
+ normally needed. We need to create it here, though, so that the |
+ linker will map it to an output section. We can't just create it |
+ only if we need it, because we will not know whether we need it |
+ until we have seen all the input files, and the first time the |
+ main linker code calls BFD after examining all the input files |
+ (size_dynamic_sections) the input sections have already been |
+ mapped to the output sections. If the section turns out not to |
+ be needed, we can discard it later. We will never need this |
+ section when generating a shared object, since they do not use |
+ copy relocs. */ |
if (! info->shared) |
{ |
- s = bfd_make_section_with_flags (abfd, |
- ".rela.bss", |
- flags | SEC_READONLY); |
+ s = bfd_make_section_anyway_with_flags (abfd, |
+ ".rela.bss", |
+ flags | SEC_READONLY); |
if (s == NULL |
|| ! bfd_set_section_alignment (abfd, s, bed->s->log_file_align)) |
return FALSE; |
@@ -4246,7 +4246,7 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd, |
/* Set the contents of the .interp section to the interpreter. */ |
if (info->executable) |
{ |
- s = bfd_get_section_by_name (dynobj, ".interp"); |
+ s = bfd_get_linker_section (dynobj, ".interp"); |
BFD_ASSERT (s != NULL); |
s->size = sizeof ELF_DYNAMIC_INTERPRETER; |
s->contents = (bfd_byte *) ELF_DYNAMIC_INTERPRETER; |
@@ -4296,11 +4296,11 @@ elf32_bfinfdpic_size_dynamic_sections (bfd *output_bfd, |
return FALSE; |
} |
- s = bfd_get_section_by_name (dynobj, ".dynbss"); |
+ s = bfd_get_linker_section (dynobj, ".dynbss"); |
if (s && s->size == 0) |
s->flags |= SEC_EXCLUDE; |
- s = bfd_get_section_by_name (dynobj, ".rela.bss"); |
+ s = bfd_get_linker_section (dynobj, ".rela.bss"); |
if (s && s->size == 0) |
s->flags |= SEC_EXCLUDE; |
@@ -4348,9 +4348,8 @@ elf32_bfinfdpic_always_size_sections (bfd *output_bfd, |
subtract it from the relocation or fixup count. */ |
static bfd_boolean |
_bfinfdpic_check_discarded_relocs (bfd *abfd, asection *sec, |
- struct bfd_link_info *info, |
- |
- bfd_boolean *changed) |
+ struct bfd_link_info *info, |
+ bfd_boolean *changed) |
{ |
Elf_Internal_Shdr *symtab_hdr; |
struct elf_link_hash_entry **sym_hashes, **sym_hashes_end; |
@@ -4433,7 +4432,7 @@ bfinfdpic_elf_discard_info (bfd *ibfd, |
/* Account for relaxation of .eh_frame section. */ |
for (s = ibfd->sections; s; s = s->next) |
- if (s->sec_info_type == ELF_INFO_TYPE_EH_FRAME) |
+ if (s->sec_info_type == SEC_INFO_TYPE_EH_FRAME) |
{ |
if (!_bfinfdpic_check_discarded_relocs (ibfd, s, info, &changed)) |
return FALSE; |
@@ -4546,7 +4545,7 @@ elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd, |
* sizeof (Elf32_External_Rel))); |
} |
- sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); |
+ sdyn = bfd_get_linker_section (dynobj, ".dynamic"); |
if (elf_hash_table (info)->dynamic_sections_created) |
{ |
@@ -4598,9 +4597,8 @@ elf32_bfinfdpic_finish_dynamic_sections (bfd *output_bfd, |
regular object. */ |
static bfd_boolean |
-elf32_bfinfdpic_adjust_dynamic_symbol |
-(struct bfd_link_info *info, |
- struct elf_link_hash_entry *h) |
+elf32_bfinfdpic_adjust_dynamic_symbol (struct bfd_link_info *info, |
+ struct elf_link_hash_entry *h) |
{ |
bfd * dynobj; |
@@ -5063,7 +5061,7 @@ elf32_bfinfdpic_copy_private_bfd_data (bfd *ibfd, bfd *obfd) |
/* Display the flags field. */ |
static bfd_boolean |
-elf32_bfin_print_private_bfd_data (bfd * abfd, PTR ptr) |
+elf32_bfin_print_private_bfd_data (bfd * abfd, void * ptr) |
{ |
FILE *file = (FILE *) ptr; |
flagword flags; |
@@ -5211,14 +5209,14 @@ bfin_link_hash_table_create (bfd * abfd) |
static bfd_boolean |
bfin_finish_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
- struct bfd_link_info *info) |
+ struct bfd_link_info *info) |
{ |
bfd *dynobj; |
asection *sdyn; |
dynobj = elf_hash_table (info)->dynobj; |
- sdyn = bfd_get_section_by_name (dynobj, ".dynamic"); |
+ sdyn = bfd_get_linker_section (dynobj, ".dynamic"); |
if (elf_hash_table (info)->dynamic_sections_created) |
{ |
@@ -5245,9 +5243,9 @@ bfin_finish_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
static bfd_boolean |
bfin_finish_dynamic_symbol (bfd * output_bfd, |
- struct bfd_link_info *info, |
- struct elf_link_hash_entry *h, |
- Elf_Internal_Sym * sym) |
+ struct bfd_link_info *info, |
+ struct elf_link_hash_entry *h, |
+ Elf_Internal_Sym * sym) |
{ |
bfd *dynobj; |
@@ -5263,8 +5261,8 @@ bfin_finish_dynamic_symbol (bfd * output_bfd, |
/* This symbol has an entry in the global offset table. |
Set it up. */ |
- sgot = bfd_get_section_by_name (dynobj, ".got"); |
- srela = bfd_get_section_by_name (dynobj, ".rela.got"); |
+ sgot = bfd_get_linker_section (dynobj, ".got"); |
+ srela = bfd_get_linker_section (dynobj, ".rela.got"); |
BFD_ASSERT (sgot != NULL && srela != NULL); |
rela.r_offset = (sgot->output_section->vma |
@@ -5322,7 +5320,7 @@ bfin_finish_dynamic_symbol (bfd * output_bfd, |
static bfd_boolean |
bfin_adjust_dynamic_symbol (struct bfd_link_info *info, |
- struct elf_link_hash_entry *h) |
+ struct elf_link_hash_entry *h) |
{ |
bfd *dynobj; |
asection *s; |
@@ -5376,7 +5374,7 @@ bfin_adjust_dynamic_symbol (struct bfd_link_info *info, |
both the dynamic object and the regular object will refer to the |
same memory location for the variable. */ |
- s = bfd_get_section_by_name (dynobj, ".dynbss"); |
+ s = bfd_get_linker_section (dynobj, ".dynbss"); |
BFD_ASSERT (s != NULL); |
/* We must generate a R_68K_COPY reloc to tell the dynamic linker to |
@@ -5387,7 +5385,7 @@ bfin_adjust_dynamic_symbol (struct bfd_link_info *info, |
{ |
asection *srel; |
- srel = bfd_get_section_by_name (dynobj, ".rela.bss"); |
+ srel = bfd_get_linker_section (dynobj, ".rela.bss"); |
BFD_ASSERT (srel != NULL); |
srel->size += sizeof (Elf32_External_Rela); |
h->needs_copy = 1; |
@@ -5450,7 +5448,7 @@ struct bfin_pcrel_relocs_copied |
case. */ |
static bfd_boolean |
-bfin_discard_copies (struct elf_link_hash_entry *h, PTR inf) |
+bfin_discard_copies (struct elf_link_hash_entry *h, void * inf) |
{ |
struct bfd_link_info *info = (struct bfd_link_info *) inf; |
struct bfin_pcrel_relocs_copied *s; |
@@ -5481,7 +5479,7 @@ bfin_discard_copies (struct elf_link_hash_entry *h, PTR inf) |
static bfd_boolean |
bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
- struct bfd_link_info *info) |
+ struct bfd_link_info *info) |
{ |
bfd *dynobj; |
asection *s; |
@@ -5495,7 +5493,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
/* Set the contents of the .interp section to the interpreter. */ |
if (info->executable) |
{ |
- s = bfd_get_section_by_name (dynobj, ".interp"); |
+ s = bfd_get_linker_section (dynobj, ".interp"); |
BFD_ASSERT (s != NULL); |
s->size = sizeof ELF_DYNAMIC_INTERPRETER; |
s->contents = (unsigned char *) ELF_DYNAMIC_INTERPRETER; |
@@ -5508,7 +5506,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
not actually use these entries. Reset the size of .rela.got, |
which will cause it to get stripped from the output file |
below. */ |
- s = bfd_get_section_by_name (dynobj, ".rela.got"); |
+ s = bfd_get_linker_section (dynobj, ".rela.got"); |
if (s != NULL) |
s->size = 0; |
} |
@@ -5521,7 +5519,7 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
will not fill them in in the relocate_section routine. */ |
if (info->shared) |
elf_link_hash_traverse (elf_hash_table (info), |
- bfin_discard_copies, (PTR) info); |
+ bfin_discard_copies, info); |
/* The check_relocs and adjust_dynamic_symbol entry points have |
determined the sizes of the various dynamic sections. Allocate |
@@ -5632,16 +5630,12 @@ bfin_size_dynamic_sections (bfd * output_bfd ATTRIBUTE_UNUSED, |
after the add_symbols entry point has been called for all the |
objects, and before the final_link entry point is called. */ |
-bfd_boolean bfd_bfin_elf32_create_embedded_relocs |
- PARAMS ((bfd *, struct bfd_link_info *, asection *, asection *, char **)); |
- |
bfd_boolean |
-bfd_bfin_elf32_create_embedded_relocs ( |
- bfd *abfd, |
- struct bfd_link_info *info, |
- asection *datasec, |
- asection *relsec, |
- char **errmsg) |
+bfd_bfin_elf32_create_embedded_relocs (bfd *abfd, |
+ struct bfd_link_info *info, |
+ asection *datasec, |
+ asection *relsec, |
+ char **errmsg) |
{ |
Elf_Internal_Shdr *symtab_hdr; |
Elf_Internal_Sym *isymbuf = NULL; |
@@ -5661,7 +5655,7 @@ bfd_bfin_elf32_create_embedded_relocs ( |
/* Get a copy of the native relocations. */ |
internal_relocs = (_bfd_elf_link_read_relocs |
- (abfd, datasec, (PTR) NULL, (Elf_Internal_Rela *) NULL, |
+ (abfd, datasec, NULL, (Elf_Internal_Rela *) NULL, |
info->keep_memory)); |
if (internal_relocs == NULL) |
goto error_return; |