Add --no-dynamic-linker option to ld, for static PIE use
[deliverable/binutils-gdb.git] / include / bfdlink.h
index 1b1582600a38f4f377ab09286fa15015b0d4d0dd..2ffb3d1ab56e396564aa042e80bf71495d910cf3 100644 (file)
@@ -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;
@@ -342,9 +350,9 @@ struct bfd_link_info
   /* TRUE if PT_GNU_RELRO segment should be created.  */
   unsigned int relro: 1;
 
-  /* TRUE if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
-     should be created.  */
-  unsigned int eh_frame_hdr: 1;
+  /* Nonzero if .eh_frame_hdr section and PT_GNU_EH_FRAME ELF segment
+     should be created.  1 for DWARF2 tables, 2 for compact tables.  */
+  unsigned int eh_frame_hdr_type: 2;
 
   /* TRUE if we should warn when adding a DT_TEXTREL to a shared object.  */
   unsigned int warn_shared_textrel: 1;
@@ -423,6 +431,9 @@ 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;
+
   /* 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.  */
@@ -431,6 +442,9 @@ struct bfd_link_info
   /* Separator between archive and filename in linker script filespecs.  */
   char path_separator;
 
+  /* Compress DWARF debug sections.  */
+  enum compressed_debug_section_type compress_debug;
+
   /* Default stack size.  Zero means default (often zero itself), -1
      means explicitly zero-sized.  */
   bfd_signed_vma stacksize;
This page took 0.02409 seconds and 4 git commands to generate.