/* Renesas / SuperH specific support for Symbian 32-bit ELF files
- Copyright 2004, 2005, 2006
+ Copyright 2004, 2005, 2006, 2007, 2008
Free Software Foundation, Inc.
Contributed by Red Hat
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
+ the Free Software Foundation; either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
+ Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
+ MA 02110-1301, USA. */
+
/* Stop elf32-sh.c from defining any target vectors. */
#define SH_TARGET_ALREADY_DEFINED
/* Scan a bfd for a .directive section, and if found process it.
Returns TRUE upon success, FALSE otherwise. */
-bfd_boolean bfd_elf32_sh_symbian_process_directives (struct bfd_link_info *info, bfd * abfd);
-bfd_boolean
-bfd_elf32_sh_symbian_process_directives (struct bfd_link_info *info, bfd * abfd)
+static bfd_boolean
+sh_symbian_process_directives (bfd *abfd, struct bfd_link_info *info)
{
bfd_boolean result = FALSE;
bfd_byte * contents;
new_sym.st_info = ELF_ST_INFO (STB_GLOBAL, STT_FUNC);
new_sym.st_other = ELF_ST_VISIBILITY (STV_DEFAULT);
new_sym.st_shndx = SHN_UNDEF;
+ new_sym.st_target_internal = 0;
if (! _bfd_elf_merge_symbol (input_bfd, info,
ptr->new_name, & new_sym,
& psec, & new_value, NULL,
- & new_hash, & skip,
+ NULL, & new_hash, & skip,
& override, & type_change_ok,
& size_change_ok))
{
BFD_ASSERT (ptr->new_symndx);
if (SYMBIAN_DEBUG)
fprintf (stderr, "convert reloc %lx from using index %ld to using index %ld\n",
- (long) rel->r_info, (long) ELF32_R_SYM (rel->r_info), ptr->new_symndx);
+ (unsigned long) rel->r_info,
+ (long) ELF32_R_SYM (rel->r_info), ptr->new_symndx);
rel->r_info = ELF32_R_INFO (ptr->new_symndx, r_type);
break;
}
contents, relocs, local_syms, local_sections);
}
-static bfd_boolean
-sh_symbian_check_directives (bfd *abfd, struct bfd_link_info *info)
-{
- return bfd_elf32_sh_symbian_process_directives (info, abfd);
-}
-
#define TARGET_LITTLE_SYM bfd_elf32_shl_symbian_vec
#define TARGET_LITTLE_NAME "elf32-shl-symbian"
#undef elf_backend_relocate_section
#define elf_backend_relocate_section sh_symbian_relocate_section
#undef elf_backend_check_directives
-#define elf_backend_check_directives sh_symbian_check_directives
+#define elf_backend_check_directives sh_symbian_process_directives
#include "elf32-target.h"