Line 1... |
Line 1... |
/* Motorola 68HC11/HC12-specific support for 32-bit ELF
|
/* Motorola 68HC11/HC12-specific support for 32-bit ELF
|
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
|
Copyright 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
|
Free Software Foundation, Inc.
|
2009 Free Software Foundation, Inc.
|
Contributed by Stephane Carrez (stcarrez@nerim.fr)
|
Contributed by Stephane Carrez (stcarrez@nerim.fr)
|
|
|
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 18... |
Line 18... |
You should have received a copy of the GNU General Public License
|
You should have received a copy of the GNU General Public License
|
along with this program; if not, write to the Free Software
|
along with this program; if not, write to the Free Software
|
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
|
MA 02110-1301, USA. */
|
MA 02110-1301, USA. */
|
|
|
|
#include "alloca-conf.h"
|
#include "sysdep.h"
|
#include "sysdep.h"
|
#include "bfd.h"
|
#include "bfd.h"
|
#include "bfdlink.h"
|
#include "bfdlink.h"
|
#include "libbfd.h"
|
#include "libbfd.h"
|
#include "elf-bfd.h"
|
#include "elf-bfd.h"
|
Line 92... |
Line 93... |
return NULL;
|
return NULL;
|
|
|
ret->stub_bfd = NULL;
|
ret->stub_bfd = NULL;
|
ret->stub_section = 0;
|
ret->stub_section = 0;
|
ret->add_stub_section = NULL;
|
ret->add_stub_section = NULL;
|
ret->sym_sec.abfd = NULL;
|
ret->sym_cache.abfd = NULL;
|
|
|
return ret;
|
return ret;
|
}
|
}
|
|
|
/* Free the derived linker hash table. */
|
/* Free the derived linker hash table. */
|
Line 448... |
Line 449... |
sym = local_syms + r_indx;
|
sym = local_syms + r_indx;
|
is_far = (sym && (sym->st_other & STO_M68HC12_FAR));
|
is_far = (sym && (sym->st_other & STO_M68HC12_FAR));
|
if (!is_far)
|
if (!is_far)
|
continue;
|
continue;
|
|
|
|
if (sym->st_shndx >= elf_numsections (input_bfd))
|
|
sym_sec = NULL;
|
|
else
|
|
{
|
hdr = elf_elfsections (input_bfd)[sym->st_shndx];
|
hdr = elf_elfsections (input_bfd)[sym->st_shndx];
|
sym_sec = hdr->bfd_section;
|
sym_sec = hdr->bfd_section;
|
|
}
|
stub_name = (bfd_elf_string_from_elf_section
|
stub_name = (bfd_elf_string_from_elf_section
|
(input_bfd, symtab_hdr->sh_link,
|
(input_bfd, symtab_hdr->sh_link,
|
sym->st_name));
|
sym->st_name));
|
sym_value = sym->st_value;
|
sym_value = sym->st_value;
|
hash = NULL;
|
hash = NULL;
|