* bfdlink.h (struct bfd_link_info): New member export_dynamic.
[deliverable/binutils-gdb.git] / include / bfdlink.h
index f7f113c37e356852198eb05945263b96aef3c0f5..3308f826e8035c0cb9bcc889296bf7e4ba29a73a 100644 (file)
@@ -1,5 +1,6 @@
 /* bfdlink.h -- header file for BFD link routines
-   Copyright 1993, 94, 95, 96, 97, 1999 Free Software Foundation, Inc.
+   Copyright 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000
+   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.
@@ -34,6 +35,8 @@ enum bfd_link_strip
    if strip_all is used.  */
 enum bfd_link_discard
 {
+  discard_sec_merge,   /* Discard local temporary symbols in SEC_MERGE
+                          sections.  */
   discard_none,                /* Don't discard any locals.  */
   discard_l,           /* Discard local temporary symbols.  */
   discard_all          /* Discard all locals.  */
@@ -179,6 +182,8 @@ struct bfd_link_info
   const struct bfd_link_callbacks *callbacks;
   /* true if BFD should generate a relocateable object file.  */
   boolean relocateable;
+  /* true if BFD should generate relocation information in the final executable.  */
+  boolean emitrelocations;
   /* true if BFD should generate a "task linked" object file,
      similar to relocatable but also with globals converted to statics. */
   boolean task_link;
@@ -186,6 +191,9 @@ struct bfd_link_info
   boolean shared;
   /* true if BFD should pre-bind symbols in a shared object.  */
   boolean symbolic;
+  /* true if BFD should export all symbols in the dynamic symbol table
+     of an executable, rather than only those used.  */
+  boolean export_dynamic;
   /* true if shared objects should be linked directly, not shared.  */
   boolean static_link;
   /* true if the output file should be in a traditional format.  This
@@ -199,6 +207,19 @@ struct bfd_link_info
   /* true if BFD should generate errors for undefined symbols
      even if generating a shared object.  */
   boolean no_undefined;
+  /* true if BFD should allow undefined symbols in shared objects even
+     when no_undefined is set to disallow undefined symbols.  The net
+     result will be that undefined symbols in regular objects will
+     still trigger an error, but undefined symbols in shared objects
+     will be ignored.  The implementation of no_undefined makes the
+     assumption that the runtime linker will choke on undefined
+     symbols.  However there is at least one system (BeOS) where
+     undefined symbols in shared libraries is normal since the kernel
+     patches them at load time to select which function is most
+     appropriate for the current architecture.  I.E. dynamically
+     select an appropriate memset function.  Apparently it is also
+     normal for HPPA shared libraries to have undefined symbols.  */
+  boolean allow_shlib_undefined;
   /* Which symbols to strip.  */
   enum bfd_link_strip strip;
   /* Which local symbols to discard.  */
@@ -244,6 +265,15 @@ struct bfd_link_info
   /* The function to call when the executable or shared object is
      unloaded.  */
   const char *fini_function;
+
+  /* true if the new ELF dynamic tags are enabled. */ 
+  boolean new_dtags;
+
+  /* May be used to set DT_FLAGS for ELF. */
+  bfd_vma flags;
+
+  /* May be used to set DT_FLAGS_1 for ELF. */
+  bfd_vma flags_1;
 };
 
 /* This structures holds a set of callback functions.  These are
@@ -329,10 +359,13 @@ struct bfd_link_callbacks
   /* A function which is called when a relocation is attempted against
      an undefined symbol.  NAME is the symbol which is undefined.
      ABFD, SECTION and ADDRESS identify the location from which the
-     reference is made.  In some cases SECTION may be NULL.  */
+     reference is made. FATAL indicates whether an undefined symbol is
+     a fatal error or not. In some cases SECTION may be NULL.  */
   boolean (*undefined_symbol) PARAMS ((struct bfd_link_info *,
                                       const char *name, bfd *abfd,
-                                      asection *section, bfd_vma address));
+                                      asection *section,
+                                      bfd_vma address,
+                                      boolean fatal));
   /* A function which is called when a reloc overflow occurs.  NAME is
      the name of the symbol or section the reloc is against,
      RELOC_NAME is the name of the relocation, and ADDEND is any
This page took 0.026603 seconds and 4 git commands to generate.