git-svn-id: svn://svn.berlios.de/openocd/trunk@228 b42882b7-edfa-0310-969c-e2dbd0fdcd60
parent
900c70f8e8
commit
05abd25ddc
|
@ -19,7 +19,41 @@
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
#ifdef HAVE_CONFIG_H
|
#ifdef HAVE_CONFIG_H
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* DANGER!!!! These must be defined *BEFORE* replacements.h and the malloc() macro!!!! */
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <strings.h>
|
||||||
|
/*
|
||||||
|
* clear_malloc
|
||||||
|
*
|
||||||
|
* will alloc memory and clear it
|
||||||
|
*/
|
||||||
|
void *clear_malloc(size_t size)
|
||||||
|
{
|
||||||
|
void *t = malloc(size);
|
||||||
|
if (t!=NULL)
|
||||||
|
{
|
||||||
|
memset(t, 0x00, size);
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *fill_malloc(size_t size)
|
||||||
|
{
|
||||||
|
void *t = malloc(size);
|
||||||
|
if (t!=NULL)
|
||||||
|
{
|
||||||
|
/* We want to initialize memory to some known bad state. */
|
||||||
|
/* 0 and 0xff yields 0 and -1 as integers, which often */
|
||||||
|
/* have meaningful values. 0x5555... is not often a valid */
|
||||||
|
/* integer and is quite easily spotted in the debugger */
|
||||||
|
/* also it is almost certainly an invalid address */
|
||||||
|
memset(t, 0x55, size);
|
||||||
|
}
|
||||||
|
return t;
|
||||||
|
}
|
||||||
|
|
||||||
#include "replacements.h"
|
#include "replacements.h"
|
||||||
|
|
||||||
|
|
|
@ -67,7 +67,39 @@ struct timezone {
|
||||||
};
|
};
|
||||||
|
|
||||||
extern int gettimeofday(struct timeval *tv, struct timezone *tz);
|
extern int gettimeofday(struct timeval *tv, struct timezone *tz);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/**** clear_malloc & fill_malloc ****/
|
||||||
|
void *clear_malloc(size_t size);
|
||||||
|
void *fill_malloc(size_t size);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Now you have 3 ways for the malloc function:
|
||||||
|
*
|
||||||
|
* 1. Do not change anything, use the original malloc
|
||||||
|
*
|
||||||
|
* 2. Use the clear_malloc function instead of the original malloc.
|
||||||
|
* In this case you must use the following define:
|
||||||
|
* #define malloc((_a)) clear_malloc((_a))
|
||||||
|
*
|
||||||
|
* 3. Use the fill_malloc function instead of the original malloc.
|
||||||
|
* In this case you must use the following define:
|
||||||
|
* #define malloc((_a)) fill_malloc((_a))
|
||||||
|
*
|
||||||
|
* We have figured out that there could exist some malloc problems
|
||||||
|
* where variables are using without to be initialise. To find this
|
||||||
|
* places, use the fill_malloc function. With this function we want
|
||||||
|
* to initialize memory to some known bad state. This is quite easily
|
||||||
|
* spotted in the debugger and will trap to an invalid address.
|
||||||
|
*
|
||||||
|
* clear_malloc can be used if you want to set not initialise
|
||||||
|
* variable to 0.
|
||||||
|
*
|
||||||
|
* If you do not want to change the malloc function, to not use one of
|
||||||
|
* the following macros. Which is the default way.
|
||||||
|
*/
|
||||||
|
//#define malloc((_a)) clear_malloc((_a))
|
||||||
|
//#define malloc((_a)) fill_malloc((_a))
|
||||||
|
|
||||||
/* GNU extensions to the C library that may be missing on some systems */
|
/* GNU extensions to the C library that may be missing on some systems */
|
||||||
#ifndef HAVE_STRNDUP
|
#ifndef HAVE_STRNDUP
|
||||||
|
|
Loading…
Reference in New Issue