rtld: extract calculation of the format strings for trace into a helper

Reviewed by:	markj
Sponsored by:	The FreeBSD Foundation
MFC after:	1 week
Differential revision:	https://reviews.freebsd.org/D34716
This commit is contained in:
Konstantin Belousov 2022-03-30 23:35:37 +03:00
parent 20eeed6844
commit c25f36f630

View File

@ -4919,22 +4919,29 @@ symlook_obj1_gnu(SymLook *req, const Obj_Entry *obj)
return (ESRCH); return (ESRCH);
} }
static void
trace_calc_fmts(const char **main_local, const char **fmt1, const char **fmt2)
{
*main_local = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_PROGNAME);
if (*main_local == NULL)
*main_local = "";
*fmt1 = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_FMT1);
if (*fmt1 == NULL)
*fmt1 = "\t%o => %p (%x)\n";
*fmt2 = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_FMT2);
if (*fmt2 == NULL)
*fmt2 = "\t%o (%x)\n";
}
static void static void
trace_loaded_objects(Obj_Entry *obj) trace_loaded_objects(Obj_Entry *obj)
{ {
const char *fmt1, *fmt2, *fmt, *main_local, *list_containers; const char *fmt1, *fmt2, *fmt, *main_local, *list_containers;
int c; int c;
if ((main_local = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_PROGNAME)) == trace_calc_fmts(&main_local, &fmt1, &fmt2);
NULL)
main_local = "";
if ((fmt1 = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_FMT1)) == NULL)
fmt1 = "\t%o => %p (%x)\n";
if ((fmt2 = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_FMT2)) == NULL)
fmt2 = "\t%o (%x)\n";
list_containers = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_ALL); list_containers = ld_get_env_var(LD_TRACE_LOADED_OBJECTS_ALL);
for (; obj != NULL; obj = TAILQ_NEXT(obj, next)) { for (; obj != NULL; obj = TAILQ_NEXT(obj, next)) {