Line 1... |
Line 1... |
/* CRIS-specific support for 32-bit ELF.
|
/* CRIS-specific support for 32-bit ELF.
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
|
2010 Free Software Foundation, Inc.
|
2010, 2011 Free Software Foundation, Inc.
|
Contributed by Axis Communications AB.
|
Contributed by Axis Communications AB.
|
Written by Hans-Peter Nilsson, based on elf32-fr30.c
|
Written by Hans-Peter Nilsson, based on elf32-fr30.c
|
PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c.
|
PIC and shlib bits based primarily on elf32-m68k.c and elf32-i386.c.
|
|
|
This file is part of BFD, the Binary File Descriptor library.
|
This file is part of BFD, the Binary File Descriptor library.
|
Line 2731... |
Line 2731... |
struct elf_cris_link_hash_entry *h;
|
struct elf_cris_link_hash_entry *h;
|
PTR p;
|
PTR p;
|
{
|
{
|
struct bfd_link_info *info = (struct bfd_link_info *) p;
|
struct bfd_link_info *info = (struct bfd_link_info *) p;
|
|
|
if (h->root.root.type == bfd_link_hash_warning)
|
|
h = (struct elf_cris_link_hash_entry *) h->root.root.u.i.link;
|
|
|
|
/* If nobody wanted a GOTPLT with this symbol, we're done. */
|
/* If nobody wanted a GOTPLT with this symbol, we're done. */
|
if (h->gotplt_refcount <= 0)
|
if (h->gotplt_refcount <= 0)
|
return TRUE;
|
return TRUE;
|
|
|
if (h->reg_got_refcount > 0)
|
if (h->reg_got_refcount > 0)
|
Line 3954... |
Line 3951... |
PTR inf;
|
PTR inf;
|
{
|
{
|
struct elf_cris_pcrel_relocs_copied *s;
|
struct elf_cris_pcrel_relocs_copied *s;
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
|
|
if (h->root.root.type == bfd_link_hash_warning)
|
|
h = (struct elf_cris_link_hash_entry *) h->root.root.u.i.link;
|
|
|
|
/* If a symbol has been forced local or we have found a regular
|
/* If a symbol has been forced local or we have found a regular
|
definition for the symbolic link case, then we won't be needing
|
definition for the symbolic link case, then we won't be needing
|
any relocs. */
|
any relocs. */
|
if (h->root.def_regular
|
if (h->root.def_regular
|
&& (h->root.forced_local
|
&& (h->root.forced_local
|
Line 4012... |
Line 4006... |
struct elf_cris_link_hash_entry *h;
|
struct elf_cris_link_hash_entry *h;
|
PTR inf;
|
PTR inf;
|
{
|
{
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
struct bfd_link_info *info = (struct bfd_link_info *) inf;
|
|
|
if (h->root.root.type == bfd_link_hash_warning)
|
|
h = (struct elf_cris_link_hash_entry *) h->root.root.u.i.link;
|
|
|
|
/* If we're not creating a shared library and have a symbol which is
|
/* If we're not creating a shared library and have a symbol which is
|
referred to by .got references, but the symbol is defined locally,
|
referred to by .got references, but the symbol is defined locally,
|
(or rather, not defined by a DSO) then lose the reloc for the .got
|
(or rather, not defined by a DSO) then lose the reloc for the .got
|
(don't allocate room for it). Likewise for relocs for something
|
(don't allocate room for it). Likewise for relocs for something
|
for which we create a PLT. */
|
for which we create a PLT. */
|