* elf32-ppc.c: Formatting and comment fixes.

(ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol.
	(ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs.
This commit is contained in:
Alan Modra
2003-04-24 13:44:10 +00:00
parent 2c8714f20f
commit fc0bffd6e9
2 changed files with 41 additions and 20 deletions

@ -1,3 +1,9 @@
2003-04-24 Alan Modra <amodra@bigpond.net.au>
* elf32-ppc.c: Formatting and comment fixes.
(ELIMINATE_COPY_RELOCS): Move before ppc_elf_copy_indirect_symbol.
(ppc_elf_copy_indirect_symbol): Copy flags here for weakdefs.
2003-04-24 Dhananjay Deshpande <dhananjayd@kpitcummins.com>
* archures.c (bfd_mach_h8300hn, bfd_mach_h8300sn): Added.

@ -16,8 +16,9 @@
GNU General Public License for more details.
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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
along with this program; if not, write to the
Free Software Foundation, Inc., 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
/* This file is based on a preliminary PowerPC ELF ABI. The
information may not match the final PowerPC ELF ABI. It includes
@ -198,7 +199,7 @@ struct ppc_elf_link_hash_entry
struct ppc_elf_dyn_relocs *dyn_relocs;
/* Contexts in which symbol is used in the GOT (or TOC).
TLS_GD .. TLS_EXPLICIT bits are or'd into the mask as the
TLS_GD .. TLS_TLS bits are or'd into the mask as the
corresponding relocs are encountered during check_relocs.
tls_optimize clears TLS_GD .. TLS_TPREL when optimizing to
indicate the corresponding GOT entry type is not needed. */
@ -319,6 +320,12 @@ ppc_elf_link_hash_table_create (abfd)
return &ret->elf.root;
}
/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
copying dynamic variables from a shared lib into an app's dynbss
section, and instead use a dynamic relocation to point into the
shared lib. */
#define ELIMINATE_COPY_RELOCS 1
/* Copy the extra info we tack onto an elf_link_hash_entry. */
static void
@ -367,6 +374,15 @@ ppc_elf_copy_indirect_symbol (bed, dir, ind)
edir->tls_mask |= eind->tls_mask;
if (ELIMINATE_COPY_RELOCS && ind->root.type != bfd_link_hash_indirect)
/* If called to transfer flags for a weakdef during processing
of elf_adjust_dynamic_symbol, don't copy ELF_LINK_NON_GOT_REF.
We clear it ourselves for ELIMINATE_COPY_RELOCS. */
dir->elf_link_hash_flags |=
(ind->elf_link_hash_flags & (ELF_LINK_HASH_REF_DYNAMIC
| ELF_LINK_HASH_REF_REGULAR
| ELF_LINK_HASH_REF_REGULAR_NONWEAK));
else
_bfd_elf_link_hash_copy_indirect (bed, dir, ind);
}
@ -1613,10 +1629,14 @@ ppc_elf_howto_init ()
{
unsigned int i, type;
for (i = 0; i < sizeof (ppc_elf_howto_raw) / sizeof (ppc_elf_howto_raw[0]); i++)
for (i = 0;
i < sizeof (ppc_elf_howto_raw) / sizeof (ppc_elf_howto_raw[0]);
i++)
{
type = ppc_elf_howto_raw[i].type;
BFD_ASSERT (type < sizeof (ppc_elf_howto_table) / sizeof (ppc_elf_howto_table[0]));
if (type >= (sizeof (ppc_elf_howto_table)
/ sizeof (ppc_elf_howto_table[0])))
abort ();
ppc_elf_howto_table[type] = &ppc_elf_howto_raw[i];
}
}
@ -1630,7 +1650,8 @@ ppc_elf_howto_init ()
2/ The branch is predicted as not taken.
3/ The branch is taken.
4/ The branch is located in the last 5 words of a page.
(The EOP limit is 5 by default but may be specified as any value from 1-10.)
(The EOP limit is 5 by default but may be specified as any value
from 1-10.)
Our software solution is to detect these problematic branches in a
linker pass and modify them as follows:
@ -2455,12 +2476,6 @@ ppc_elf_create_dynamic_sections (abfd, info)
return bfd_set_section_flags (abfd, s, flags);
}
/* If ELIMINATE_COPY_RELOCS is non-zero, the linker will try to avoid
copying dynamic variables from a shared lib into an app's dynbss
section, and instead use a dynamic relocation to point into the
shared lib. */
#define ELIMINATE_COPY_RELOCS 1
/* Adjust a symbol defined by a dynamic object and referenced by a
regular object. The current definition is in some section of the
dynamic object, but we're not including those sections. We have to