summaryrefslogtreecommitdiffstats
path: root/toolchain/binutils/patches/2.17/501-avr32-sreldyn-fix.patch
blob: 84e295b736b6d8011abdca5e764c8f6a563cc2a9 (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
Index: binutils-2.17/bfd/elf32-avr32.c
===================================================================
--- binutils-2.17.orig/bfd/elf32-avr32.c	2007-06-28 09:19:36.580675344 +0200
+++ binutils-2.17/bfd/elf32-avr32.c	2007-06-28 09:19:38.494384416 +0200
@@ -298,7 +298,7 @@
   /* Shortcuts to get to dynamic linker sections.  */
   asection *sgot;
   asection *srelgot;
-  asection *sreldyn;
+  /* asection *sreldyn; */
   asection *sstub;
 
   /* We use a variation of Pigeonhole Sort to sort the GOT.  After the
@@ -506,14 +506,14 @@
   if (!avr32_elf_create_got_section (dynobj, info))
     return FALSE;
 
-  if (!htab->sreldyn)
+  /* if (!htab->sreldyn)
     htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn",
-					   flags | SEC_READONLY, 2);
+					   flags | SEC_READONLY, 2); */
   if (!htab->sstub)
     htab->sstub = create_dynamic_section(dynobj, ".stub",
 					 flags | SEC_READONLY | SEC_CODE, 2);
 
-  if (!htab->sreldyn || !htab->sstub)
+  if (/* !htab->sreldyn || */ !htab->sstub)
     return FALSE;
 
   return TRUE;
@@ -669,12 +669,12 @@
 	  if ((info->shared || h != NULL)
 	      && (sec->flags & SEC_ALLOC))
 	    {
-	      if (htab->sreldyn == NULL)
+	      if (htab->srelgot == NULL)
 		{
-		  htab->sreldyn = create_dynamic_section(dynobj, ".rela.dyn",
+		  htab->srelgot = create_dynamic_section(dynobj, ".rela.got",
 							 bed->dynamic_sec_flags
 							 | SEC_READONLY, 2);
-		  if (htab->sreldyn == NULL)
+		  if (htab->srelgot == NULL)
 		    return FALSE;
 		}
 
@@ -1062,7 +1062,7 @@
     {
       pr_debug("Allocating %d dynamic reloc against symbol %s...\n",
 	       havr->possibly_dynamic_relocs, h->root.root.string);
-      htab->sreldyn->size += (havr->possibly_dynamic_relocs
+      htab->srelgot->size += (havr->possibly_dynamic_relocs
 			      * sizeof(Elf32_External_Rela));
     }
 
@@ -1156,7 +1156,7 @@
   /* Allocate space for local sym dynamic relocs */
   BFD_ASSERT(htab->local_dynamic_relocs == 0 || info->shared);
   if (htab->local_dynamic_relocs)
-    htab->sreldyn->size += (htab->local_dynamic_relocs
+    htab->srelgot->size += (htab->local_dynamic_relocs
 			    * sizeof(Elf32_External_Rela));
 
   /* We now have determined the sizes of the various dynamic
@@ -3191,7 +3191,6 @@
   struct got_entry **local_got_ents;
   asection *sgot;
   asection *srelgot;
-  asection *sreldyn;
 
   pr_debug("(6) relocate section %s:<%s> (size 0x%lx)\n",
 	   input_bfd->filename, input_section->name, input_section->size);
@@ -3207,7 +3206,6 @@
   local_got_ents = elf_local_got_ents(input_bfd);
   sgot = htab->sgot;
   srelgot = htab->srelgot;
-  sreldyn = htab->sreldyn;
 
   relend = relocs + input_section->reloc_count;
   for (rel = relocs; rel < relend; rel++)
@@ -3444,15 +3442,15 @@
 		    }
 		}
 
-	      pr_debug("sreldyn reloc_count: %d, size %lu\n",
-		       sreldyn->reloc_count, sreldyn->size);
+	      pr_debug("srelgot reloc_count: %d, size %lu\n",
+		       srelgot->reloc_count, srelgot->size);
 
-	      loc = sreldyn->contents;
-	      loc += sreldyn->reloc_count++ * sizeof(Elf32_External_Rela);
+	      loc = srelgot->contents;
+	      loc += srelgot->reloc_count++ * sizeof(Elf32_External_Rela);
 	      bfd_elf32_swap_reloca_out(output_bfd, &outrel, loc);
 
-	      BFD_ASSERT(sreldyn->reloc_count * sizeof(Elf32_External_Rela)
-			 <= sreldyn->size);
+	      BFD_ASSERT(srelgot->reloc_count * sizeof(Elf32_External_Rela)
+			 <= srelgot->size);
 
 	      if (!relocate)
 		continue;