1
0
This repository has been archived on 2024-07-22. You can view files and clone it, but cannot push or open issues or pull requests.
TP-Link_Archer-XR500v/EN7526G_3.18Kernel_SDK/apps/public/tools/dmalloc-5.5.2/settings.dist
2024-07-22 01:58:46 -03:00

461 lines
16 KiB
Plaintext
Executable File

/*
* Manual configuration flags
*
* Copyright 2000 by Gray Watson
*
* This file is part of the dmalloc package.
*
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the
* above copyright notice and this permission notice appear in all
* copies, and that the name of Gray Watson not be used in advertising
* or publicity pertaining to distribution of the document or software
* without specific, written prior permission.
*
* Gray Watson makes no representations about the suitability of the
* software described herein for any purpose. It is provided "as is"
* without express or implied warranty.
*
* The author may be contacted via http://dmalloc.com/
*
* $Id: //BBN_Linux/Branch/Branch_for_Rel_TP_ASEAN_20161216/tclinux_phoenix/apps/public/tools/dmalloc-5.5.2/settings.dist#1 $
*/
/*
* PROGRAMMING NOTE: this file cannot be included before conf.h, so
* you might as well only include conf.h and never this file.
*/
#ifndef __SETTINGS_H__
#define __SETTINGS_H__
/*
* Should we allow zero length allocations? This will generate the
* smallest possible allocation.
*
* FYI: if fence post checking is requested, the top and bottom of the
* fence post information will be touching.
*/
#define ALLOW_ALLOC_ZERO_SIZE 1
/*
* Should we allow realloc of a NULL pointer? If set to one, this
* will call malloc when 0L is realloc-ed. This is useful when you
* are extending an array in a loop and do not want to allocate it
* specially the first time.
*/
#define ALLOW_REALLOC_NULL 1
/*
* Should we allow realloc to a 0 size to cause the pointer to be
* freed? If set to one, this will call free when a pointer is
* realloc-ed to a size of 0. Thanks to Stefan Froehlich
* for patiently pointing that the realloc in just about every Unix
* has this functionality.
*/
#define ALLOW_REALLOC_SIZE_ZERO 1
/*
* I have swayed to public pressure and allowing free(0L) is now the
* default. Sigh. :-)
*
* Should we allow the free of a NULL pointer and if it happens,
* should a message be generated to that effect. Most (if not all)
* POSIX C libraries allow you to free() or delete() a NULL pointer
* and a number of programming reference manuals mention that freeing
* of NULL is "allowed". However, I believe that it is bad form,
* promotes lazy pointer handling, and can often hide program bugs. I
* encourage you to do something like the following in your programs:
* if (pnt != NULL) { free(pnt); }
*
* Setting ALLOW_FREE_NULL to 0 will cause an exception whenever a
* free of NULL is encountered allowing the user to determine where
* s/he is freeing a possibly random pointer. I recommend at least
* logging a message with the ALLOW_FREE_NULL_MESSAGE set to 1.
*
* Even with ALLOW_FREE_NULL set to 1, you can enable the
* 'error-free-null' token at runtime for a specific program to
* generate an exception when it sees a free(0L).
*/
#define ALLOW_FREE_NULL 1
#define ALLOW_FREE_NULL_MESSAGE 1
/*
* Should we use the ra-address macros in return.h. These are system
* specific macros designed to return the return-address for logging
* callers (i.e. possible offenders) of malloc routines.
*
* Please mail me if you have any questions with this functionality.
*/
#define USE_RETURN_MACROS 1
/*
* Write this character into memory when it is allocated and not
* calloc-ed if the alloc-blank token is enabled. It will also write
* this into realloc'd memory which you extend or reduce. You can
* verify that these sections have not been overwritten with the
* check-blank token.
*
* \332 == 0xda, 0332, decimal 218 (i.e. dmalloc-alloc)
*/
#define ALLOC_BLANK_CHAR '\332'
/*
* Write this character into memory when it is freed if the free-blank
* token is enabled. You can verify that these sections have not been
* overwritten with the check-blank token.
*
* \337 == 0xdf, 0337, decimal 223 (i.e. dmalloc-free)
*/
#define FREE_BLANK_CHAR '\337'
/*
* The following information sets limits on the size of the source
* file name and line numbers returned by the __FILE__ and __LINE__
* compiler macros. You may need to tune then to fit your environment
* although I would argue that if you have filenames longer than 40
* characters or files longer than 10,000 lines, you are doing
* something wrong.
*
* MIN_FILE_LENGTH 3 => file "[a-zA-Z].c"
*
* Set MAX_FILE_LENGTH or MAX_LINE_NUMBER to be 0 to disable checks.
*
* NOTE: if the max is changed then the dmalloc.texi file reference to
* it will need to be changed too.
*/
#define MIN_FILE_LENGTH 3
#define MAX_FILE_LENGTH 100
#define MAX_LINE_NUMBER 30000
/*
* The largest allowable allocation size. This is only for
* verification purposes to control allocations of bizarre sizes. Any
* allocation larger than this will generate a ERROR_TOO_BIG error.
*
* Set to 0 to disable the test altogether.
*/
#define LARGEST_ALLOCATION 268435456UL /* 256 mb */
/*
* Automatically call dmalloc_shutdown if on_exit or atexit is
* available. See conf.h for whether configure found on_exit or
* atexit calls. If neither is available, your program will have to
* call dmalloc_shutdown yourself before it exits. You can also take
* a look at atexit.c in the contrib directory which may provide this
* useful functionality for your system.
*
* NOTE: If you are having problems with the library going recursive
* (see LOCK_THREADS below if you are using pthreads), you might want
* to try setting this to 0. Because the library makes a call to
* on_exit or atexit to register itself, it may cause memory
* transactions by the system causing the dreaded recursive message.
* You may then be forced to register dmalloc_shutdown yourself via
* on_exit or atexit in main() or call dmalloc_shutdown directly
* before you exit().
*/
#define AUTO_SHUTDOWN 1
/*
* The ABORT_OKAY is auto-configured but may have to be adjusted by
* forcing the USE_ABORT to be 1 or 0. On some OS's, abort calls
* fclose() which may want to free memory making the library go
* recursive when it is aborting. See ABORT_OKAY in the conf.h file
* for more information.
*
* If you need to override it or if ABORT_OKAY is 0, set KILL_PROCESS
* to the proper way to stop the program. Killing the current process
* (id 0) with SIGABRT works on a number of Unix systems. You may
* have to define some include file to get the value for the signal
* that is used.
*
* Alternatives might be:
*
* #define KILL_PROCESS { int *_int_p = 0L; *_int_p = 1; }
*/
#if ABORT_OKAY
#define USE_ABORT 1
#else
#define USE_ABORT 0
#endif
#if SIGNAL_OKAY
#define KILL_INCLUDE <signal.h>
#define KILL_PROCESS (void)kill(0, SIGABRT)
#endif
/*
* Define the signals that are to be caught by the catch-signals
* token. When caught, these signals will cause an automatic shutdown
* of the library so that the not-freed memory and other statistics will
* be displayed. Thanks Marty.
*/
#if SIGNAL_OKAY
#define SIGNAL1 SIGHUP
#define SIGNAL2 SIGINT
#define SIGNAL3 SIGTERM
#undef SIGNAL4
#undef SIGNAL5
#undef SIGNAL6
#endif
/*
* Number of bytes to write at the top of allocations (if fence-post
* checking is enabled). A larger number means more memory space used
* up but better protection against fence overruns. See the manual
* for more information.
*/
#define FENCE_TOP_SIZE 4
/*
* Number of bytes to write at the bottom of allocations. See the
* FENCE_TOP_SIZE setting above or the manual for more information.
*
* WARNING: this should changed with caution and probably should only be
* increased. If you need to change it, use (ALLOCATION_ALIGNMENT *
* X) or some such. For more information see ALLOCATION_ALIGNMENT in
* conf.h.
*/
#define FENCE_BOTTOM_SIZE ALLOCATION_ALIGNMENT
/*
* Amount of space that we are to display whenever we need to dump a
* pointer's contents to a log file or stream. This should be more
* than FENCE_BOTTOM_SIZE and FENCE_TOP_SIZE.
*/
#define DUMP_SPACE 20
/*
* At the front of each log message, print the output from the time()
* call as a number. This requires that the time function be defined.
*/
#define LOG_TIME_NUMBER 1
#define TIME_INCLUDE <time.h>
/*
* Write the iteration count at the start of every log entry. This is
* handy when you are using the DMALLOC_START variable and want to
* begin the tough debugging at a certain point. This is also returned
* by the dmalloc_mark() function.
*/
#define LOG_ITERATION 1
/*
* Write the pid number at the start of every log entry if the
* getpid() function is available. This is handy when you are using
* dmalloc with a program which forks. See LOG_REOPEN below.
*/
#define LOG_PID 0
/*
* If the getpid() function is available, notice when the pid of the
* process changes and reopen the logfile. This is handy when you are
* using dmalloc with a program which forks and you want the separate
* forked programs to have separate logs.
*
* NOTE: This only works if the %p string is in the logfile name
* otherwise the log might reopen and clobber the existing log.
*/
#define LOG_REOPEN 1
/*
* Store the number of times a pointer is "seen" being allocated or
* freed -- it shows up as a s# (for seen) in the logfile. This is
* useful for tracking of not-freed memory. See the documents for more
* information.
*
* NOTE: This creates a certain amount of memory overhead.
*/
#define LOG_PNT_SEEN_COUNT 1
/*
* Store the iteration count when a pointer is allocated -- it
* shows up as a i# (for iteration) in the logfile. This is to give
* you some idea when during program execution, a pointer was
* allocated but not freed.
*
* NOTE: This creates a certain amount of memory overhead.
*/
#define LOG_PNT_ITERATION 0
/*
* At the front of each log message, print the output from the ctime()
* function (not including the \n). The TIME_NUMBER_TYPE is the type
* that will store the output of time() and whose address we will pass
* into ctime. This requires that the ctime and time functions both
* be defined.
*/
#if LOG_TIME_NUMBER == 0
#define LOG_CTIME_STRING 1
#define TIME_TYPE unsigned int
#endif
/*
* Store the time (in seconds) or timeval (in seconds and
* microseconds) when a pointer is allocated -- it shows up as a w#
* (for when) in the logfile. This is to give you some idea when a
* pointer was allocated but not freed. The library will log the
* starting and the ending time if either of these flags is set.
* TIMEVAL_INCLUDE is the include file to define struct timeval and
* GET_TIMEVAL does the actual reading of the current time of day.
*
* WARNING: only TIME _or_ TIMEVAL can be defined at one time.
*
* NOTE: This creates a certain amount of memory overhead.
*/
#define LOG_PNT_TIME 0
#ifndef TIME_INCLUDE
#define TIME_INCLUDE <time.h>
#endif
#ifndef TIME_TYPE
#define TIME_TYPE unsigned int
#endif
#define LOG_PNT_TIMEVAL 0
#define TIMEVAL_INCLUDE <sys/time.h>
#define TIMEVAL_TYPE struct timeval
#define GET_TIMEVAL(timeval) (void)gettimeofday(&(timeval), NULL)
/*
* In OSF (anyone else?) you can setup __fini_* functions in each
* module which will be called automagically at shutdown of the
* program. If you enable this variable, dmalloc will shut itself
* down and log statistics when the program closes on its own. Pretty
* cool OS feature.
*/
#define FINI_DMALLOC 0
/* If you enable this, you probably want the AUTO_SHUTDOWN flag turned off */
#if FINI_DMALLOC
#undef AUTO_SHUTDOWN
#define AUTO_SHUTDOWN 0
#endif
/*
* Keep addresses that are freed from recycling back into the used
* queue for a certain number of memory transactions. For instance,
* if this is set to 10 then after you free a pointer, it cannot be
* reused until after 10 additional calls to malloc, free, realloc,
* etc.. Define to 0 to disable. NOTE: setting to 1 does nothing.
*
* For more drastic debugging, you can enable the never-reuse flag
* which will cause the library to never reuse previously allocated
* memory. This may significantly expand the memory requirements of
* your system however.
*/
#define FREED_POINTER_DELAY 20
/*
* Size of the table of file and line number memory entries. This
* memory table records the top locations by file/line or
* return-address of all pointers allocated. It also tabulates the
* freed memory pointers so you can easily locate the large memory
* leaks. See the MEMORY_TABLE_TOP_LOG value below to 0 to disable
* the table.
*
* NOTE: The table will only hold the _first_ pointers into the table.
* If you configure a size of 10 then the 11th pointer allocated will
* not be accounted for.
*
* NOTE: the library will actually allocated 2 times this many entries
* for speed reasons.
*/
#define MEMORY_TABLE_SIZE 4096
/*
* This indicates how many of the top entries from the memory table
* you want to log by default to the log file.
*
* NOTE: to display the top entries correctly, your OS must support
* the quicksort function.
*/
#define MEMORY_TABLE_TOP_LOG 10
/*
* Define this to 1 to only display the memory table summary of the
* dumped table pointers. The default is to display the summary as
* well as the individual pointers so the individual leaks can be
* tracked down.
*/
#define DUMP_UNFREED_SUMMARY_ONLY 0
/*
* If (and _only_ if) your system does not have sbrk(), you can have
* dmalloc pre-allocate its only heap space. The default heap size is
* 1mb but you can set the space to be any size. For super-small
* memory applications please understand that dmalloc is in no way
* optimized for space and so you can easily run out of memory with
* it.
*
* WARNING: this probably should only be used if HAVE_SBRK and
* HAVE_MMAP are 0. Please send me email with any problems or
* comments on this feature.
*/
#if HAVE_SBRK == 0 && HAVE_MMAP == 0
#define INTERNAL_MEMORY_SPACE (1024 * 1024)
#endif
/*
* The default smallest allowable allocations in bytes. Any blocks
* asked for that are smaller will be rounded up to this size.
*/
#define DEFAULT_SMALLEST_ALLOCATION 8
/****************************** thread settings ******************************/
/*
* The following definition allows use of the library in threaded
* programs. The most common package is MIT's pthreads so this is the
* default. Please send me mail if these definitions are configurable
* enough to work with your thread package.
*/
#ifndef LOCK_THREADS
#define LOCK_THREADS 0
#endif
#if LOCK_THREADS
/*
* Which threads library header to include when needed. It is assumed
* that the types and functions in the THREAD_TYPE and THREAD_GET_ID
* macros below are defined in this include file. In addition, the
* thread mutex init, lock, and unlock functions in malloc.c should
* also be prototyped here.
*/
#define THREAD_INCLUDE <pthread.h>
/*
* As we approach the time when we start mutex locking the library, we
* need to init the mutex variable. This sets how many times before
* we start locking should we init the variable taking in account that
* the init itself might generate a call into the library. Ugh.
*/
#define THREAD_INIT_LOCK 2
/*
* For those threaded programs, the following settings allow the
* library to log the identity of the thread that allocated a specific
* pointer. The thread-id will show up as a ``t'' followed by a
* string identifying the thread. The LOG_THREAD_ID macro says
* whether the thread-id is logged at the front of all log messages.
* The THREAD_TYPE macro defines the variable type of the id. The
* THREAD_GET_ID macro is what function to call to get the currently
* running thread. The THREAD_ID_TO_STRING defines how the thread-id
* value is translated to the string necessary to be included with the
* ``t'' in the logfile.
*/
#define LOG_PNT_THREAD_ID 0
#define THREAD_TYPE pthread_t
#define THREAD_GET_ID() pthread_self()
#if HAVE_SNPRINTF
#define THREAD_ID_TO_STRING(buf, buf_size, thread_id) \
(void)snprintf((buf), (buf_size), "%#lx", \
(long)(thread_id))
#else
#define THREAD_ID_TO_STRING(buf, buf_size, thread_id) \
(void)sprintf((buf), "%#lx", (long)(thread_id))
#endif
#endif /* LOCK_THREADS */
#endif /* ! __SETTINGS_H__ */