Line 1... |
Line 1... |
/* 8 and 16 bit COFF relocation functions, for BFD.
|
/* 8 and 16 bit COFF relocation functions, for BFD.
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001,
|
Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 2000, 2001,
|
2002, 2003, 2004, 2007 Free Software Foundation, Inc.
|
2002, 2003, 2004, 2005, 2007, 2008, 2009 Free Software Foundation, Inc.
|
Written by Cygnus Support.
|
Written by Cygnus Support.
|
|
|
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 74... |
Line 74... |
+ h->u.def.section->output_section->vma
|
+ h->u.def.section->output_section->vma
|
+ h->u.def.section->output_offset);
|
+ h->u.def.section->output_offset);
|
else if (h != (struct bfd_link_hash_entry *) NULL
|
else if (h != (struct bfd_link_hash_entry *) NULL
|
&& h->type == bfd_link_hash_common)
|
&& h->type == bfd_link_hash_common)
|
value = h->u.c.size;
|
value = h->u.c.size;
|
|
else if (h != (struct bfd_link_hash_entry *) NULL
|
|
&& h->type == bfd_link_hash_undefweak)
|
|
/* This is a GNU extension. */
|
|
value = 0;
|
else
|
else
|
{
|
{
|
if (!((*link_info->callbacks->undefined_symbol)
|
if (!((*link_info->callbacks->undefined_symbol)
|
(link_info, bfd_asymbol_name (symbol),
|
(link_info, bfd_asymbol_name (symbol),
|
input_section->owner, input_section, reloc->address,
|
input_section->owner, input_section, reloc->address,
|
Line 151... |
Line 155... |
unsigned shrink = 0;
|
unsigned shrink = 0;
|
long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
|
long reloc_size = bfd_get_reloc_upper_bound (input_bfd, input_section);
|
arelent **reloc_vector = NULL;
|
arelent **reloc_vector = NULL;
|
long reloc_count;
|
long reloc_count;
|
|
|
|
if (link_info->relocatable)
|
|
(*link_info->callbacks->einfo)
|
|
(_("%P%F: --relax and -r may not be used together\n"));
|
|
|
/* We only do global relaxation once. It is not safe to do it multiple
|
/* We only do global relaxation once. It is not safe to do it multiple
|
times (see discussion of the "shrinks" array below). */
|
times (see discussion of the "shrinks" array below). */
|
*again = FALSE;
|
*again = FALSE;
|
|
|
if (reloc_size < 0)
|
if (reloc_size < 0)
|