[x86] Resolve non-PIC undefweak symbols in executable
[deliverable/binutils-gdb.git] / include / bfdlink.h
index b9dc139d8fe1fb27aa8ad5af45e93eedaef43442..860811c2a7867e21dbd649cc862813dde10ead09 100644 (file)
@@ -1,5 +1,5 @@
 /* bfdlink.h -- header file for BFD link routines
-   Copyright (C) 1993-2015 Free Software Foundation, Inc.
+   Copyright (C) 1993-2016 Free Software Foundation, Inc.
    Written by Steve Chamberlain and Ian Lance Taylor, Cygnus Support.
 
    This file is part of BFD, the Binary File Descriptor library.
@@ -259,22 +259,30 @@ struct flag_info
 struct bfd_elf_dynamic_list;
 struct bfd_elf_version_tree;
 
-/* This structure holds all the information needed to communicate
-   between BFD and the linker when doing a link.  */
+/* Types of output.  */
 
-struct bfd_link_info
+enum output_type
 {
-  /* TRUE if BFD should generate a shared object (or a pie).  */
-  unsigned int shared: 1;
+  type_pde,
+  type_pie,
+  type_relocatable,
+  type_dll,
+};
 
-  /* TRUE if generating an executable, position independent or not.  */
-  unsigned int executable : 1;
+#define bfd_link_pde(info)        ((info)->type == type_pde)
+#define bfd_link_dll(info)        ((info)->type == type_dll)
+#define bfd_link_relocatable(info) ((info)->type == type_relocatable)
+#define bfd_link_pie(info)        ((info)->type == type_pie)
+#define bfd_link_executable(info)  (bfd_link_pde (info) || bfd_link_pie (info))
+#define bfd_link_pic(info)        (bfd_link_dll (info) || bfd_link_pie (info))
 
-  /* TRUE if generating a position independent executable.  */
-  unsigned int pie: 1;
+/* This structure holds all the information needed to communicate
+   between BFD and the linker when doing a link.  */
 
-  /* TRUE if BFD should generate a relocatable object file.  */
-  unsigned int relocatable: 1;
+struct bfd_link_info
+{
+  /* Output type.  */
+  ENUM_BITFIELD (output_type) type : 2;
 
   /* TRUE if BFD should pre-bind symbols in a shared object.  */
   unsigned int symbolic: 1;
@@ -423,6 +431,15 @@ struct bfd_link_info
   /* TRUE if BND prefix in PLT entries is always generated.  */
   unsigned int bndplt: 1;
 
+  /* TRUE if generation of .interp/PT_INTERP should be suppressed.  */
+  unsigned int nointerp: 1;
+
+  /* TRUE if generate a 1-byte NOP as suffix for x86 call instruction.  */
+  unsigned int call_nop_as_suffix : 1;
+
+  /* The 1-byte NOP for x86 call instruction.  */
+  char call_nop_byte;
+
   /* Char that may appear as the first char of a symbol, but should be
      skipped (like symbol_leading_char) when looking up symbols in
      wrap_hash.  Used by PowerPC Linux for 'dot' symbols.  */
@@ -525,6 +542,10 @@ struct bfd_link_info
      backend to decide.  */
   int extern_protected_data;
 
+  /* > 0 to treat undefined weak symbol in the executable as dynamic,
+     requiring dynamic relocation.  */
+  int dynamic_undefined_weak;
+
   /* Non-zero if auto-import thunks for DATA items in pei386 DLLs
      should be generated/linked against.  Set to 1 if this feature
      is explicitly requested by the user, -1 if enabled by default.  */
This page took 0.024472 seconds and 4 git commands to generate.