From 83c23fca5b413733cce07a1a7b2716ffdd978985 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Mon, 6 Nov 1995 19:36:29 +0000 Subject: [PATCH] * xcofflink.c (xcoff_link_add_symbols): Set the alignment power of the created .tc section to 2. (xcoff_mark): Don't keep a .loader reloc for a call to an undefined symbol when creating a shared library. (xcoff_build_ldsyms): When creating a shared library, generate global linkage code for a call to an undefined symbol. --- bfd/ChangeLog | 9 +++++++++ bfd/xcofflink.c | 15 ++++++++++----- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/bfd/ChangeLog b/bfd/ChangeLog index b8fc050..8720b17 100644 --- a/bfd/ChangeLog +++ b/bfd/ChangeLog @@ -1,3 +1,12 @@ +Mon Nov 6 14:34:07 1995 Ian Lance Taylor + + * xcofflink.c (xcoff_link_add_symbols): Set the alignment power of + the created .tc section to 2. + (xcoff_mark): Don't keep a .loader reloc for a call to an + undefined symbol when creating a shared library. + (xcoff_build_ldsyms): When creating a shared library, generate + global linkage code for a call to an undefined symbol. + Sun Nov 5 21:44:13 1995 Ken Raeburn * Makefile.in (CFILES): Rebuild list from BFD_LIBS, ALL_MACHINES, diff --git a/bfd/xcofflink.c b/bfd/xcofflink.c index 2c65879..189d73b 100644 --- a/bfd/xcofflink.c +++ b/bfd/xcofflink.c @@ -939,6 +939,7 @@ xcoff_link_add_symbols (abfd, info) goto error_return; xcoff_hash_table (info)->toc_section = tsec; tsec->flags |= SEC_ALLOC | SEC_LOAD | SEC_HAS_CONTENTS | SEC_IN_MEMORY; + tsec->alignment_power = 2; } /* Likewise for the .debug section. */ if (xcoff_hash_table (info)->debug_section == NULL) @@ -2066,7 +2067,8 @@ xcoff_mark (info, sec) || h->root.type == bfd_link_hash_common || ((h->flags & XCOFF_CALLED) != 0 && (h->flags & XCOFF_DEF_REGULAR) == 0 - && (h->flags & XCOFF_REF_DYNAMIC) != 0 + && ((h->flags & XCOFF_REF_DYNAMIC) != 0 + || info->shared) && (h->root.type == bfd_link_hash_undefined || h->root.type == bfd_link_hash_undefweak) && h->root.root.string[0] == '.')) @@ -2734,13 +2736,15 @@ xcoff_build_ldsyms (h, p) h->flags |= XCOFF_MARK; /* If this symbol is called, and it is defined in a dynamic object, - then we need to set up global linkage code for it. (Unless we - did garbage collection and we didn't need this symbol.) */ + or if we are creating a dynamic object and it is not defined at + all, then we need to set up global linkage code for it. (Unless + we did garbage collection and we didn't need this symbol.) */ if ((h->flags & XCOFF_CALLED) != 0 && (h->flags & XCOFF_DEF_REGULAR) == 0 - && (h->flags & XCOFF_REF_DYNAMIC) != 0 && (h->root.type == bfd_link_hash_undefined || h->root.type == bfd_link_hash_undefweak) + && ((h->flags & XCOFF_REF_DYNAMIC) != 0 + || ldinfo->info->shared) && h->root.root.string[0] == '.' && (! xcoff_hash_table (ldinfo->info)->gc || (h->flags & XCOFF_MARK) != 0)) @@ -2761,7 +2765,8 @@ xcoff_build_ldsyms (h, p) BFD_ASSERT ((hds->root.type == bfd_link_hash_undefined || hds->root.type == bfd_link_hash_undefweak) && (hds->flags & XCOFF_DEF_REGULAR) == 0 - && (hds->flags & XCOFF_REF_DYNAMIC) != 0); + && ((hds->flags & XCOFF_REF_DYNAMIC) != 0 + || ldinfo->info->shared)); hds->flags |= XCOFF_MARK; if (hds->toc_section == NULL) { -- 2.7.4