Enable styling by default on Cygwin
[deliverable/binutils-gdb.git] / ld / plugin.c
index fcd864a117ca576efbf6b8562f9266c620391579..f8d3ec8e8b2c7f6cb527f5b0f99de29aa9fb4cd6 100644 (file)
@@ -1,5 +1,5 @@
 /* Plugin control for the GNU linker.
-   Copyright (C) 2010-2019 Free Software Foundation, Inc.
+   Copyright (C) 2010-2020 Free Software Foundation, Inc.
 
    This file is part of the GNU Binutils.
 
@@ -23,6 +23,7 @@
 #include "bfd.h"
 #include "bfdlink.h"
 #include "bfdver.h"
+#include "ctf-api.h"
 #include "ld.h"
 #include "ldmain.h"
 #include "ldmisc.h"
@@ -403,12 +404,6 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
       flags = BSF_GLOBAL;
       section = bfd_com_section_ptr;
       asym->value = ldsym->size;
-      /* For ELF targets, set alignment of common symbol to 1.  */
-      if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
-       {
-         ((elf_symbol_type *) asym)->internal_elf_sym.st_shndx = SHN_COMMON;
-         ((elf_symbol_type *) asym)->internal_elf_sym.st_value = 1;
-       }
       break;
 
     default:
@@ -417,7 +412,6 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
   asym->flags = flags;
   asym->section = section;
 
-  /* Visibility only applies on ELF targets.  */
   if (bfd_get_flavour (abfd) == bfd_target_elf_flavour)
     {
       elf_symbol_type *elfsym = elf_symbol_from (abfd, asym);
@@ -425,6 +419,13 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
 
       if (!elfsym)
        einfo (_("%F%P: %s: non-ELF symbol in ELF BFD!\n"), asym->name);
+
+      if (ldsym->def == LDPK_COMMON)
+       {
+         elfsym->internal_elf_sym.st_shndx = SHN_COMMON;
+         elfsym->internal_elf_sym.st_value = 1;
+       }
+
       switch (ldsym->visibility)
        {
        default:
@@ -445,9 +446,7 @@ asymbol_from_plugin_symbol (bfd *abfd, asymbol *asym,
          visibility = STV_HIDDEN;
          break;
        }
-      elfsym->internal_elf_sym.st_other
-       = (visibility | (elfsym->internal_elf_sym.st_other
-                        & ~ELF_ST_VISIBILITY (-1)));
+      elfsym->internal_elf_sym.st_other |= visibility;
     }
 
   return LDPS_OK;
@@ -659,9 +658,9 @@ is_visible_from_outside (struct ld_plugin_symbol *lsym,
   return FALSE;
 }
 
-/* Return LTO kind string name that corresponds to INDEX enum value.  */
+/* Return LTO kind string name that corresponds to IDX enum value.  */
 static const char *
-get_lto_kind (unsigned int index)
+get_lto_kind (unsigned int idx)
 {
   static char buffer[64];
   const char *lto_kind_str[5] =
@@ -673,16 +672,16 @@ get_lto_kind (unsigned int index)
     "COMMON"
   };
 
-  if (index < ARRAY_SIZE (lto_kind_str))
-    return lto_kind_str [index];
+  if (idx < ARRAY_SIZE (lto_kind_str))
+    return lto_kind_str [idx];
 
-  sprintf (buffer, _("unknown LTO kind value %x"), index);
+  sprintf (buffer, _("unknown LTO kind value %x"), idx);
   return buffer;
 }
 
-/* Return LTO resolution string name that corresponds to INDEX enum value.  */
+/* Return LTO resolution string name that corresponds to IDX enum value.  */
 static const char *
-get_lto_resolution (unsigned int index)
+get_lto_resolution (unsigned int idx)
 {
   static char buffer[64];
   static const char *lto_resolution_str[10] =
@@ -699,16 +698,16 @@ get_lto_resolution (unsigned int index)
     "PREVAILING_DEF_IRONLY_EXP",
   };
 
-  if (index < ARRAY_SIZE (lto_resolution_str))
-    return lto_resolution_str [index];
+  if (idx < ARRAY_SIZE (lto_resolution_str))
+    return lto_resolution_str [idx];
 
-  sprintf (buffer, _("unknown LTO resolution value %x"), index);
+  sprintf (buffer, _("unknown LTO resolution value %x"), idx);
   return buffer;
 }
 
-/* Return LTO visibility string name that corresponds to INDEX enum value.  */
+/* Return LTO visibility string name that corresponds to IDX enum value.  */
 static const char *
-get_lto_visibility (unsigned int index)
+get_lto_visibility (unsigned int idx)
 {
   static char buffer[64];
   const char *lto_visibility_str[4] =
@@ -719,10 +718,10 @@ get_lto_visibility (unsigned int index)
     "HIDDEN"
   };
 
-  if (index < ARRAY_SIZE (lto_visibility_str))
-    return lto_visibility_str [index];
+  if (idx < ARRAY_SIZE (lto_visibility_str))
+    return lto_visibility_str [idx];
 
-  sprintf (buffer, _("unknown LTO visibility value %x"), index);
+  sprintf (buffer, _("unknown LTO visibility value %x"), idx);
   return buffer;
 }
 
@@ -749,7 +748,7 @@ get_symbols (const void *handle, int nsyms, struct ld_plugin_symbol *syms,
       if (syms[n].def != LDPK_UNDEF && syms[n].def != LDPK_WEAKUNDEF)
        {
          blhe = h;
-         if (blhe)
+         if (blhe && link_info.wrap_hash != NULL)
            {
              /* Check if a symbol is a wrapper symbol.  */
              struct bfd_link_hash_entry *unwrap
This page took 0.026351 seconds and 4 git commands to generate.