aboutsummaryrefslogtreecommitdiff
path: root/src/libtrace/TODO
blob: b41204939969d48dff28660bcca18cd4f7a99b8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
* 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)

WARNING: Si se quiere loggear todo, hay que tener presente que pueden
         estar ejecutandose varias llamadas a la vez; no basta con
         tener un 'where_to_return'; hay que tener muchos (tal vez se
         podria hacer con un struct similar a 'ax_jmp_t')...

* Utilizar prefijos para cada simbolo dentro de un mismo ejecutable
  (ejemplo: init_a, init_b, print_a, print_b ...)

* Usar 'errno' para loggear errores de function calls

* Usar 'msync' (o algo parecido; 'access'?) para ver si las
  direcciones dereferenciadas son validas, para evitar SIGSEGV