git-svn-id: svn://svn.berlios.de/openocd/trunk@228 b42882b7-edfa-0310-969c-e2dbd0fdcd60

This commit is contained in:
mifi 2007-12-14 19:08:03 +00:00
parent 900c70f8e8
commit 05abd25ddc
2 changed files with 68 additions and 2 deletions

View File

@ -21,6 +21,40 @@
#include "config.h"
#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 <stdio.h>

View File

@ -69,6 +69,38 @@ struct timezone {
extern int gettimeofday(struct timeval *tv, struct timezone *tz);
#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
extern char* strndup(const char *s, size_t n);