about summary refs log tree commit diff
path: root/elf/link.h
diff options
context:
space:
mode:
Diffstat (limited to 'elf/link.h')
-rw-r--r--elf/link.h20
1 files changed, 17 insertions, 3 deletions
diff --git a/elf/link.h b/elf/link.h
index 7e0b60793f..95d8f0912d 100644
--- a/elf/link.h
+++ b/elf/link.h
@@ -137,6 +137,12 @@ struct link_map
     unsigned int l_global:1;	/* Nonzero if object in _dl_global_scope.  */
     unsigned int l_reserved:2;	/* Reserved for internal use.  */
   };
+
+
+/* Function used as argument for `_dl_receive_error' function.  The
+   arguments are the error string and the objname the error occurred
+   in.  */
+typedef void (*receiver_fct) (const char *, const char *);
 
 /* Internal functions of the run-time dynamic linker.
    These can be accessed if you link again the dynamic linker
@@ -161,6 +167,11 @@ extern int _dl_sysdep_open_zero_fill (void); /* dl-sysdep.c */
    are concatenated to form the message to print.  */
 extern void _dl_sysdep_message (const char *string, ...);
 
+/* OS-dependent function to write a message on the standard error.
+   All arguments are `const char *'; args until a null pointer
+   are concatenated to form the message to print.  */
+extern void _dl_sysdep_error (const char *string, ...);
+
 /* OS-dependent function to give a fatal error message and exit
    when the dynamic linker fails before the program is fully linked.
    All arguments are `const char *'; args until a null pointer
@@ -177,11 +188,9 @@ extern int _dl_secure;
    zero; OBJECT is the name of the problematical shared object, or null if
    it is a general problem; ERRSTRING is a string describing the specific
    problem.  */
-
 extern void _dl_signal_error (int errcode,
 			      const char *object,
-			      const char *errstring)
-     __attribute__ ((__noreturn__));
+			      const char *errstring);
 
 /* Call OPERATE, catching errors from `dl_signal_error'.  If there is no
    error, *ERRSTRING is set to null.  If there is an error, *ERRSTRING and
@@ -192,6 +201,11 @@ extern int _dl_catch_error (char **errstring,
 			    const char **object,
 			    void (*operate) (void));
 
+/* Call OPERATE, receiving errors from `dl_signal_error'.  Unlike
+   `_dl_catch_error' the operation is resumed after the OPERATE
+   function returns.  */
+extern void _dl_receive_error (receiver_fct fct, void (*operate) (void));
+
 
 /* Helper function for <dlfcn.h> functions.  Runs the OPERATE function via
    _dl_catch_error.  Returns zero for success, nonzero for failure; and