summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarcin Slusarz <marcin.slusarz@gmail.com>2011-09-15 21:11:32 +0200
committerMarcin Slusarz <marcin.slusarz@gmail.com>2011-09-17 23:05:25 +0200
commitb0d6d4306fcfb9dc89ebbd9568b7159dfac90a30 (patch)
treea8328455502ae45a1d8b144a3f5da75bfe553018
parent449475334a7241356791cb7edaa753cb8e001062 (diff)
mmt: use only as much stack as needed in fastpaths
-rw-r--r--mmt/mmt_trace.c38
1 files changed, 20 insertions, 18 deletions
diff --git a/mmt/mmt_trace.c b/mmt/mmt_trace.c
index 0f0d2510..abd21c61 100644
--- a/mmt/mmt_trace.c
+++ b/mmt/mmt_trace.c
@@ -438,6 +438,7 @@ struct mmt_mmap_data *mmt_add_region(int fd, Addr start, Addr end,
}
#ifdef MMT_PRINT_FILENAMES
+#define MMT_NAMESTR_LEN 256
static void mydescribe(Addr inst_addr, char *namestr, int len)
{
char filename[100];
@@ -452,6 +453,7 @@ static void mydescribe(Addr inst_addr, char *namestr, int len)
VG_(snprintf) (namestr, len, "@%08lx", inst_addr);
}
#else
+#define MMT_NAMESTR_LEN 1
static inline void mydescribe(Addr inst_addr, char *namestr, int len)
{
namestr[0] = 0;
@@ -462,8 +464,8 @@ VG_REGPARM(2)
void mmt_trace_store(Addr addr, SizeT size, Addr inst_addr, UWord value)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[22];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
@@ -488,7 +490,7 @@ void mmt_trace_store(Addr addr, SizeT size, Addr inst_addr, UWord value)
default:
return;
}
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "w %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}
@@ -497,8 +499,8 @@ VG_REGPARM(2)
void mmt_trace_store2(Addr addr, SizeT size, Addr inst_addr, UWord value1, UWord value2)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[44];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
@@ -520,7 +522,7 @@ void mmt_trace_store2(Addr addr, SizeT size, Addr inst_addr, UWord value1, UWord
return;
}
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "w %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}
@@ -530,15 +532,15 @@ VG_REGPARM(2)
void mmt_trace_store4(Addr addr, Addr inst_addr, UWord value1, UWord value2, UWord value3, UWord value4)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[44];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
return;
VG_(sprintf) (valstr, "0x%08lx,0x%08lx,0x%08lx,0x%08lx", value1, value2, value3, value4);
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "w %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}
@@ -548,8 +550,8 @@ VG_REGPARM(2)
void mmt_trace_load(Addr addr, SizeT size, UInt inst_addr, UWord value)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[22];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
@@ -574,7 +576,7 @@ void mmt_trace_load(Addr addr, SizeT size, UInt inst_addr, UWord value)
default:
return;
}
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "r %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}
@@ -583,8 +585,8 @@ VG_REGPARM(2)
void mmt_trace_load2(Addr addr, SizeT size, UInt inst_addr, UWord value1, UWord value2)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[44];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
@@ -605,7 +607,7 @@ void mmt_trace_load2(Addr addr, SizeT size, UInt inst_addr, UWord value1, UWord
default:
return;
}
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "r %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}
@@ -615,15 +617,15 @@ VG_REGPARM(2)
void mmt_trace_load4(Addr addr, SizeT size, UInt inst_addr, UWord value1, UWord value2, UWord value3, UWord value4)
{
struct mmt_mmap_data *region;
- char valstr[64];
- char namestr[256];
+ char valstr[44];
+ char namestr[MMT_NAMESTR_LEN];
region = find_mmap(addr);
if (likely(!region))
return;
VG_(sprintf) (valstr, "0x%08lx,0x%08lx,0x%08lx,0x%08lx", value1, value2, value3, value4);
- mydescribe(inst_addr, namestr, 256);
+ mydescribe(inst_addr, namestr, MMT_NAMESTR_LEN);
VG_(message) (Vg_DebugMsg, "r %d:0x%04x, %s %s\n", region->id, (unsigned int)(addr - region->start), valstr, namestr);
}