--- rpl/src/rpl.h 2010/02/10 10:14:26 1.8 +++ rpl/src/rpl.h 2010/02/28 14:47:14 1.9 @@ -276,6 +276,17 @@ typedef unsigned char t_8_bits; __VA_ARGS__; fflush(stdout); \ pthread_kill(pthread_self(), SIGBUS); }} while(0) +#define NOTICE(m) \ + do \ + { \ + ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \ + getpid(), (unsigned long long) pthread_self(), \ + __FUNCTION__, __FILE__, __LINE__, m); \ + fflush(stderr); \ + } while(0) + +#ifdef __GLIBC__ +#include #define BACKTRACE(n) \ do \ { \ @@ -300,15 +311,9 @@ typedef unsigned char t_8_bits; fflush(stdout); \ pthread_mutex_unlock(&mutex); \ } while(0) - -#define NOTICE(m) \ - do \ - { \ - ufprintf(stderr, "[%d-%llu] %s() from %s at line %d: %s\n", \ - getpid(), pthread_self(), __FUNCTION__, __FILE__, __LINE__, \ - m); \ - fflush(stderr); \ - } while(0) +#else +#define BACKTRACE(n) NOTICE("BACKTRACE only defined in glibc") +#endif /* @@ -317,10 +322,24 @@ typedef unsigned char t_8_bits; ================================================================================ */ +#ifdef DEBUG_MEMOIRE +void *debug_memoire_ajout(size_t taille, const unsigned char *fonction, + unsigned long ligne, const unsigned char *argument); +void *debug_memoire_modification(void *pointeur, size_t taille, + const unsigned char *fonction, unsigned long ligne, + const unsigned char *argument); +void debug_memoire_retrait(void *ptr); + +#define malloc(s) debug_memoire_ajout(s, __FUNCTION__, __LINE__, #s) +#define free(s) debug_memoire_retrait(s) +#define realloc(s, t) debug_memoire_modification(s, t, \ + __FUNCTION__, __LINE__, #t) +#endif + #ifdef DEBUG_RETURN #define return uprintf("[%d] Return from <%s()> at line #%d " \ "(%s [%d])\n", (int) getpid(), __FUNCTION__, \ - __LINE__, strerror(errno), errno); fflush(stdout); errno=0; return + __LINE__, strerror(errno), errno); fflush(stdout); errno = 0; return #endif #ifdef DEBUG_MUTEX @@ -2356,6 +2375,7 @@ void conversion_hms_vers_decimal(real8 * void conversion_radians_vers_degres(real8 *angle); void correction_formateur_tex(struct_processus *s_etat_processus, unsigned char **ligne); +void debug_memoire_verification(struct_processus *s_etat_processus); void depilement_pile_systeme(struct_processus *s_etat_processus); void derivation(struct_processus *s_etat_processus, struct_objet **s_expression); @@ -2675,6 +2695,8 @@ inline ssize_t write_atomic(struct_proce */ int alsprintf(unsigned char **strp, const char *fmt, ...); +int tex_fprintf(struct_processus *s_etat_processus, + file *flux, const char *format, ...); int transliterated_fprintf(struct_processus *s_etat_processus, file *flux, const char *format, ...); int valsprintf(unsigned char **strp, const char *fmt, va_list ap);