projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
addr2line: fix missing inlined frames.
[deliverable/binutils-gdb.git]
/
bfd
/
elf32-sh.c
diff --git
a/bfd/elf32-sh.c
b/bfd/elf32-sh.c
index fff324d7a144a30b08963cd7e73e9000a677362e..259ddf08a1801349deca87d63e1a8c623281a6d4 100644
(file)
--- a/
bfd/elf32-sh.c
+++ b/
bfd/elf32-sh.c
@@
-1,7
+1,5
@@
/* Renesas / SuperH SH specific support for 32-bit ELF
/* Renesas / SuperH SH specific support for 32-bit ELF
- Copyright 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
- 2006, 2007, 2008, 2009, 2010, 2011, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 1996-2014 Free Software Foundation, Inc.
Contributed by Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
Contributed by Ian Lance Taylor, Cygnus Support.
This file is part of BFD, the Binary File Descriptor library.
@@
-90,11
+88,11
@@
static bfd_boolean
vxworks_object_p (bfd *abfd ATTRIBUTE_UNUSED)
{
#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED
vxworks_object_p (bfd *abfd ATTRIBUTE_UNUSED)
{
#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED
- extern const bfd_target
bfd_elf32_shlvxworks
_vec;
- extern const bfd_target
bfd_elf32_sh
vxworks_vec;
+ extern const bfd_target
sh_elf32_vxworks_le
_vec;
+ extern const bfd_target
sh_elf32_
vxworks_vec;
- return (abfd->xvec == &
bfd_elf32_shlvxworks
_vec
- || abfd->xvec == &
bfd_elf32_sh
vxworks_vec);
+ return (abfd->xvec == &
sh_elf32_vxworks_le
_vec
+ || abfd->xvec == &
sh_elf32_
vxworks_vec);
#else
return FALSE;
#endif
#else
return FALSE;
#endif
@@
-106,11
+104,11
@@
static bfd_boolean
fdpic_object_p (bfd *abfd ATTRIBUTE_UNUSED)
{
#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED
fdpic_object_p (bfd *abfd ATTRIBUTE_UNUSED)
{
#if !defined INCLUDE_SHMEDIA && !defined SH_TARGET_ALREADY_DEFINED
- extern const bfd_target
bfd_elf32_shfd
_vec;
- extern const bfd_target
bfd_elf32_shbfd
_vec;
+ extern const bfd_target
sh_elf32_fdpic_le
_vec;
+ extern const bfd_target
sh_elf32_fdpic_be
_vec;
- return (abfd->xvec == &
bfd_elf32_shfd
_vec
- || abfd->xvec == &
bfd_elf32_shbfd
_vec);
+ return (abfd->xvec == &
sh_elf32_fdpic_le
_vec
+ || abfd->xvec == &
sh_elf32_fdpic_be
_vec);
#else
return FALSE;
#endif
#else
return FALSE;
#endif
@@
-4425,6
+4423,12
@@
sh_elf_relocate_section (bfd *output_bfd, struct bfd_link_info *info,
check_segment[0] = check_segment[1] = -1;
}
check_segment[0] = check_segment[1] = -1;
}
+ /* We don't want warnings for non-NULL tests on undefined weak
+ symbols. */
+ else if (r_type == R_SH_REL32
+ && h
+ && h->root.type == bfd_link_hash_undefweak)
+ check_segment[0] = check_segment[1] = -1;
goto final_link_relocate;
case R_SH_GOTPLT32:
goto final_link_relocate;
case R_SH_GOTPLT32:
@@
-6025,6
+6029,10
@@
sh_elf_check_relocs (bfd *abfd, struct bfd_link_info *info, asection *sec,
#endif
h = (struct elf_link_hash_entry *) h->root.u.i.link;
}
#endif
h = (struct elf_link_hash_entry *) h->root.u.i.link;
}
+
+ /* PR15323, ref flags aren't set for references in the same
+ object. */
+ h->root.non_ir_ref = 1;
}
r_type = sh_elf_optimized_tls_reloc (info, r_type, h == NULL);
}
r_type = sh_elf_optimized_tls_reloc (info, r_type, h == NULL);
@@
-6572,34
+6580,19
@@
sh_elf_get_flags_from_mach (unsigned long mach)
}
#endif /* not sh_elf_set_mach_from_flags */
}
#endif /* not sh_elf_set_mach_from_flags */
-#ifndef sh_elf_set_private_flags
-/* Function to keep SH specific file flags. */
-
-static bfd_boolean
-sh_elf_set_private_flags (bfd *abfd, flagword flags)
-{
- BFD_ASSERT (! elf_flags_init (abfd)
- || elf_elfheader (abfd)->e_flags == flags);
-
- elf_elfheader (abfd)->e_flags = flags;
- elf_flags_init (abfd) = TRUE;
- return sh_elf_set_mach_from_flags (abfd);
-}
-#endif /* not sh_elf_set_private_flags */
-
#ifndef sh_elf_copy_private_data
/* Copy backend specific data from one object module to another */
static bfd_boolean
sh_elf_copy_private_data (bfd * ibfd, bfd * obfd)
{
#ifndef sh_elf_copy_private_data
/* Copy backend specific data from one object module to another */
static bfd_boolean
sh_elf_copy_private_data (bfd * ibfd, bfd * obfd)
{
- /* Copy object attributes. */
- _bfd_elf_copy_obj_attributes (ibfd, obfd);
-
if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
return TRUE;
if (! is_sh_elf (ibfd) || ! is_sh_elf (obfd))
return TRUE;
- return sh_elf_set_private_flags (obfd, elf_elfheader (ibfd)->e_flags);
+ if (! _bfd_elf_copy_private_bfd_data (ibfd, obfd))
+ return FALSE;
+
+ return sh_elf_set_mach_from_flags (obfd);
}
#endif /* not sh_elf_copy_private_data */
}
#endif /* not sh_elf_copy_private_data */
@@
-7261,7
+7254,9
@@
sh_elf_finish_dynamic_sections (bfd *output_bfd, struct bfd_link_info *info)
}
static enum elf_reloc_type_class
}
static enum elf_reloc_type_class
-sh_elf_reloc_type_class (const Elf_Internal_Rela *rela)
+sh_elf_reloc_type_class (const struct bfd_link_info *info ATTRIBUTE_UNUSED,
+ const asection *rel_sec ATTRIBUTE_UNUSED,
+ const Elf_Internal_Rela *rela)
{
switch ((int) ELF32_R_TYPE (rela->r_info))
{
{
switch ((int) ELF32_R_TYPE (rela->r_info))
{
@@
-7408,9
+7403,9
@@
sh_elf_encode_eh_address (bfd *abfd,
}
#if !defined SH_TARGET_ALREADY_DEFINED
}
#if !defined SH_TARGET_ALREADY_DEFINED
-#define TARGET_BIG_SYM
bfd_elf32_sh
_vec
+#define TARGET_BIG_SYM
sh_elf32
_vec
#define TARGET_BIG_NAME "elf32-sh"
#define TARGET_BIG_NAME "elf32-sh"
-#define TARGET_LITTLE_SYM
bfd_elf32_shl
_vec
+#define TARGET_LITTLE_SYM
sh_elf32_le
_vec
#define TARGET_LITTLE_NAME "elf32-shl"
#endif
#define TARGET_LITTLE_NAME "elf32-shl"
#endif
@@
-7435,8
+7430,6
@@
sh_elf_encode_eh_address (bfd *abfd,
sh_elf_get_relocated_section_contents
#define bfd_elf32_mkobject sh_elf_mkobject
#define elf_backend_object_p sh_elf_object_p
sh_elf_get_relocated_section_contents
#define bfd_elf32_mkobject sh_elf_mkobject
#define elf_backend_object_p sh_elf_object_p
-#define bfd_elf32_bfd_set_private_bfd_flags \
- sh_elf_set_private_flags
#define bfd_elf32_bfd_copy_private_bfd_data \
sh_elf_copy_private_data
#define bfd_elf32_bfd_merge_private_bfd_data \
#define bfd_elf32_bfd_copy_private_bfd_data \
sh_elf_copy_private_data
#define bfd_elf32_bfd_merge_private_bfd_data \
@@
-7485,11
+7478,11
@@
sh_elf_encode_eh_address (bfd *abfd,
/* NetBSD support. */
#undef TARGET_BIG_SYM
/* NetBSD support. */
#undef TARGET_BIG_SYM
-#define TARGET_BIG_SYM
bfd_elf32_sh
nbsd_vec
+#define TARGET_BIG_SYM
sh_elf32_
nbsd_vec
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-sh-nbsd"
#undef TARGET_LITTLE_SYM
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-sh-nbsd"
#undef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM
bfd_elf32_shlnbsd
_vec
+#define TARGET_LITTLE_SYM
sh_elf32_nbsd_le
_vec
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-shl-nbsd"
#undef ELF_MAXPAGESIZE
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-shl-nbsd"
#undef ELF_MAXPAGESIZE
@@
-7505,11
+7498,11
@@
sh_elf_encode_eh_address (bfd *abfd,
/* Linux support. */
#undef TARGET_BIG_SYM
/* Linux support. */
#undef TARGET_BIG_SYM
-#define TARGET_BIG_SYM
bfd_elf32_shblin
_vec
+#define TARGET_BIG_SYM
sh_elf32_linux_be
_vec
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-shbig-linux"
#undef TARGET_LITTLE_SYM
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-shbig-linux"
#undef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM
bfd_elf32_shlin
_vec
+#define TARGET_LITTLE_SYM
sh_elf32_linux
_vec
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-sh-linux"
#undef ELF_COMMONPAGESIZE
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-sh-linux"
#undef ELF_COMMONPAGESIZE
@@
-7527,11
+7520,11
@@
sh_elf_encode_eh_address (bfd *abfd,
/* FDPIC support. */
#undef TARGET_BIG_SYM
/* FDPIC support. */
#undef TARGET_BIG_SYM
-#define TARGET_BIG_SYM
bfd_elf32_shbfd
_vec
+#define TARGET_BIG_SYM
sh_elf32_fdpic_be
_vec
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-shbig-fdpic"
#undef TARGET_LITTLE_SYM
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-shbig-fdpic"
#undef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM
bfd_elf32_shfd
_vec
+#define TARGET_LITTLE_SYM
sh_elf32_fdpic_le
_vec
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-sh-fdpic"
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-sh-fdpic"
@@
-7544,11
+7537,11
@@
sh_elf_encode_eh_address (bfd *abfd,
/* VxWorks support. */
#undef TARGET_BIG_SYM
/* VxWorks support. */
#undef TARGET_BIG_SYM
-#define TARGET_BIG_SYM
bfd_elf32_sh
vxworks_vec
+#define TARGET_BIG_SYM
sh_elf32_
vxworks_vec
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-sh-vxworks"
#undef TARGET_LITTLE_SYM
#undef TARGET_BIG_NAME
#define TARGET_BIG_NAME "elf32-sh-vxworks"
#undef TARGET_LITTLE_SYM
-#define TARGET_LITTLE_SYM
bfd_elf32_shlvxworks
_vec
+#define TARGET_LITTLE_SYM
sh_elf32_vxworks_le
_vec
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-shl-vxworks"
#undef elf32_bed
#undef TARGET_LITTLE_NAME
#define TARGET_LITTLE_NAME "elf32-shl-vxworks"
#undef elf32_bed
This page took
0.025217 seconds
and
4
git commands to generate.