summaryrefslogtreecommitdiff
path: root/cross/binutils/patches/patch-ac
diff options
context:
space:
mode:
Diffstat (limited to 'cross/binutils/patches/patch-ac')
-rw-r--r--cross/binutils/patches/patch-ac151
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;