]> sourceware.org Git - glibc.git/commitdiff
elf: Turn _dl_printf, _dl_error_printf, _dl_fatal_printf into functions
authorFlorian Weimer <fweimer@redhat.com>
Mon, 25 May 2020 16:17:27 +0000 (18:17 +0200)
committerFlorian Weimer <fweimer@redhat.com>
Mon, 25 May 2020 16:17:27 +0000 (18:17 +0200)
This change makes it easier to set a breakpoint on these calls.

This also addresses the issue that including <ldsodefs.h> without
<unistd.h> does not result usable _dl_*printf macros because of the
use of the STD*_FILENO macros there.

(The private symbol for _dl_fatal_printf will go away again
once the exception handling implementation is unified between
libc and ld.so.)

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
elf/Versions
elf/dl-misc.c
sysdeps/generic/ldsodefs.h
sysdeps/mach/hurd/i386/localplt.data

index 3be879c4adfa74c7a486b6018998adb0e4f51712..be88c48e6d45a937c1d6a60c499aeff6c83cc5e5 100644 (file)
@@ -58,7 +58,7 @@ ld {
     _dl_allocate_tls; _dl_allocate_tls_init;
     _dl_argv; _dl_find_dso_for_object; _dl_get_tls_static_info;
     _dl_deallocate_tls; _dl_make_stack_executable;
-    _dl_rtld_di_serinfo; _dl_starting_up;
+    _dl_rtld_di_serinfo; _dl_starting_up; _dl_fatal_printf;
     _rtld_global; _rtld_global_ro;
 
     # Only here for gdb while a better method is developed.
index e6cf247b46c54335a54cc15fa2501fbe97a4fe27..ab70481fdadc5a69d93ede4145afdb5a226eb892 100644 (file)
@@ -275,6 +275,37 @@ _dl_dprintf (int fd, const char *fmt, ...)
   va_end (arg);
 }
 
+void
+_dl_printf (const char *fmt, ...)
+{
+  va_list arg;
+
+  va_start (arg, fmt);
+  _dl_debug_vdprintf (STDOUT_FILENO, 0, fmt, arg);
+  va_end (arg);
+}
+
+void
+_dl_error_printf (const char *fmt, ...)
+{
+  va_list arg;
+
+  va_start (arg, fmt);
+  _dl_debug_vdprintf (STDERR_FILENO, 0, fmt, arg);
+  va_end (arg);
+}
+
+void
+_dl_fatal_printf (const char *fmt, ...)
+{
+  va_list arg;
+
+  va_start (arg, fmt);
+  _dl_debug_vdprintf (STDERR_FILENO, 0, fmt, arg);
+  va_end (arg);
+  _exit (127);
+}
+rtld_hidden_def (_dl_fatal_printf)
 
 /* Test whether given NAME matches any of the names of the given object.  */
 int
index 5ff4a2831be8339985838c2b4c5eea827f10d214..d08b97a5ef22937b9dd04226e3366aa8cf68ce90 100644 (file)
@@ -751,24 +751,19 @@ _dl_dprintf (int fd, const char *fmt, ...)
 
 /* Write a message on the specified descriptor standard output.  The
    parameters are interpreted as for a `printf' call.  */
-#define _dl_printf(fmt, args...) \
-  _dl_dprintf (STDOUT_FILENO, fmt, ##args)
+void _dl_printf (const char *fmt, ...)
+  attribute_hidden __attribute__ ((__format__ (__printf__, 1, 2)));
 
 /* Write a message on the specified descriptor standard error.  The
    parameters are interpreted as for a `printf' call.  */
-#define _dl_error_printf(fmt, args...) \
-  _dl_dprintf (STDERR_FILENO, fmt, ##args)
+void _dl_error_printf (const char *fmt, ...)
+  attribute_hidden __attribute__ ((__format__ (__printf__, 1, 2)));
 
 /* Write a message on the specified descriptor standard error and exit
    the program.  The parameters are interpreted as for a `printf' call.  */
-#define _dl_fatal_printf(fmt, args...) \
-  do                                                                         \
-    {                                                                        \
-      _dl_dprintf (STDERR_FILENO, fmt, ##args);                                      \
-      _exit (127);                                                           \
-    }                                                                        \
-  while (1)
-
+void _dl_fatal_printf (const char *fmt, ...)
+  __attribute__ ((__format__ (__printf__, 1, 2), __noreturn__));
+rtld_hidden_proto (_dl_fatal_printf)
 
 /* An exception raised by the _dl_signal_error function family and
    caught by _dl_catch_error function family.  Exceptions themselves
index 102323e64f76afc1eab15a63a4b04c294c091404..541c3f32aee1bda36e7e68bb2c392e6ff24fabba 100644 (file)
@@ -43,6 +43,7 @@ ld.so: _dl_allocate_tls_init
 ld.so: _dl_exception_create
 ld.so: _dl_exception_create_format
 ld.so: _dl_exception_free
+ld.so: _dl_fatal_printf
 ld.so: _dl_find_dso_for_object
 ld.so: _dl_init_first
 ld.so: _dl_mcount
This page took 0.053276 seconds and 5 git commands to generate.