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 --- elf/Versions | 2 +- elf/dl-misc.c | 31 +++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) (limited to 'elf') diff --git a/elf/Versions b/elf/Versions index 3be879c..be88c48 100644 --- a/elf/Versions +++ b/elf/Versions @@ -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. diff --git a/elf/dl-misc.c b/elf/dl-misc.c index e6cf247..ab70481 100644 --- a/elf/dl-misc.c +++ b/elf/dl-misc.c @@ -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 -- cgit v1.1