$header "const char *chkr_message[]"
$declare "extern const char *chkr_message[];"
$hformat "#define %1	chkr_message[%n]"

######## for parse-args.c
M_IS_RUNNING		"`%s' is running "
M_UNKNOWN_OP		"Checker doesn't know this option: %s\n"
M_UNKNOWN_DISABLE	"Checker doesn't know this `disable' option: %s\n"
M_LOPTION_NEED_ARG	"Option `%s' require an argument.\n"
M_SOPTION_NEED_ARG	"Option `%s' (short form used) require an argument.\n"
M_LOPTION_NALLOW_ARG	"Option `%s' doesn't allow an argument.\n"
M_SOPTION_NALLOW_ARG	"Option `%s' (short form used) doesn't allow an argument.\n"
M_OPTION_ILLEGAL	"Illegal option `%s'.\n"
M_PRGNAME_NOT_FOUND	"Can't find program name.\n"
M_ARGV0_IS		"My name (given by argv[0]) is %s\n"
M_STOPPING_MYSELF	"Stopped before main. To continue, try `fg' or `kill -%d %d'\n"
M_ALREADY_INIT		"Crt0.o was invoked twice.  Aborting\n"
M_TOTAL_GARBAGE_TIME	"Total time used for garbage detecting: %d sec(s) %d usecs.\n"
######## for chkr-syscall.c
M_IOCTL_UNIMPLEMENT	"Sorry, this ioctl (0x%x) is not implemented.\n"
M_FCNTL_UNIMPLEMENT	"Sorry, this fcntl (0x%x) is not implemented.\n"
M_SYSCALL_UNIMPLEMT	"Sorry, this syscall (0x%x) is not implemented.\n"
M_IPC_UNIMPLEMENT	"Sorry, this ipc syscall (0x%x) is not implemented.\n"
M_SEND_DESCRIPTION	"Please send a description of it to the author of Checker.\n"
######### for symtab.c
M_STACK_FRAMES_ARE	"Stack frames are:\n"
M_CANT_FIND_MAIN	"Can't find main frame, you lose!\n"
M_CANT_OPEN_BINARY	"Can't open the binary file `%s'.\nAbort\n"
M_CANT_F_GOOD_INFO	"Can't find good information in the binary file.\nAbort\n"
M_PC__NOSYMTAB		"$\tpc=0x%08x\n"
M_PC___IN___AT_		"\tpc=0x%08x in %s at %s:%d\n"
M_UNKNOWN		"*unknown*"
M_BAD_STR		"<bad string table index>"
######### for utils.c
M_UNKNOWN_MALLOC0	"This argument %s for the `--malloc0=' option is unknown.\n"
M_MALLOC0_WARNING	"Warning: using %s with a size of 0\n"
M_MALLOC_LARGE_SIZE	"Warning: calling %s with a size of %lu\n"
M_C_BAD_MPLINK		"prev link of mdesc 0x%x is bad.\n"
M_C_BAD_LAST_MDESC	"The last mdesc is not really the last one...\n"
M_C_CHECK_MDESC		"Check mdesc 0x%08x:\n"
M_C_FB_OR_LB_BAD	"_firstblock or _lastblock is bad\n"
M_C_FM_OR_LM_BAD	"_firstmdesc or _lastmdesc is bad.\n"
M_C_NO_BLOCKS		"No blocks. Sorry.\n"
M_C_FBLOCK_BAD		"_firstblock is bad.\n"
M_C_LBLOCK_BAD		"_lastblock is bad.\n"
M_C_BAD_LINEARITY	"Bad linearity detected with blocks 0x%x and 0x%x.\n"
M_C_BAD_PLINK		"`prev' link of block 0x%x is bad.\n"
M_C_BAD_BLOCK_SIZE	"Size of block 0x%x is bad\n"
M_C_BAD_LAST_BLOCK	"The last block is not really the last one...\n"
M_C_STOP_HERE		"Stop here.\n"
M_C_U_AGED_BLOCK	"Block %u is an unknown aged block.\n"
M_C_BAD_PL_YOUNGB	"Bad `prev' link for the younger block %u\n"
M_C_NON_AGED_BLOCK	"Non-aged block %u in aged list.\n"
M_C_BAD_NUM_AGED_B	"Bad number of aged block (%d instead of %d).\n"
M_C_TOO_AGED_BLOCK	"Found too many old blocks (%d instead of %d).\n"
M_C_BAD_PL_F_FREEB	"Bad `prev' link in first free block %u.\n"
M_C_FREEB_BAD_STAT	"Free block 0x%x has a bad state.\nAbort\n"
M_C_BLOCK_BAD_LIST	"Block 0x%x in bad list.\n"
M_C_BAD_PLIN_FREEB	"Bad `prev' link in free block %u.\n"
M_C_BAD_HEAPINDEX	"_heapindex is bad.\n"
M_C_UNKNOWN_FREEB	"Block %u is an unknown free block.\n"
M_C_FREE_AND_FREE	"Free block 0x%x is followed by another free block.\n"
M_C_NO_BUSY_BLOCK	"There is no busy block.\n"
M_C_BUSY_BLOCK_ARE	"Busy blocks are:\n"
M_C_BLOC_N_IS_BUSY	"Block (addr: 0x%x), size %u kb is busy.\n"
M_C_BLOCK_SIZ_LESS	"Block of size less than %d bytes.\n"
M_C_BLOCK_AT_SIZE	"Block at 0x%x, size %dKb\n"
######### for free.c
M_BAD_NLINK_4BLOCK	"Bad next link for block %u.\n"
M_FOUND_AGED_BLOCK	"Found non-aged block %u in aged list.\n"
######### for garbage.c
M_GARBAGE_TIME		"Garbage detector time: %d sec(s) %d usecs.\n"
M_NO_LEAK		"There are no leaks.\n"
M_ONE_LEAK		"There is 1 leak and %d potential leak(s).\n"
M_NBR_LEAKS		"There are %d leaks and %d potential leak(s).\n"
M_LEAKS_USE_N_BYTE	"Leaks consume %u bytes (%u KB) / %u KB.\n"
M_P_MEM_IS_LOST		"(%2d.%02d%% of memory is leaked.)\n"
M_FOUND_N2_BYTES	"Found %u block(s) of size %u.\n"
M_LOST_IS_PTR		"Block at ptr=0x%x\n"
M_BYTES_NOT_DISPLAYED	"%d bytes were not individually identified (threshold).\n"
M_NO_INUSE		"There are no blocks used.\n"
M_ONE_INUSE		"There is 1 block used.\n"
M_NBR_INUSE		"There are %d blocks used.\n"
M_INUSE_USE_N_BYTE	"Blocks used consume %u bytes (%u KB) / %u KB.\n"
M_CANT_USE_SYMTAB	"Can't access the symbol table.\n"
######### for maccess.c
M_NO_BM_4ADDRESS	"No bitmap for this address.\n"
M_TRY_TO_EXECUTE	"Trying to execute a function at 0x%x inside the %s.\n"
M_BO_NOT_ALIGNED	"Hmmm, bit_offset is not lined up !! Ignore.\n"
M_ERR_SET_RIGHT		"Error in chkr_set_right\n"
M_BAD_LEN_IN_SR		"len > bitmem.length or len == 0\n"
M_ACC_DATA_ALIGN	"When accessing to data at 0x%08x, size: %d, boundary: %d.\n"
M_PROD_BUS_ERR		"THIS SHOULD CAUSE A BUS ERROR.\n"
M_SRC_IN_CP_BM		"Error with `src' in `chkr_copy_bm'\n"
M_DEST_IN_CP_BM		"Error with `dest' in `chkr_copy_bm'\n"
M_ALIGN_IN_CP_BM	"Bad alignment in `chkr_copy_bm'\n"
M_PROF_INFO_HERE	"Profile information follows:\n"
M_HANDLED_N_TIME	"The %s was handled (accessed) %d time%s.\n"
M_HANDLED_MEM		"The program accessed memory %u times.\n"
M_BM_CALLED		"The stack limit was adjusted %u times.\n"
M_ACC_ERR_REP		"%u memory access errors reported.\n"
M_ACC_ERR_TOT		"%u memory access errors.\n"
M_ACC_MALLOC_CALLS	"%u malloc/mmalloc calls.\n"
M_ACC_FREE_CALLS	"%u free/mfree calls.\n"
M_ACC_REALLOC_CALLS	"%u realloc/mrealloc calls.\n"
M_NULL_ZONE		"NULL zone"
M_TEXT_SEGMENT		"text segment"
M_DATA_SEGMENT		"data segment"
M_HEAP_BRK_SEGMENT	"heap (sbrk)"
M_HEAP_MAP_SEGMENT	"heap (mmap)"
M_STACK_SEGMENT		"stack"
M_MMAP_SEGMENT		"mmap zone"
M_SHM_SEGMENT		"shared memory"
M_MAPPED_BY		"The region was mapped by:\n"
M_ATTACHED_BY		"The shared memory was attached by:\n"
M_BLOCK_ALLO_FRM	"The block was allocated from:\n"
M_KNOW_STACK_LIM	"known stack limit= %08p\n"
M_AFTER_LAST_BLOCK	"after the last block.\n"
M_INSIDE_FBLOCK		"inside a free block.\n"
M_BLOCK_ID		" (start: 0x%x, length: %u, mdesc: 0x%x).\n"
M_BEFORE_BLOCK		"%d byte(s) before a block"
M_INSIDE_BLOCK		"%d byte(s) into a block"
M_AFTER_BLOCK		"%d byte(s) after a block"
M_N_FREE_CALLED		"free was called %d time(s) since this block was freed by:\n"
M_MDESC_CREATED_BY	"This mmalloc heap was created by:\n"
M_MEM_ACCESS_ERR	"Memory access error: %s\n"
M_ACC_ERR_WHERE		"When %s %d byte(s) at address %08p, inside the %s.\n"
M_USE_NULL_PTR		"You probably deferenced a null pointer.\n"
M_PROD_SEG_FAULT	"THIS SHOULD CAUSE A SEGMENTATION FAULT.\n"
M_CANT_MODIFY_IT	"Cannot be modified.\n"
M_SIZES_FOR_OOM		"Total memory size: %u Kb;\ntotal aged size: %u Kb;\nrequest size: %d b\n"
############# for fd.c
M_FILE_OPENED_BY	"This file was created by:\n"
M_FILE_CLOSED_BY	"This file was closed by:\n"
############# for vprintf.c
M_FROM_CHECKER		"From Checker (pid:%s): "
############# for signal.c
M_REC_SIGNAL		"Receive signal %d (%s): "
M_SIG_IGNORED		"(ignored).\n"
M_SIG_DEFAULT		"(default action: "
M_SIG_TERMINATE		"terminate "
M_SIG_CORE		"core "
M_SIG_STOP		"stop "
M_SIG_IGNORE		"ignore "
M_SIG_FORCED		"forced "
M_SIG_SYNCHRON		"synchronous "
M_SIG_CAUGHT		"(caught).\n"
M_UNKNOWN_SIG		"Unknown signal `%s'.\n"
M_BAD_REC_SIG		"Signal %d received is totaly unknown! Abort\n"
M_SYN_REC_SIG		"Synchronous signal %s was received in Checker. Abort\n"
