Remove parser of query_module syscall
Since query_module syscall is present only in kernels before Linux 2.6 and strace does not support those kernels, there is no use to keep this parser any longer. * bjm.c: Do not include <sys/*>, "xlat/qm_which.h", and "xlat/modflags.h". (MOD_*, QM_*, module_symbol, module_info, SYS_FUNC(query_module)): Remove. * linux/dummy.h (sys_query_module): Add stub alias. * xlat/modflags.in: Remove. * xlat/qm_which.in: Remove.
This commit is contained in:
129
bjm.c
129
bjm.c
@ -30,138 +30,9 @@
|
||||
|
||||
#include "defs.h"
|
||||
#include <fcntl.h>
|
||||
#include <sys/stat.h>
|
||||
#include <sys/wait.h>
|
||||
#include <sys/resource.h>
|
||||
#include <sys/utsname.h>
|
||||
|
||||
/* Bits of module.flags. */
|
||||
|
||||
#define MOD_UNINITIALIZED 0
|
||||
#define MOD_RUNNING 1
|
||||
#define MOD_DELETED 2
|
||||
#define MOD_AUTOCLEAN 4
|
||||
#define MOD_VISITED 8
|
||||
#define MOD_USED_ONCE 16
|
||||
#define MOD_JUST_FREED 32
|
||||
#define MOD_INITIALIZING 64
|
||||
|
||||
/* Values for query_module's which. */
|
||||
|
||||
#define QM_MODULES 1
|
||||
#define QM_DEPS 2
|
||||
#define QM_REFS 3
|
||||
#define QM_SYMBOLS 4
|
||||
#define QM_INFO 5
|
||||
|
||||
struct module_symbol
|
||||
{
|
||||
unsigned long value;
|
||||
const char *name;
|
||||
};
|
||||
|
||||
struct module_info
|
||||
{
|
||||
unsigned long addr;
|
||||
unsigned long size;
|
||||
unsigned long flags;
|
||||
long usecount;
|
||||
};
|
||||
|
||||
#include "xlat/qm_which.h"
|
||||
#include "xlat/modflags.h"
|
||||
#include "xlat/delete_module_flags.h"
|
||||
|
||||
SYS_FUNC(query_module)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
printstr(tcp, tcp->u_arg[0], -1);
|
||||
tprints(", ");
|
||||
printxval(qm_which, tcp->u_arg[1], "QM_???");
|
||||
tprints(", ");
|
||||
} else {
|
||||
size_t ret;
|
||||
|
||||
if (!verbose(tcp) || syserror(tcp) ||
|
||||
umove(tcp, tcp->u_arg[4], &ret) < 0) {
|
||||
tprintf("%#lx, %lu, %#lx", tcp->u_arg[2],
|
||||
tcp->u_arg[3], tcp->u_arg[4]);
|
||||
} else if (tcp->u_arg[1]==QM_INFO) {
|
||||
struct module_info mi;
|
||||
if (umove(tcp, tcp->u_arg[2], &mi) < 0) {
|
||||
tprintf("%#lx, ", tcp->u_arg[2]);
|
||||
} else {
|
||||
tprintf("{address=%#lx, size=%lu, flags=",
|
||||
mi.addr, mi.size);
|
||||
printflags(modflags, mi.flags, "MOD_???");
|
||||
tprintf(", usecount=%lu}, ", mi.usecount);
|
||||
}
|
||||
tprintf("%lu", (unsigned long)ret);
|
||||
} else if ((tcp->u_arg[1]==QM_MODULES) ||
|
||||
(tcp->u_arg[1]==QM_DEPS) ||
|
||||
(tcp->u_arg[1]==QM_REFS)) {
|
||||
tprints("{");
|
||||
if (!abbrev(tcp)) {
|
||||
char* data = malloc(tcp->u_arg[3]);
|
||||
char* mod = data;
|
||||
size_t idx;
|
||||
|
||||
if (!data) {
|
||||
error_msg("Out of memory");
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
} else {
|
||||
if (umoven(tcp, tcp->u_arg[2],
|
||||
tcp->u_arg[3], data) < 0) {
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
} else {
|
||||
for (idx = 0; idx < ret; idx++) {
|
||||
tprintf("%s%s",
|
||||
(idx ? ", " : ""),
|
||||
mod);
|
||||
mod += strlen(mod)+1;
|
||||
}
|
||||
}
|
||||
free(data);
|
||||
}
|
||||
} else
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
tprintf("}, %lu", (unsigned long)ret);
|
||||
} else if (tcp->u_arg[1]==QM_SYMBOLS) {
|
||||
tprints("{");
|
||||
if (!abbrev(tcp)) {
|
||||
char* data = malloc(tcp->u_arg[3]);
|
||||
struct module_symbol* sym = (struct module_symbol*)data;
|
||||
size_t idx;
|
||||
|
||||
if (!data) {
|
||||
error_msg("Out of memory");
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
} else {
|
||||
if (umoven(tcp, tcp->u_arg[2],
|
||||
tcp->u_arg[3], data) < 0) {
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
} else {
|
||||
for (idx = 0; idx < ret; idx++) {
|
||||
tprintf("%s{name=%s, value=%lu}",
|
||||
(idx ? " " : ""),
|
||||
data+(long)sym->name,
|
||||
sym->value);
|
||||
sym++;
|
||||
}
|
||||
}
|
||||
free(data);
|
||||
}
|
||||
} else
|
||||
tprintf(" /* %lu entries */ ", (unsigned long)ret);
|
||||
tprintf("}, %ld", (unsigned long)ret);
|
||||
} else {
|
||||
printstr(tcp, tcp->u_arg[2], tcp->u_arg[3]);
|
||||
tprintf(", %#lx", tcp->u_arg[4]);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
SYS_FUNC(create_module)
|
||||
{
|
||||
printpath(tcp, tcp->u_arg[0]);
|
||||
|
@ -136,6 +136,7 @@
|
||||
#define sys_phys printargs
|
||||
#define sys_profil printargs
|
||||
#define sys_prof printargs
|
||||
#define sys_query_module printargs
|
||||
#define sys_security printargs
|
||||
#define sys_stty printargs
|
||||
#define sys_tuxcall printargs
|
||||
|
@ -1,7 +0,0 @@
|
||||
MOD_UNINITIALIZED
|
||||
MOD_RUNNING
|
||||
MOD_DELETED
|
||||
MOD_AUTOCLEAN
|
||||
MOD_VISITED
|
||||
MOD_USED_ONCE
|
||||
MOD_JUST_FREED
|
@ -1,6 +0,0 @@
|
||||
0
|
||||
QM_MODULES
|
||||
QM_DEPS
|
||||
QM_REFS
|
||||
QM_SYMBOLS
|
||||
QM_INFO
|
Reference in New Issue
Block a user