* emultempl/ppc64elf.em (build_section_lists): Check return status
[deliverable/binutils-gdb.git] / ld / pe-dll.c
index 1430754842a6515abd282b4a17e9503fa539cd5e..b1a3737ad79dec04f77cf46b4edce21abc1d3692 100644 (file)
@@ -959,7 +959,7 @@ fill_edata (abfd, info)
      bfd *abfd;
      struct bfd_link_info *info ATTRIBUTE_UNUSED;
 {
-  int i, hint;
+  int s, hint;
   unsigned char *edirectory;
   unsigned long *eaddresses;
   unsigned long *enameptrs;
@@ -1000,13 +1000,16 @@ fill_edata (abfd, info)
 
   fill_exported_offsets (abfd, info);
 
-  /* Ok, now for the filling in part.  */
+  /* Ok, now for the filling in part.
+     Scan alphabetically - ie the ordering in the exports[] table,
+     rather than by ordinal - the ordering in the exported_symbol[]
+     table.  See dlltool.c and:
+        http://sources.redhat.com/ml/binutils/2003-04/msg00379.html
+     for more information.  */  
   hint = 0;
-  for (i = 0; i < export_table_size; i++)
+  for (s = 0; s < NE; s++)
     {
-      int s = exported_symbols[i];
-
-      if (s != -1)
+      if (pe_def_file->exports[s].ordinal != -1)
        {
          struct sec *ssec = exported_symbol_sections[s];
          unsigned long srva = (exported_symbol_offsets[s]
@@ -1020,6 +1023,7 @@ fill_edata (abfd, info)
          if (!pe_def_file->exports[s].flag_noname)
            {
              char *ename = pe_def_file->exports[s].name;
+
              bfd_put_32 (abfd, ERVA (enamestr), (void *) enameptrs);
              enameptrs++;
              strcpy (enamestr, ename);
@@ -1198,6 +1202,13 @@ generate_reloc (abfd, info)
                      reloc_data[total_relocs].type = 5;
                      total_relocs++;
                      break;
+                   case BITS_AND_SHIFT (24, 2):
+                     if (relocs[i]->howto->type == 5)
+                       /* This is an ARM_26D reloc, which is an ARM_26 reloc
+                          that has already been fully processed during a
+                          previous link stage, so ignore it here.  */
+                       break;
+                     /* Fall through.  */
                    default:
                      /* xgettext:c-format */
                      einfo (_("%XError: %d-bit reloc in dll\n"),
This page took 0.024466 seconds and 4 git commands to generate.