summaryrefslogtreecommitdiff
path: root/cross/binutils/patches/patch-ac
blob: 30a0d7d7e8044648f8239660971a8390d54706a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
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;