Line 1... |
Line 1... |
/* SuperH SH64-specific support for 32-bit ELF
|
/* SuperH SH64-specific support for 32-bit ELF
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
|
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
|
|
This program is free software; you can redistribute it and/or modify
|
This program is free software; you can redistribute it and/or modify
|
Line 58... |
Line 58... |
static int sh64_elf_get_symbol_type
|
static int sh64_elf_get_symbol_type
|
(Elf_Internal_Sym *, int);
|
(Elf_Internal_Sym *, int);
|
static bfd_boolean sh64_elf_add_symbol_hook
|
static bfd_boolean sh64_elf_add_symbol_hook
|
(bfd *, struct bfd_link_info *, Elf_Internal_Sym *, const char **,
|
(bfd *, struct bfd_link_info *, Elf_Internal_Sym *, const char **,
|
flagword *, asection **, bfd_vma *);
|
flagword *, asection **, bfd_vma *);
|
static bfd_boolean sh64_elf_link_output_symbol_hook
|
static int sh64_elf_link_output_symbol_hook
|
(struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *,
|
(struct bfd_link_info *, const char *, Elf_Internal_Sym *, asection *,
|
struct elf_link_hash_entry *);
|
struct elf_link_hash_entry *);
|
static bfd_boolean sh64_backend_section_from_shdr
|
static bfd_boolean sh64_backend_section_from_shdr
|
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
(bfd *, Elf_Internal_Shdr *, const char *, int);
|
static void sh64_elf_final_write_processing
|
static void sh64_elf_final_write_processing
|
Line 475... |
Line 475... |
DataLabel references, a relation that is not visible to the linker.
|
DataLabel references, a relation that is not visible to the linker.
|
Since no stripping of global symbols in done when doing such linking,
|
Since no stripping of global symbols in done when doing such linking,
|
we don't need to look up and make sure to emit the main symbol for each
|
we don't need to look up and make sure to emit the main symbol for each
|
DataLabel symbol. */
|
DataLabel symbol. */
|
|
|
bfd_boolean
|
static int
|
sh64_elf_link_output_symbol_hook (struct bfd_link_info *info,
|
sh64_elf_link_output_symbol_hook (struct bfd_link_info *info,
|
const char *cname,
|
const char *cname,
|
Elf_Internal_Sym *sym,
|
Elf_Internal_Sym *sym,
|
asection *input_sec ATTRIBUTE_UNUSED,
|
asection *input_sec ATTRIBUTE_UNUSED,
|
struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
|
struct elf_link_hash_entry *h ATTRIBUTE_UNUSED)
|
Line 490... |
Line 490... |
{
|
{
|
if (ELF_ST_TYPE (sym->st_info) == STT_DATALABEL)
|
if (ELF_ST_TYPE (sym->st_info) == STT_DATALABEL)
|
name[strlen (name) - strlen (DATALABEL_SUFFIX)] = 0;
|
name[strlen (name) - strlen (DATALABEL_SUFFIX)] = 0;
|
}
|
}
|
|
|
return TRUE;
|
return 1;
|
}
|
}
|
|
|
/* Check a SH64-specific reloc and put the value to relocate to into
|
/* Check a SH64-specific reloc and put the value to relocate to into
|
RELOCATION, ready to pass to _bfd_final_link_relocate. Return FALSE if
|
RELOCATION, ready to pass to _bfd_final_link_relocate. Return FALSE if
|
bad value, TRUE if ok. */
|
bad value, TRUE if ok. */
|