summaryrefslogtreecommitdiffstats
path: root/src/audit.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/audit.c')
-rw-r--r--src/audit.c26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/audit.c b/src/audit.c
index 3adfa3e..7a83b56 100644
--- a/src/audit.c
+++ b/src/audit.c
@@ -81,9 +81,11 @@ static void free_argbuf(int argret, char *argbuf, char *argdbuf)
}
static int sym_entry(const char *symname, void *ptr,
- char *lib_from, char *lib_to, La_regs *regs)
+ struct link_map *lr, struct link_map *ld,
+ La_regs *regs)
{
- int argret = -1;
+ char *lib_to = ld ? ld->l_name : NULL;
+ int argret = -1;
char *argbuf = "", *argdbuf = "";
struct timeval tv;
struct lt_symbol *sym = NULL;
@@ -130,10 +132,12 @@ static int sym_entry(const char *symname, void *ptr,
}
static int sym_exit(const char *symname, void *ptr,
- char *lib_from, char *lib_to,
- const La_regs *inregs, La_retval *outregs)
+ struct link_map *lr, struct link_map *ld,
+ const La_regs *inregs, La_retval *outregs)
{
- int argret = -1;
+ char *lib_from = lr ? lr->l_name : NULL;
+ char *lib_to = ld ? ld->l_name : NULL;
+ int argret = -1;
char *argbuf = "", *argdbuf = "";
struct timeval tv;
struct lt_symbol *sym = NULL;
@@ -149,8 +153,10 @@ static int sym_exit(const char *symname, void *ptr,
if (lt_sh(&cfg, global_symbols))
sym = lt_symbol_get(cfg.sh, ptr, symname);
+#ifdef CONFIG_ARCH_HAVE_ERROR_SIM
if (lt_sh(&cfg, error_sim))
- lt_error_sym_exit(&cfg, sym, &tv, outregs);
+ lt_error_sym_exit(&cfg, sym, &tv, lr, inregs, outregs);
+#endif
#ifdef CONFIG_ARCH_HAVE_ARGS
argret = lt_sh(&cfg, args_enabled) ?
@@ -329,9 +335,7 @@ pltenter(ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
CHECK_PID(sym->st_value);
sym_entry(symname, (void*) sym->st_value,
- lr ? lr->l_name : NULL,
- ld ? ld->l_name : NULL,
- regs);
+ lr, ld, regs);
} while(0);
@@ -351,9 +355,7 @@ unsigned int pltexit(ElfW(Sym) *sym, unsigned int ndx, uintptr_t *refcook,
CHECK_PID(0);
sym_exit(symname, (void*) sym->st_value,
- lr ? lr->l_name : NULL,
- ld ? ld->l_name : NULL,
- inregs, outregs);
+ lr, ld, inregs, outregs);
} while(0);