diff options
author | Juan Cespedes <cespedes@thehackers.org> | 1997-04-16 09:24:13 +0200 |
---|---|---|
committer | Juan Cespedes <cespedes@thehackers.org> | 1997-04-16 09:24:13 +0200 |
commit | 562c710d35406481be1c52ff2acf7200d2e85e6f (patch) | |
tree | 420d9e69e0ab551e8a5a0b229ad21e7cfbd7eca8 | |
parent | aa584fbcce20ee35175ad29a12875afb19b3ca01 (diff) | |
download | ltrace-562c710d35406481be1c52ff2acf7200d2e85e6f.tar.gz |
Version 0.0.1997.04.16
-rwxr-xr-x | lib/libtrace.so.1 | bin | 19156 -> 19423 bytes | |||
-rw-r--r-- | src/libtrace/TODO | 10 | ||||
-rw-r--r-- | src/libtrace/init_libtrace.c | 13 | ||||
-rw-r--r-- | src/libtrace/print_results.c | 20 |
4 files changed, 33 insertions, 10 deletions
diff --git a/lib/libtrace.so.1 b/lib/libtrace.so.1 Binary files differindex 888518c..3b5a73e 100755 --- a/lib/libtrace.so.1 +++ b/lib/libtrace.so.1 diff --git a/src/libtrace/TODO b/src/libtrace/TODO new file mode 100644 index 0000000..359fbc1 --- /dev/null +++ b/src/libtrace/TODO @@ -0,0 +1,10 @@ +* Las funciones llamadas dentro de otras por primera vez dejan de + estar controladas por el programa (cambia su GOT sin que nos + enteremos) +* Las funciones de no retorno (ie, longjmp), pueden fastidiar al + programa. + +SOLUCION: Olvidarnos del 'reentrant' y loggear todo; y comprobar + *todo el GOT* del programa de vez en cuando (de manera + inteligente; cuando sabemos que se ha llamado a una funcion + nueva, por ejemplo) diff --git a/src/libtrace/init_libtrace.c b/src/libtrace/init_libtrace.c index 435e6da..dd38239 100644 --- a/src/libtrace/init_libtrace.c +++ b/src/libtrace/init_libtrace.c @@ -147,8 +147,18 @@ static int reentrant=0; static void print_results(u_long arg); +void kk(void) +{ + char buf[1024]; + sprintf(buf, "-> %s\n", pointer_tmp->name); + _sys_write(fd,buf,strlen(buf)); +} + static void new_func(void) { +#if 1 + kk(); +#endif if (reentrant) { #if 0 _sys_write(fd,"reentrant\n",10); @@ -166,8 +176,9 @@ _sys_write(fd,"reentrant\n",10); /* This is only to avoid a GCC warning; shouldn't be here: */ - where_to_return = returned_value = (u_long)print_results; + where_to_return = (long)print_results; + /* HCK: Is all these stuff about 'ebp' buggy? */ __asm__ __volatile__( "movl %ebp, %esp\n\t" "popl %ebp\n\t" diff --git a/src/libtrace/print_results.c b/src/libtrace/print_results.c index 92758ff..fe675b5 100644 --- a/src/libtrace/print_results.c +++ b/src/libtrace/print_results.c @@ -150,15 +150,17 @@ static struct debug_functions functions_info[] = { {"setvbuf", _TYPE_INT, 4, {_TYPE_ADDR, _TYPE_ADDR, _TYPE_INT, _TYPE_UINT, 0}}, {"sigaction", _TYPE_INT, 3, {_TYPE_INT, _TYPE_ADDR, _TYPE_ADDR, 0, 0}}, {"sleep", _TYPE_UINT, 1, {_TYPE_UINT, 0, 0, 0, 0}}, - {"sprintf", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"sscanf", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"strcasecmp", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"stpcpy", _TYPE_STRING,2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"strcmp", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"strcoll", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"strcspn", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, - {"strdup", _TYPE_STRING,1, {_TYPE_STRING, 0, 0, 0, 0}}, - {"strerror", _TYPE_STRING,1, {_TYPE_INT, 0, 0, 0, 0}}, + {"sprintf", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"sscanf", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"strcasecmp", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"stpcpy", _TYPE_STRING,2, {_TYPE_STRING, _TYPE_STRING}}, + {"strcmp", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"strcpy", _TYPE_STRING,2, {_TYPE_STRING, _TYPE_STRING}}, + {"strcoll", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"strcspn", _TYPE_INT, 2, {_TYPE_STRING, _TYPE_STRING}}, + {"strdup", _TYPE_STRING,1, {_TYPE_STRING}}, + {"strerror", _TYPE_STRING,1, {_TYPE_INT}}, + {"strncmp", _TYPE_INT, 3, {_TYPE_STRING, _TYPE_STRING, _TYPE_INT}}, {"strpbrk", _TYPE_STRING,2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, {"strrchr", _TYPE_STRING,2, {_TYPE_STRING, _TYPE_CHAR, 0, 0, 0}}, {"strspn", _TYPE_UINT, 2, {_TYPE_STRING, _TYPE_STRING, 0, 0, 0}}, |