~ubuntu-core-dev/binutils/pkg-ubuntu

« back to all changes in this revision

Viewing changes to patches/203-hjl-binutils-indirect.patch

  • Committer: Matthias Klose
  • Date: 2010-10-09 13:07:13 UTC
  • Revision ID: doko@canonical.com-20101009130713-iptx0vgihxfakurj
- refresh patches

Show diffs side-by-side

added added

removed removed

Lines of Context:
42
42
 
43
43
--- a/bfd/elflink.c
44
44
+++ b/bfd/elflink.c
45
 
@@ -898,6 +898,33 @@
 
45
@@ -899,6 +899,33 @@
46
46
     }
47
47
 }
48
48
 
76
76
 /* This function is called when we want to define a new symbol.  It
77
77
    handles the various cases which arise when we find a definition in
78
78
    a dynamic object, or when there is already a definition in a
79
 
@@ -926,6 +953,7 @@
 
79
@@ -927,6 +954,7 @@
80
80
 {
81
81
   asection *sec, *oldsec;
82
82
   struct elf_link_hash_entry *h;
84
84
   struct elf_link_hash_entry *flip;
85
85
   int bind;
86
86
   bfd *oldbfd;
87
 
@@ -964,8 +992,9 @@
 
87
@@ -965,8 +993,9 @@
88
88
   if (!(*bed->relocs_compatible) (abfd->xvec, info->output_bfd->xvec))
89
89
     return TRUE;
90
90
 
96
96
   while (h->root.type == bfd_link_hash_indirect
97
97
         || h->root.type == bfd_link_hash_warning)
98
98
     h = (struct elf_link_hash_entry *) h->root.u.i.link;
99
 
@@ -1137,23 +1166,11 @@
 
99
@@ -1138,23 +1167,11 @@
100
100
   /* We need to remember if a symbol has a definition in a dynamic
101
101
      object or is weak in all dynamic objects. Internal and hidden
102
102
      visibility will make it unavailable to dynamic objects.  */
124
124
     }
125
125
 
126
126
   /* If the old symbol has non-default visibility, we ignore the new
127
 
@@ -1165,6 +1182,7 @@
 
127
@@ -1166,6 +1183,7 @@
128
128
       *skip = TRUE;
129
129
       /* Make sure this symbol is dynamic.  */
130
130
       h->ref_dynamic = 1;
132
132
       /* A protected symbol has external availability. Make sure it is
133
133
         recorded as dynamic.
134
134
 
135
 
@@ -1717,6 +1735,7 @@
 
135
@@ -1718,6 +1736,7 @@
136
136
          if (! dynamic)
137
137
            {
138
138
              if (! info->executable
140
140
                  || hi->ref_dynamic)
141
141
                *dynsym = TRUE;
142
142
            }
143
 
@@ -3867,6 +3886,7 @@
 
143
@@ -3862,6 +3881,7 @@
144
144
       flagword flags;
145
145
       const char *name;
146
146
       struct elf_link_hash_entry *h;
148
148
       bfd_boolean definition;
149
149
       bfd_boolean size_change_ok;
150
150
       bfd_boolean type_change_ok;
151
 
@@ -4186,6 +4206,9 @@
 
151
@@ -4181,6 +4201,9 @@
152
152
        goto error_free_vers;
153
153
 
154
154
       h = *sym_hash;
158
158
       while (h->root.type == bfd_link_hash_indirect
159
159
             || h->root.type == bfd_link_hash_warning)
160
160
        h = (struct elf_link_hash_entry *) h->root.u.i.link;
161
 
@@ -4377,22 +4400,36 @@
 
161
@@ -4373,22 +4396,36 @@
162
162
                      h->dynamic_def = 1;
163
163
                    }
164
164
                }
205
205
                dynsym = TRUE;
206
206
            }
207
207
 
208
 
@@ -8437,6 +8474,10 @@
 
208
@@ -8441,6 +8478,10 @@
209
209
   if (!is_elf_hash_table (info->hash))
210
210
     return FALSE;
211
211
 
216
216
   switch (h->root.type)
217
217
     {
218
218
     default:
219
 
@@ -8654,11 +8695,17 @@
 
219
@@ -8658,11 +8699,17 @@
220
220
       && !h->dynamic_weak
221
221
       && ! elf_link_check_versioned_symbol (finfo->info, bed, h))
222
222
     {
236
236
         ELF_ST_VISIBILITY (h->other) == STV_INTERNAL
237
237
         ? "internal"
238
238
         : ELF_ST_VISIBILITY (h->other) == STV_HIDDEN
239
 
@@ -8885,6 +8932,23 @@
 
239
@@ -8889,6 +8936,23 @@
240
240
     {
241
241
       bfd_byte *esym;
242
242