diff options
Diffstat (limited to 'cross/binutils/patches/patch-ac')
-rw-r--r-- | cross/binutils/patches/patch-ac | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/cross/binutils/patches/patch-ac b/cross/binutils/patches/patch-ac new file mode 100644 index 00000000000..30a0d7d7e80 --- /dev/null +++ b/cross/binutils/patches/patch-ac @@ -0,0 +1,151 @@ +$NetBSD: patch-ac,v 1.1 1999/01/04 22:37:31 tv Exp $ + +--- ./bfd/elf32-mips.c.orig Fri May 1 11:48:09 1998 ++++ ./bfd/elf32-mips.c Mon Dec 28 17:43:20 1998 +@@ -155,6 +155,11 @@ + #define STUB_LI16 0x34180000 /* ori t8,zero,0 */ + #define MIPS_FUNCTION_STUB_SIZE (16) + ++#if 0 ++/* We no longer try to identify particular sections for the .dynsym ++ section. When we do, we wind up crashing if there are other random ++ sections with relocations. */ ++ + /* Names of sections which appear in the .dynsym section in an Irix 5 + executable. */ + +@@ -179,6 +184,8 @@ + + #define MIPS_TEXT_DYNSYM_SECNO (3) + ++#endif /* 0 */ ++ + /* The names of the runtime procedure table symbols used on Irix 5. */ + + static const char * const mips_elf_dynsym_rtproc_names[] = +@@ -2314,7 +2321,10 @@ + || strcmp (name, ".dynstr") == 0)) + { + hdr->sh_entsize = 0; ++#if 0 ++ /* This isn't how the Irix 6 linker behaves. */ + hdr->sh_info = SIZEOF_MIPS_DYNSYM_SECNAMES; ++#endif + } + else if (strcmp (name, ".got") == 0 + || strcmp (name, ".sdata") == 0 +@@ -3178,8 +3188,11 @@ + struct mips_elf_link_hash_table + { + struct elf_link_hash_table root; ++#if 0 ++ /* We no longer use this. */ + /* String section indices for the dynamic section symbols. */ + bfd_size_type dynsym_sec_strindex[SIZEOF_MIPS_DYNSYM_SECNAMES]; ++#endif + /* The number of .rtproc entries. */ + bfd_size_type procedure_count; + /* The size of the .compact_rel section (if SGI_COMPAT). */ +@@ -3264,7 +3277,6 @@ + bfd *abfd; + { + struct mips_elf_link_hash_table *ret; +- unsigned int i; + + ret = ((struct mips_elf_link_hash_table *) + bfd_alloc (abfd, sizeof (struct mips_elf_link_hash_table))); +@@ -3278,8 +3290,11 @@ + return NULL; + } + ++#if 0 ++ /* We no longer use this. */ + for (i = 0; i < SIZEOF_MIPS_DYNSYM_SECNAMES; i++) + ret->dynsym_sec_strindex[i] = (bfd_size_type) -1; ++#endif + ret->procedure_count = 0; + ret->compact_rel_size = 0; + ret->use_rld_obj_head = false; +@@ -6570,15 +6585,20 @@ + That means we must increment the dynamic symbol index of every + other dynamic symbol. */ + { +- const char * const *namep; + unsigned int c, i; +- bfd_size_type strindex; +- struct bfd_strtab_hash *dynstr; + struct mips_got_info *g; + + c = 0; + if (elf_hash_table (info)->dynamic_sections_created) + { ++#if 0 ++ /* We no longer try to restrict the set of sections which get ++ dynamic symbol table entries, since it fails if we have ++ other random sections which need dynamic relocations. */ ++ const char * const *namep; ++ bfd_size_type strindex; ++ struct bfd_strtab_hash *dynstr; ++ + if (SGI_COMPAT (output_bfd)) + { + c = SIZEOF_MIPS_DYNSYM_SECNAMES - 1; +@@ -6606,6 +6626,7 @@ + } + } + else ++#endif /* 0 */ + { + c = bfd_count_sections (output_bfd); + elf_link_hash_traverse (elf_hash_table (info), +@@ -6962,8 +6983,11 @@ + break; + + case DT_MIPS_UNREFEXTNO: +- /* XXX FIXME: */ ++#if 0 + dyn.d_un.d_val = SIZEOF_MIPS_DYNSYM_SECNAMES; ++#else ++ dyn.d_un.d_val = bfd_count_sections (output_bfd); ++#endif + bfd_elf32_swap_dyn_out (output_bfd, &dyn, dyncon); + break; + +@@ -7001,12 +7025,7 @@ + { + asection *sdynsym; + asection *s; +- unsigned int i; +- bfd_vma last; + Elf_Internal_Sym sym; +- long dindx; +- const char *name; +- const char * const * namep = mips_elf_dynsym_sec_names; + Elf32_compact_rel cpt; + + /* Set up the section symbols for the output sections. SGI sets +@@ -7015,6 +7034,16 @@ + sdynsym = bfd_get_section_by_name (dynobj, ".dynsym"); + if (sdynsym != NULL) + { ++#if 0 ++ const char *name; ++ const char * const * namep = mips_elf_dynsym_sec_names; ++ unsigned int i; ++ bfd_vma last; ++ long dindx; ++ ++ /* We no longer try to restrict the set of sections which get ++ dynamic symbol table entries, since it fails if we have ++ other random sections which need dynamic relocations. */ + if (SGI_COMPAT (output_bfd)) + { + sym.st_size = 0; +@@ -7059,6 +7088,7 @@ + SIZEOF_MIPS_DYNSYM_SECNAMES; + } + else ++#endif /* 0 */ + { + sym.st_size = 0; + sym.st_name = 0; |