Better handking for unresolved symbols
[deliverable/binutils-gdb.git] / include / bfdlink.h
index e8fc65f4bd0a80d57bfffbfd2c5576197434a73e..c174dcdc698fe075d877e90547b6ebf344a82ca4 100644 (file)
@@ -198,6 +198,19 @@ struct bfd_sym_chain
   const char *name;
 };
 \f
+/* How to handle unresolved symbols.
+   There are four possibilities which are enumerated below:  */
+enum report_method
+{
+  /* This is the initial value when then link_info structure is created.
+     It allows the various stages of the linker to determine whether they
+     allowed to set the value.  */
+  RM_NOT_YET_SET = 0,
+  RM_IGNORE,
+  RM_GENERATE_WARNING,
+  RM_GENERATE_ERROR
+};
+
 /* This structure holds all the information needed to communicate
    between BFD and the linker when doing a link.  */
 
@@ -238,24 +251,6 @@ struct bfd_link_info
      need much more time and therefore must be explicitly selected.  */
   unsigned int optimize: 1;
 
-  /* TRUE if BFD should generate errors for undefined symbols
-     even if generating a shared object.  */
-  unsigned int no_undefined: 1;
-
-  /* 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.  */
-  unsigned int allow_shlib_undefined: 1;
-
   /* TRUE if ok to have multiple definition.  */
   unsigned int allow_multiple_definition: 1;
 
@@ -305,6 +300,17 @@ struct bfd_link_info
      flags.  */
   unsigned int noexecstack: 1;
 
+  /* What to do with unresolved symbols in an object file.
+     When producing static binaries the default is GENERATE_ERROR.
+     When producing dynamic binaries the default is IGNORE.  The
+     assumption with dynamic binaries is that the reference will be
+     resolved at load/execution time.  */
+  enum report_method unresolved_syms_in_objects;
+
+  /* What to do with unresolved symbols in a shared library.
+     The same defaults apply.  */
+  enum report_method unresolved_syms_in_shared_libs;
+
   /* Which symbols to strip.  */
   enum bfd_link_strip strip;
 
This page took 0.024636 seconds and 4 git commands to generate.