Suppress more warning and add a lint target
This commit is contained in:
parent
ce496c6e0b
commit
f78355f68f
14 changed files with 150 additions and 48 deletions
17
Makefile.am
17
Makefile.am
|
|
@ -20,11 +20,15 @@ child$(EXEEXT): $(child_SOURCES:.s=.o)
|
||||||
child_bin.o: child$(EXEEXT)
|
child_bin.o: child$(EXEEXT)
|
||||||
$(LD) -r -b binary -o $@ $<
|
$(LD) -r -b binary -o $@ $<
|
||||||
|
|
||||||
|
ALL_CHECKS=
|
||||||
|
LINT=
|
||||||
SUBDIRS =
|
SUBDIRS =
|
||||||
if CHECK
|
if CHECK
|
||||||
noinst_LIBRARIES = libcheck_asmsh.a
|
noinst_LIBRARIES = libcheck_asmsh.a
|
||||||
libcheck_asmsh_a_LDDADD=child_bin.o
|
libcheck_asmsh_a_LDDADD=child_bin.o
|
||||||
|
|
||||||
|
ALL_CHECKS += check
|
||||||
|
|
||||||
if HAVE_GCOV
|
if HAVE_GCOV
|
||||||
libcheck_asmsh_a_CFLAGS = @CFLAGS@ -fprofile-arcs -ftest-coverage
|
libcheck_asmsh_a_CFLAGS = @CFLAGS@ -fprofile-arcs -ftest-coverage
|
||||||
|
|
||||||
|
|
@ -55,9 +59,20 @@ endif
|
||||||
|
|
||||||
SUBDIRS += tests
|
SUBDIRS += tests
|
||||||
|
|
||||||
checks: check coverage
|
|
||||||
|
ALL_CHECKS += coverage
|
||||||
|
|
||||||
coverage: $(LCOV_HTML)
|
coverage: $(LCOV_HTML)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if HAVE_CPPCHECK
|
||||||
|
LINT += cppcheck
|
||||||
|
cppcheck:
|
||||||
|
$(CPPCHECK) --enable=all --inline-suppr --check-config --suppress=missingIncludeSystem -q . -I .
|
||||||
|
endif
|
||||||
|
|
||||||
|
checks: $(ALL_CHECKS)
|
||||||
|
|
||||||
|
lint: $(LINT)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -50,18 +50,18 @@ struct asmsh_env_s
|
||||||
* perm allowing use to write code to be executed by the
|
* perm allowing use to write code to be executed by the
|
||||||
* child
|
* child
|
||||||
*/
|
*/
|
||||||
void *txt_map_addr;
|
unsigned char *txt_map_addr;
|
||||||
/** child's map size */
|
/** child's map size */
|
||||||
size_t txt_map_sz;
|
size_t txt_map_sz;
|
||||||
/** Pointer on current write addr in child's map */
|
/** Pointer on current write addr in child's map */
|
||||||
void *txt_map_ptr;
|
unsigned char *txt_map_ptr;
|
||||||
|
|
||||||
/** Pointer on the next addr where we should write some
|
/** Pointer on the next addr where we should write some
|
||||||
* compiled bytecode */
|
* compiled bytecode */
|
||||||
void *code_write_ptr;
|
unsigned char *code_write_ptr;
|
||||||
|
|
||||||
/** Pointer, in child memory, of the stack */
|
/** Pointer, in child memory, of the stack */
|
||||||
void *stack_addr;
|
unsigned char *stack_addr;
|
||||||
size_t stack_sz;
|
size_t stack_sz;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
||||||
4
asmsh.c
4
asmsh.c
|
|
@ -31,7 +31,6 @@ int main(int argc, char *argv[], char *envp[])
|
||||||
asmsh_t sh;
|
asmsh_t sh;
|
||||||
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
char *cmd;
|
|
||||||
char prompt[64];
|
char prompt[64];
|
||||||
bzero(prompt, sizeof(prompt));
|
bzero(prompt, sizeof(prompt));
|
||||||
|
|
||||||
|
|
@ -54,6 +53,7 @@ int main(int argc, char *argv[], char *envp[])
|
||||||
|
|
||||||
while(1)
|
while(1)
|
||||||
{
|
{
|
||||||
|
char *cmd;
|
||||||
snprintf(prompt, sizeof(prompt)-1,
|
snprintf(prompt, sizeof(prompt)-1,
|
||||||
"asmsh@%p > ",
|
"asmsh@%p > ",
|
||||||
(void*)sh.env->regs.rip);
|
(void*)sh.env->regs.rip);
|
||||||
|
|
@ -83,7 +83,7 @@ int main(int argc, char *argv[], char *envp[])
|
||||||
HIST_ENTRY **hist = history_list();
|
HIST_ENTRY **hist = history_list();
|
||||||
int hist_count = 0;
|
int hist_count = 0;
|
||||||
for(HIST_ENTRY **p=hist; *p;p++){ hist_count++; }
|
for(HIST_ENTRY **p=hist; *p;p++){ hist_count++; }
|
||||||
const char **hstr = alloca((hist_count+1)*sizeof(char*));
|
const char *hstr[(hist_count+1)*sizeof(char*)];
|
||||||
for(int i=0; i<hist_count; i++){ hstr[i] = hist[i]->line; }
|
for(int i=0; i<hist_count; i++){ hstr[i] = hist[i]->line; }
|
||||||
hstr[hist_count]=NULL;
|
hstr[hist_count]=NULL;
|
||||||
|
|
||||||
|
|
|
||||||
17
compile.c
17
compile.c
|
|
@ -175,12 +175,18 @@ int asmsh_asmc_compile_unsafe(asmsh_asmc_ctx_t *ctx, const char *_instr,
|
||||||
sigset_t sigfdmask, oldmask;
|
sigset_t sigfdmask, oldmask;
|
||||||
fd_set sigset;
|
fd_set sigset;
|
||||||
struct timeval stimeout;
|
struct timeval stimeout;
|
||||||
char *instr;
|
|
||||||
|
|
||||||
sigemptyset(&sigfdmask);
|
sigemptyset(&sigfdmask);
|
||||||
sigaddset(&sigfdmask, SIGCHLD);
|
sigaddset(&sigfdmask, SIGCHLD);
|
||||||
sigfillset(&sigfdmask);
|
sigfillset(&sigfdmask);
|
||||||
|
|
||||||
|
instr_sz = strlen(_instr);
|
||||||
|
char instr[instr_sz+1];
|
||||||
|
memcpy(instr, _instr, instr_sz);
|
||||||
|
instr[instr_sz] = '\n';
|
||||||
|
instr[instr_sz+1] = '\0';
|
||||||
|
instr_sz++;
|
||||||
|
|
||||||
/// TODO : early (context ?) sigprocmask ?
|
/// TODO : early (context ?) sigprocmask ?
|
||||||
if((sigprocmask(SIG_BLOCK, &sigfdmask, &oldmask) == -1))
|
if((sigprocmask(SIG_BLOCK, &sigfdmask, &oldmask) == -1))
|
||||||
{
|
{
|
||||||
|
|
@ -196,13 +202,6 @@ int asmsh_asmc_compile_unsafe(asmsh_asmc_ctx_t *ctx, const char *_instr,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
instr_sz = strlen(_instr);
|
|
||||||
instr = alloca(instr_sz+1);
|
|
||||||
memcpy(instr, _instr, instr_sz);
|
|
||||||
instr[instr_sz] = '\n';
|
|
||||||
instr[instr_sz+1] = '\0';
|
|
||||||
instr_sz++;
|
|
||||||
|
|
||||||
ret = write(ctx->child.pipe_stdin, instr, instr_sz);
|
ret = write(ctx->child.pipe_stdin, instr, instr_sz);
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
{
|
{
|
||||||
|
|
@ -302,7 +301,7 @@ err_stderr:
|
||||||
else if (readed > 0)
|
else if (readed > 0)
|
||||||
{
|
{
|
||||||
curbuf[readed] = '\0';
|
curbuf[readed] = '\0';
|
||||||
inbuf += readed;
|
//inbuf += readed;
|
||||||
curbuf=buf;
|
curbuf=buf;
|
||||||
for(char *tbuf=buf; *tbuf; tbuf++)
|
for(char *tbuf=buf; *tbuf; tbuf++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ char **asmsh_compl_arg(const char *buf, const char *text, int start)
|
||||||
|
|
||||||
tlen = text?strlen(text):0;
|
tlen = text?strlen(text):0;
|
||||||
|
|
||||||
for(int i=0; i<(sizeof(x86_64_instr)/sizeof(*x86_64_instr))-1; i++)
|
for(i=0; i<(sizeof(x86_64_instr)/sizeof(*x86_64_instr))-1; i++)
|
||||||
{
|
{
|
||||||
int cmp;
|
int cmp;
|
||||||
const char *instr = x86_64_instr[i].mnemo;
|
const char *instr = x86_64_instr[i].mnemo;
|
||||||
|
|
@ -259,9 +259,9 @@ char **asmsh_compl_arg(const char *buf, const char *text, int start)
|
||||||
{
|
{
|
||||||
//full match on arg0 adding ","
|
//full match on arg0 adding ","
|
||||||
char *tmp = ret[i];
|
char *tmp = ret[i];
|
||||||
char buf[32];
|
char _buf[32];
|
||||||
snprintf(buf, 31, "%s,", tmp);
|
snprintf(_buf, 31, "%s,", tmp);
|
||||||
ret[i] = strdup(buf);
|
ret[i] = strdup(_buf);
|
||||||
}
|
}
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -55,9 +55,11 @@ then
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
AC_CHECK_PROGS([CPPCHECK], [cppcheck])
|
||||||
|
|
||||||
AM_CONDITIONAL([HAVE_GCOV], [test -n "$GCOV"])
|
AM_CONDITIONAL([HAVE_GCOV], [test -n "$GCOV"])
|
||||||
AM_CONDITIONAL([HAVE_LCOV], [test -n "$LCOV"])
|
AM_CONDITIONAL([HAVE_LCOV], [test -n "$LCOV"])
|
||||||
|
AM_CONDITIONAL([HAVE_CPPCHECK], [test -n "$CPPCHECK"])
|
||||||
|
|
||||||
# Checks for libraries.
|
# Checks for libraries.
|
||||||
AC_CHECK_LIB(readline, readline)
|
AC_CHECK_LIB(readline, readline)
|
||||||
|
|
|
||||||
|
|
@ -3,7 +3,6 @@
|
||||||
char * history_filename_init(const char *homedir)
|
char * history_filename_init(const char *homedir)
|
||||||
{
|
{
|
||||||
const char fmt[] = "%s/.local/share/asmsh";
|
const char fmt[] = "%s/.local/share/asmsh";
|
||||||
char *path;
|
|
||||||
int sz;
|
int sz;
|
||||||
int fd = open("/dev/null", O_WRONLY);
|
int fd = open("/dev/null", O_WRONLY);
|
||||||
if(!fd)
|
if(!fd)
|
||||||
|
|
@ -24,7 +23,7 @@ char * history_filename_init(const char *homedir)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
path = alloca(sz+1);
|
char path[sz+1];
|
||||||
sprintf(path, fmt, home);
|
sprintf(path, fmt, home);
|
||||||
path[sz]='\0';
|
path[sz]='\0';
|
||||||
if(access(path, F_OK) < 0)
|
if(access(path, F_OK) < 0)
|
||||||
|
|
|
||||||
13
logger.c
13
logger.c
|
|
@ -73,7 +73,7 @@ int asmsh_logger_dprint_fmt(int fd, asmsh_logger_t *logger, asmsh_log_fmt_f *cus
|
||||||
{
|
{
|
||||||
const int BUF_ALLOC = 4096;
|
const int BUF_ALLOC = 4096;
|
||||||
char *buf;
|
char *buf;
|
||||||
int bufsz, ret, res;
|
int bufsz, res;
|
||||||
asmsh_log_msg_t *cur;
|
asmsh_log_msg_t *cur;
|
||||||
asmsh_log_fmt_f *fmt;
|
asmsh_log_fmt_f *fmt;
|
||||||
|
|
||||||
|
|
@ -89,7 +89,7 @@ int asmsh_logger_dprint_fmt(int fd, asmsh_logger_t *logger, asmsh_log_fmt_f *cus
|
||||||
res = 0;
|
res = 0;
|
||||||
while(cur != logger->nxt)
|
while(cur != logger->nxt)
|
||||||
{
|
{
|
||||||
ret = fmt(cur, buf, bufsz);
|
int ret = fmt(cur, buf, bufsz);
|
||||||
if(ret < 0)
|
if(ret < 0)
|
||||||
{
|
{
|
||||||
perror("Unable to format log message");
|
perror("Unable to format log message");
|
||||||
|
|
@ -117,7 +117,6 @@ int asmsh_logger_strdup(asmsh_logger_t *logger, char **result, size_t *res_sz)
|
||||||
size_t buf_sz;
|
size_t buf_sz;
|
||||||
asmsh_log_msg_t *cur;
|
asmsh_log_msg_t *cur;
|
||||||
char *buf_ptr;
|
char *buf_ptr;
|
||||||
int ret;
|
|
||||||
int err;
|
int err;
|
||||||
|
|
||||||
*res_sz = 0;
|
*res_sz = 0;
|
||||||
|
|
@ -133,7 +132,7 @@ int asmsh_logger_strdup(asmsh_logger_t *logger, char **result, size_t *res_sz)
|
||||||
cur = (asmsh_log_msg_t*)logger->msgs;
|
cur = (asmsh_log_msg_t*)logger->msgs;
|
||||||
while(cur != logger->nxt)
|
while(cur != logger->nxt)
|
||||||
{
|
{
|
||||||
ret = logger->fmt(cur, buf_ptr, buf_sz - *res_sz);
|
int ret = logger->fmt(cur, buf_ptr, buf_sz - *res_sz);
|
||||||
if(ret == (*res_sz - buf_sz))
|
if(ret == (*res_sz - buf_sz))
|
||||||
{
|
{
|
||||||
buf_sz += BUF_ALLOC;
|
buf_sz += BUF_ALLOC;
|
||||||
|
|
@ -173,10 +172,10 @@ int asmsh_log(asmsh_logger_t *logger, asmsh_loglevel_t lvl, const char caller[],
|
||||||
|
|
||||||
if(logger->msgs_alloc <= logger->msgs_sz + total_len)
|
if(logger->msgs_alloc <= logger->msgs_sz + total_len)
|
||||||
{
|
{
|
||||||
void *tmp;
|
asmsh_log_msg_t *tmp;
|
||||||
logger->msgs_alloc += ASMSH_LOG_BUFFER_ALLOC;
|
logger->msgs_alloc += ASMSH_LOG_BUFFER_ALLOC;
|
||||||
tmp = realloc(logger->msgs, logger->msgs_alloc);
|
tmp = realloc(logger->msgs, logger->msgs_alloc);
|
||||||
if(tmp <= 0)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
@ -208,7 +207,7 @@ int asmsh_log(asmsh_logger_t *logger, asmsh_loglevel_t lvl, const char caller[],
|
||||||
strncpy(logger->nxt->caller, caller, caller_len+1);
|
strncpy(logger->nxt->caller, caller, caller_len+1);
|
||||||
strncpy(logger->nxt->msg, msg, msg_len+1);
|
strncpy(logger->nxt->msg, msg, msg_len+1);
|
||||||
|
|
||||||
logger->nxt->nxt = (asmsh_log_msg_t*)((void*)logger->nxt->msg+total_len);
|
logger->nxt->nxt = (asmsh_log_msg_t*)((char*)logger->nxt->msg+total_len);
|
||||||
logger->nxt = logger->nxt->nxt;
|
logger->nxt = logger->nxt->nxt;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
|
|
||||||
|
|
@ -37,8 +37,8 @@ typedef struct child_mmap_list child_mmap_l;
|
||||||
|
|
||||||
struct child_mmap_s
|
struct child_mmap_s
|
||||||
{
|
{
|
||||||
void *start;
|
char *start;
|
||||||
void *stop;
|
char *stop;
|
||||||
int perm;
|
int perm;
|
||||||
size_t offset;
|
size_t offset;
|
||||||
dev_t device;
|
dev_t device;
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,8 @@ asmsh_cmd_args_t *asmsh_cmd_parse(const char *cmd)
|
||||||
int cmdlen, err, argno;
|
int cmdlen, err, argno;
|
||||||
const char *ptr, *arg;
|
const char *ptr, *arg;
|
||||||
|
|
||||||
if(!cmd || !*cmd || *cmd != '.') { return NULL; }
|
if(!cmd || !*cmd) { return NULL; }
|
||||||
|
if (*cmd != '.') { return NULL; }
|
||||||
|
|
||||||
if(!(ret = malloc(sizeof(*ret))))
|
if(!(ret = malloc(sizeof(*ret))))
|
||||||
{
|
{
|
||||||
|
|
@ -137,6 +138,7 @@ int asmsh_cmd_bcode(asmsh_t *sh, char *argbuf, int bufsz, int argc, char **args)
|
||||||
{
|
{
|
||||||
asmsh_bytecode_t bcode;
|
asmsh_bytecode_t bcode;
|
||||||
char _buf[256], *buf;
|
char _buf[256], *buf;
|
||||||
|
char code[256];
|
||||||
const char *instr;
|
const char *instr;
|
||||||
int ret;
|
int ret;
|
||||||
|
|
||||||
|
|
@ -163,7 +165,6 @@ int asmsh_cmd_bcode(asmsh_t *sh, char *argbuf, int bufsz, int argc, char **args)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
char **arg;
|
char **arg;
|
||||||
char code[256];
|
|
||||||
int sz = 0;
|
int sz = 0;
|
||||||
for(arg=args;*arg;arg++)
|
for(arg=args;*arg;arg++)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -24,13 +24,13 @@ clean-local:
|
||||||
-rm -rf *.gcov *.gcda *.gcno
|
-rm -rf *.gcov *.gcda *.gcno
|
||||||
|
|
||||||
\$(CHILD):
|
\$(CHILD):
|
||||||
make -C \$(top_builddir) \$(CHILD_NAME)
|
\$(MAKE) -C \$(top_builddir) \$(CHILD_NAME)
|
||||||
|
|
||||||
\$(TESTLIB):
|
\$(TESTLIB):
|
||||||
make -C \$(top_builddir) \$(TESTLIB_NAME)
|
\$(MAKE) -C \$(top_builddir) \$(TESTLIB_NAME)
|
||||||
|
|
||||||
\$(CHILD_OBJ):
|
\$(CHILD_OBJ):
|
||||||
make -C \$(top_builddir) \$(CHILD_OBJNAME)
|
\$(MAKE) -C \$(top_builddir) \$(CHILD_OBJNAME)
|
||||||
|
|
||||||
.PHONY: \$(TESTLIB) \$(CHILD)
|
.PHONY: \$(TESTLIB) \$(CHILD)
|
||||||
__EOF__
|
__EOF__
|
||||||
|
|
|
||||||
76
tests/tests_history.c
Normal file
76
tests/tests_history.c
Normal file
|
|
@ -0,0 +1,76 @@
|
||||||
|
#include "config.h"
|
||||||
|
#include <check.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
|
#include "asmsh_check.h"
|
||||||
|
#include "history.h"
|
||||||
|
|
||||||
|
START_TEST(test_filename)
|
||||||
|
{
|
||||||
|
char *fname;
|
||||||
|
char expt_path[4096];
|
||||||
|
|
||||||
|
fname = history_filename_init("/foo");
|
||||||
|
ck_assert_ptr_nonnull(fname);
|
||||||
|
|
||||||
|
snprintf(expt_path, sizeof(expt_path), "/foo/.local/share/asmsh/%s",
|
||||||
|
ASMSH_HISTORY_FILE);
|
||||||
|
ck_assert_str_eq(expt_path, fname);
|
||||||
|
|
||||||
|
fname = history_filename_init(NULL);
|
||||||
|
if(getenv("HOME"))
|
||||||
|
{
|
||||||
|
snprintf(expt_path, sizeof(expt_path), "%s/.local/share/asmsh/%s",
|
||||||
|
getenv("HOME"),
|
||||||
|
ASMSH_HISTORY_FILE);
|
||||||
|
ck_assert_ptr_nonnull(fname);
|
||||||
|
ck_assert_str_eq(expt_path, fname);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ck_assert_ptr_null(fname);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST(test_save)
|
||||||
|
{
|
||||||
|
// Do not test the written content, only check for segfaults
|
||||||
|
const char * const hist[]={"foo", "bar", "super history"};
|
||||||
|
save_history("/dev/null", hist);
|
||||||
|
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
#define SAMPLE_HISTORY "samples/sample.history"
|
||||||
|
|
||||||
|
static const char * const samples[] = {
|
||||||
|
"hello world!",
|
||||||
|
"mov $1312, %rax",
|
||||||
|
"syscall",
|
||||||
|
};
|
||||||
|
static int mock_add_calls = 0;
|
||||||
|
|
||||||
|
static void mock_add_history(const char *str)
|
||||||
|
{
|
||||||
|
int sz = sizeof(samples)/sizeof(*samples);
|
||||||
|
ck_assert(mock_add_calls < sz);
|
||||||
|
ck_assert_str_eq(samples[mock_add_calls], str);
|
||||||
|
mock_add_calls++;
|
||||||
|
}
|
||||||
|
|
||||||
|
START_TEST(test_load)
|
||||||
|
{
|
||||||
|
load_history(SAMPLE_HISTORY, mock_add_history);
|
||||||
|
}
|
||||||
|
|
||||||
|
ASMSH_CHECK_START("history utils", "testing history store/load functions")
|
||||||
|
ASMSH_ADD_TEST(test_filename);
|
||||||
|
ASMSH_ADD_TEST(test_save);
|
||||||
|
ASMSH_ADD_TEST(test_load);
|
||||||
|
ASMSH_CHECK_END
|
||||||
|
|
@ -10,12 +10,11 @@
|
||||||
|
|
||||||
START_TEST(test_logger_new)
|
START_TEST(test_logger_new)
|
||||||
{
|
{
|
||||||
asmsh_logger_t *logger;
|
|
||||||
asmsh_loglevel_t lvls[] = {ASMSH_DEBUG, ASMSH_WARN, ASMSH_FATAL};
|
asmsh_loglevel_t lvls[] = {ASMSH_DEBUG, ASMSH_WARN, ASMSH_FATAL};
|
||||||
|
|
||||||
for(int i = 0; i<sizeof(lvls) / sizeof(*lvls); i++)
|
for(int i = 0; i<sizeof(lvls) / sizeof(*lvls); i++)
|
||||||
{
|
{
|
||||||
logger = asmsh_logger_new(lvls[i]);
|
asmsh_logger_t *logger = asmsh_logger_new(lvls[i]);
|
||||||
|
|
||||||
ck_assert_ptr_nonnull(logger);
|
ck_assert_ptr_nonnull(logger);
|
||||||
ck_assert_int_eq((logger->min_level), lvls[i]);
|
ck_assert_int_eq((logger->min_level), lvls[i]);
|
||||||
|
|
@ -63,7 +62,6 @@ END_TEST
|
||||||
START_TEST(test_log_function_lvl_nolog)
|
START_TEST(test_log_function_lvl_nolog)
|
||||||
{
|
{
|
||||||
asmsh_logger_t *logger;
|
asmsh_logger_t *logger;
|
||||||
asmsh_log_msg_t *msg;
|
|
||||||
|
|
||||||
logger = asmsh_logger_new(ASMSH_INFO);
|
logger = asmsh_logger_new(ASMSH_INFO);
|
||||||
|
|
||||||
|
|
@ -172,7 +170,6 @@ START_TEST(test_log_dprint)
|
||||||
|
|
||||||
const char *caller, *testmsg;
|
const char *caller, *testmsg;
|
||||||
char *exptr, *expt, *res;
|
char *exptr, *expt, *res;
|
||||||
size_t total_len = 0;
|
|
||||||
int tmp_fd;
|
int tmp_fd;
|
||||||
const char _tmpname[] = "/tmp/dprintXXXXXX";
|
const char _tmpname[] = "/tmp/dprintXXXXXX";
|
||||||
char *tmpname = strdupa(_tmpname);
|
char *tmpname = strdupa(_tmpname);
|
||||||
|
|
@ -182,8 +179,6 @@ START_TEST(test_log_dprint)
|
||||||
|
|
||||||
caller = msg_samples[i][0];
|
caller = msg_samples[i][0];
|
||||||
testmsg = msg_samples[i][1];
|
testmsg = msg_samples[i][1];
|
||||||
total_len += sizeof(asmsh_log_msg_t);
|
|
||||||
total_len += strlen(caller) + strlen(testmsg) + 2;
|
|
||||||
|
|
||||||
ck_assert_int_eq(asmsh_log(logger, ASMSH_INFO, caller, testmsg), 0);
|
ck_assert_int_eq(asmsh_log(logger, ASMSH_INFO, caller, testmsg), 0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -57,22 +57,22 @@ START_TEST (test_parse_fd)
|
||||||
PROT_READ | PROT_EXEC | MAP_PRIVATE, 0, (8<<8)+2, 173521,
|
PROT_READ | PROT_EXEC | MAP_PRIVATE, 0, (8<<8)+2, 173521,
|
||||||
"/usr/bin/dbus-daemon"},
|
"/usr/bin/dbus-daemon"},
|
||||||
{(void*)0x651000, (void*)0x652000,
|
{(void*)0x651000, (void*)0x652000,
|
||||||
PROT_READ | MAP_PRIVATE, 0, (8<<8)+2, 173521,
|
PROT_READ | MAP_PRIVATE, 0x51000, (8<<8)+2, 173521,
|
||||||
"/usr/bin/dbus-daemon"},
|
"/usr/bin/dbus-daemon"},
|
||||||
{(void*)0x652000, (void*)0x655000,
|
{(void*)0x652000, (void*)0x655000,
|
||||||
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0, (8<<8)+2, 173521,
|
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0x52000, (8<<8)+2, 173521,
|
||||||
"/usr/bin/dbus-daemon"},
|
"/usr/bin/dbus-daemon"},
|
||||||
{(void*)0xe3000, (void*)0xe24000,
|
{(void*)0xe03000, (void*)0xe24000,
|
||||||
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0, 0, 0,
|
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0, 0, 0,
|
||||||
"[heap]"},
|
"[heap]"},
|
||||||
{(void*)0x24000, (void*)0x11f7000,
|
{(void*)0xe24000, (void*)0x11f7000,
|
||||||
PROT_READ | PROT_WRITE | MAP_SHARED, 0, 0, 0,
|
PROT_READ | PROT_WRITE | MAP_SHARED, 0, 0, 0,
|
||||||
"[heap]"},
|
"[heap]"},
|
||||||
{(void*)0x35b1a20000, (void*)0x35b1a21000,
|
{(void*)0x35b1a20000, (void*)0x35b1a21000,
|
||||||
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0x20000, (13<<8)+12, 135522,
|
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0x20000, (13<<8)+12, 135522,
|
||||||
"/usr/lib64/ld-2.15.so"},
|
"/usr/lib64/ld-2.15.so"},
|
||||||
{(void*)0x35b1a21000, (void*)0x35b1a22000,
|
{(void*)0x35b1a21000, (void*)0x35b1a22000,
|
||||||
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0x20000, 0, 0,
|
PROT_READ | PROT_WRITE | MAP_PRIVATE, 0, 0, 0,
|
||||||
""},
|
""},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -85,9 +85,25 @@ START_TEST (test_parse_fd)
|
||||||
}
|
}
|
||||||
|
|
||||||
ret = child_mmap_get_fd(fd, &maps);
|
ret = child_mmap_get_fd(fd, &maps);
|
||||||
|
|
||||||
ck_assert_int_eq(ret, 0);
|
ck_assert_int_eq(ret, 0);
|
||||||
|
|
||||||
|
int i;
|
||||||
|
for(i=0; i<sizeof(checks)/sizeof(*checks);i++)
|
||||||
|
{
|
||||||
|
dprintf(2, "line %d\n", i);
|
||||||
|
child_mmap_t *check, *res;
|
||||||
|
check = &checks[i];
|
||||||
|
res = &maps.maps[i];
|
||||||
|
ck_assert_ptr_eq(check->start, res->start);
|
||||||
|
ck_assert_ptr_eq(check->stop, res->stop);
|
||||||
|
ck_assert_int_eq(check->perm, res->perm);
|
||||||
|
ck_assert_int_eq(check->offset, res->offset);
|
||||||
|
ck_assert_mem_eq(&check->device, &res->device, sizeof(check->device));
|
||||||
|
ck_assert_mem_eq(&check->inode, &res->inode, sizeof(check->inode));
|
||||||
|
ck_assert_str_eq(check->pathname, res->pathname);
|
||||||
|
}
|
||||||
|
ck_assert_int_eq(i, maps.size);
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue