git-svn-id: svn://svn.berlios.de/openocd/trunk@228 b42882b7-edfa-0310-969c-e2dbd0fdcd60
This commit is contained in:
parent
900c70f8e8
commit
05abd25ddc
|
@ -19,7 +19,41 @@
|
|||
***************************************************************************/
|
||||
#ifdef HAVE_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"
|
||||
|
||||
|
|
|
@ -67,7 +67,39 @@ struct timezone {
|
|||
};
|
||||
|
||||
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 */
|
||||
#ifndef HAVE_STRNDUP
|
||||
|
|
Loading…
Reference in New Issue