From de42613540de8d3d70b5f14a14923cab7bd694d0 Mon Sep 17 00:00:00 2001 From: Florian Weimer Date: Mon, 25 May 2020 18:17:27 +0200 Subject: elf: Turn _dl_printf, _dl_error_printf, _dl_fatal_printf into functions This change makes it easier to set a breakpoint on these calls. This also addresses the issue that including without 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 --- sysdeps/generic/ldsodefs.h | 19 +++++++------------ 1 file changed, 7 insertions(+), 12 deletions(-) (limited to 'sysdeps/generic') diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 5ff4a2831b..d08b97a5ef 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -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 -- cgit 1.4.1