From: Florian Krohm Date: Sun, 21 Oct 2012 02:55:56 +0000 (+0000) Subject: Fix a few Char/HChar mixups in callgrind. X-Git-Tag: svn/VALGRIND_3_9_0~599 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=becb3e50326b6ffd8fc42c7cd176675a881a0db2;p=thirdparty%2Fvalgrind.git Fix a few Char/HChar mixups in callgrind. git-svn-id: svn://svn.valgrind.org/valgrind/trunk@13069 --- diff --git a/callgrind/bbcc.c b/callgrind/bbcc.c index ad8a76d490..9a7e8aadc2 100644 --- a/callgrind/bbcc.c +++ b/callgrind/bbcc.c @@ -338,9 +338,9 @@ void insert_bbcc_into_hash(BBCC* bbcc) current_bbccs.entries); } -static Char* mangled_cxt(Context* cxt, int rec_index) +static const HChar* mangled_cxt(Context* cxt, int rec_index) { - static Char mangled[FN_NAME_LEN]; + static HChar mangled[FN_NAME_LEN]; int i, p; if (!cxt) return "(no context)"; @@ -413,6 +413,8 @@ static BBCC* clone_bbcc(BBCC* orig, Context* cxt, Int rec_index) CLG_DEBUGIF(3) CLG_(print_bbcc)(-2, bbcc); + // FIXME: mangled_cxt returns a pointer to a static buffer that + // gets overwritten with each invocation. CLG_DEBUG(2,"- clone_BBCC(%p, %d) for BB %#lx\n" " orig %s\n" " new %s\n", diff --git a/callgrind/callstack.c b/callgrind/callstack.c index 294e437da3..ae08122fde 100644 --- a/callgrind/callstack.c +++ b/callgrind/callstack.c @@ -130,7 +130,7 @@ static void function_entered(fn_node* fn) #endif if (fn->dump_before) { - Char trigger[FN_NAME_LEN]; + HChar trigger[FN_NAME_LEN]; VG_(sprintf)(trigger, "--dump-before=%s", fn->name); CLG_(dump_profile)(trigger, True); } @@ -152,7 +152,7 @@ static void function_left(fn_node* fn) CLG_ASSERT(fn != 0); if (fn->dump_after) { - Char trigger[FN_NAME_LEN]; + HChar trigger[FN_NAME_LEN]; VG_(sprintf)(trigger, "--dump-after=%s", fn->name); CLG_(dump_profile)(trigger, True); } diff --git a/callgrind/debug.c b/callgrind/debug.c index 7f5a8e79b3..cf795a4b36 100644 --- a/callgrind/debug.c +++ b/callgrind/debug.c @@ -377,7 +377,7 @@ void CLG_(print_addr)(Addr addr) Char fn_buf[FN_NAME_LEN]; const UChar* obj_name; DebugInfo* di; - int ln, i=0, opos=0; + UInt ln, i=0, opos=0; if (addr == 0) { VG_(printf)("%08lx", addr); diff --git a/callgrind/dump.c b/callgrind/dump.c index c073af09ad..93f711deb5 100644 --- a/callgrind/dump.c +++ b/callgrind/dump.c @@ -231,7 +231,7 @@ static void print_file(Char* buf, file_node* file) /* * tag can be "fn", "cfn", "jfn" */ -static void print_fn(Int fd, Char* buf, Char* tag, fn_node* fn) +static void print_fn(Int fd, Char* buf, const HChar* tag, fn_node* fn) { int p; p = VG_(sprintf)(buf, "%s=",tag); @@ -251,7 +251,7 @@ static void print_fn(Int fd, Char* buf, Char* tag, fn_node* fn) my_fwrite(fd, buf, p); } -static void print_mangled_fn(Int fd, Char* buf, Char* tag, +static void print_mangled_fn(Int fd, Char* buf, const HChar* tag, Context* cxt, int rec_index) { int p, i; @@ -1251,7 +1251,7 @@ BBCC** prepare_dump(void) -static void fprint_cost_ln(int fd, Char* prefix, +static void fprint_cost_ln(int fd, const HChar* prefix, EventMapping* em, ULong* cost) { int p; @@ -1283,7 +1283,7 @@ void file_err(void) * * Returns the file descriptor, and -1 on error (no write permission) */ -static int new_dumpfile(Char buf[BUF_LEN], int tid, Char* trigger) +static int new_dumpfile(Char buf[BUF_LEN], int tid, const HChar* trigger) { Bool appending = False; int i, fd; @@ -1390,7 +1390,7 @@ static int new_dumpfile(Char buf[BUF_LEN], int tid, Char* trigger) my_fwrite(fd, (void*)buf, VG_(strlen)(buf)); VG_(sprintf)(buf, "desc: Trigger: %s\n", - trigger ? trigger : (Char*)"Program termination"); + trigger ? trigger : "Program termination"); my_fwrite(fd, (void*)buf, VG_(strlen)(buf)); #if 0 @@ -1503,7 +1503,7 @@ static void close_dumpfile(int fd) /* Helper for print_bbccs */ static Int print_fd; -static Char* print_trigger; +static const HChar* print_trigger; static Char print_buf[BUF_LEN]; static void print_bbccs_of_thread(thread_info* ti) @@ -1590,7 +1590,7 @@ static void print_bbccs_of_thread(thread_info* ti) } -static void print_bbccs(Char* trigger, Bool only_current_thread) +static void print_bbccs(const HChar* trigger, Bool only_current_thread) { init_dump_array(); init_debug_cache(); @@ -1615,17 +1615,17 @@ static void print_bbccs(Char* trigger, Bool only_current_thread) } -void CLG_(dump_profile)(Char* trigger, Bool only_current_thread) +void CLG_(dump_profile)(const HChar* trigger, Bool only_current_thread) { CLG_DEBUG(2, "+ dump_profile(Trigger '%s')\n", - trigger ? trigger : (Char*)"Prg.Term."); + trigger ? trigger : "Prg.Term."); CLG_(init_dumps)(); if (VG_(clo_verbosity) > 1) VG_(message)(Vg_DebugMsg, "Start dumping at BB %llu (%s)...\n", CLG_(stat).bb_executions, - trigger ? trigger : (Char*)"Prg.Term."); + trigger ? trigger : "Prg.Term."); out_counter++; diff --git a/callgrind/events.c b/callgrind/events.c index af5c568ffd..b942e5d96e 100644 --- a/callgrind/events.c +++ b/callgrind/events.c @@ -68,7 +68,7 @@ EventGroup* new_event_group(int id, int n) return eg; } -EventGroup* CLG_(register_event_group) (int id, Char* n1) +EventGroup* CLG_(register_event_group) (int id, const HChar* n1) { EventGroup* eg = new_event_group(id, 1); eg->name[0] = n1; @@ -76,7 +76,8 @@ EventGroup* CLG_(register_event_group) (int id, Char* n1) return eg; } -EventGroup* CLG_(register_event_group2)(int id, Char* n1, Char* n2) +EventGroup* CLG_(register_event_group2)(int id, const HChar* n1, + const HChar* n2) { EventGroup* eg = new_event_group(id, 2); eg->name[0] = n1; @@ -85,7 +86,8 @@ EventGroup* CLG_(register_event_group2)(int id, Char* n1, Char* n2) return eg; } -EventGroup* CLG_(register_event_group3)(int id, Char* n1, Char* n2, Char* n3) +EventGroup* CLG_(register_event_group3)(int id, const HChar* n1, + const HChar* n2, const HChar* n3) { EventGroup* eg = new_event_group(id, 3); eg->name[0] = n1; @@ -95,8 +97,9 @@ EventGroup* CLG_(register_event_group3)(int id, Char* n1, Char* n2, Char* n3) return eg; } -EventGroup* CLG_(register_event_group4)(int id, - Char* n1, Char* n2, Char* n3, Char* n4) +EventGroup* CLG_(register_event_group4)(int id, const HChar* n1, + const HChar* n2, const HChar* n3, + const HChar* n4) { EventGroup* eg = new_event_group(id, 4); eg->name[0] = n1; @@ -487,7 +490,7 @@ EventMapping* CLG_(get_eventmapping)(EventSet* es) return em; } -void CLG_(append_event)(EventMapping* em, Char* n) +void CLG_(append_event)(EventMapping* em, const HChar* n) { Int i, j, offset = 0; UInt mask; diff --git a/callgrind/events.h b/callgrind/events.h index aa59d54934..f110110a26 100644 --- a/callgrind/events.h +++ b/callgrind/events.h @@ -48,14 +48,16 @@ typedef struct _EventGroup EventGroup; struct _EventGroup { Int size; - Char* name[0]; + const HChar* name[0]; }; /* return 0 if event group can not be registered */ -EventGroup* CLG_(register_event_group) (int id, Char*); -EventGroup* CLG_(register_event_group2)(int id, Char*, Char*); -EventGroup* CLG_(register_event_group3)(int id, Char*, Char*, Char*); -EventGroup* CLG_(register_event_group4)(int id, Char*, Char*, Char*, Char*); +EventGroup* CLG_(register_event_group) (int id, const HChar*); +EventGroup* CLG_(register_event_group2)(int id, const HChar*, const HChar*); +EventGroup* CLG_(register_event_group3)(int id, const HChar*, const HChar*, + const HChar*); +EventGroup* CLG_(register_event_group4)(int id, const HChar*, const HChar*, + const HChar*, const HChar*); EventGroup* CLG_(get_event_group)(int id); /* Event sets are defined by event groups they consist of. */ @@ -124,7 +126,7 @@ struct _EventMapping { /* Allocate space for an event mapping */ EventMapping* CLG_(get_eventmapping)(EventSet*); -void CLG_(append_event)(EventMapping*, Char*); +void CLG_(append_event)(EventMapping*, const HChar*); /* Returns number of characters written */ Int CLG_(sprint_eventmapping)(Char* buf, EventMapping*); /* Returns number of characters written */ diff --git a/callgrind/fn.c b/callgrind/fn.c index 099d20c676..bd05ee4150 100644 --- a/callgrind/fn.c +++ b/callgrind/fn.c @@ -223,7 +223,7 @@ static UInt str_hash(const Char *s, UInt table_size) } -static Char* anonymous_obj = "???"; +static const HChar* anonymous_obj = "???"; static __inline__ obj_node* new_obj_node(DebugInfo* di, obj_node* next) @@ -232,7 +232,7 @@ obj_node* new_obj_node(DebugInfo* di, obj_node* next) obj_node* obj; obj = (obj_node*) CLG_MALLOC("cl.fn.non.1", sizeof(obj_node)); - obj->name = di ? VG_(strdup)( "cl.fn.non.2", + obj->name = di ? (HChar *)VG_(strdup)( "cl.fn.non.2", VG_(DebugInfo_get_filename)(di) ) : anonymous_obj; for (i = 0; i < N_FILE_ENTRIES; i++) { @@ -265,9 +265,9 @@ obj_node* CLG_(get_obj_node)(DebugInfo* di) { obj_node* curr_obj_node; UInt objname_hash; - const UChar* obj_name; + const HChar* obj_name; - obj_name = di ? (Char*) VG_(DebugInfo_get_filename)(di) : anonymous_obj; + obj_name = di ? (HChar*) VG_(DebugInfo_get_filename)(di) : anonymous_obj; /* lookup in obj hash */ objname_hash = str_hash(obj_name, N_OBJ_ENTRIES); diff --git a/callgrind/global.h b/callgrind/global.h index a848d4c0aa..1ed0b2fdba 100644 --- a/callgrind/global.h +++ b/callgrind/global.h @@ -56,8 +56,8 @@ typedef struct _CommandLineOptions CommandLineOptions; struct _CommandLineOptions { /* Dump format options */ - Char* out_format; /* Format string for callgrind output file name */ - Bool combine_dumps; /* Dump trace parts into same file? */ + const HChar* out_format; /* Format string for callgrind output file name */ + Bool combine_dumps; /* Dump trace parts into same file? */ Bool compress_strings; Bool compress_events; Bool compress_pos; @@ -468,7 +468,7 @@ struct _file_node { * zero when object is unmapped (possible at dump time). */ struct _obj_node { - Char* name; + const HChar* name; UInt last_slash_pos; Addr start; /* Start address of text segment mapping */ @@ -676,9 +676,9 @@ struct cachesim_if void (*log_0I1Dw)(InstrInfo*, Addr, Word) VG_REGPARM(3); // function names of helpers (for debugging generated code) - Char *log_1I0D_name, *log_2I0D_name, *log_3I0D_name; - Char *log_1I1Dr_name, *log_1I1Dw_name; - Char *log_0I1Dr_name, *log_0I1Dw_name; + const HChar *log_1I0D_name, *log_2I0D_name, *log_3I0D_name; + const HChar *log_1I1Dr_name, *log_1I1Dw_name; + const HChar *log_0I1Dr_name, *log_0I1Dw_name; }; // set by setup_bbcc at start of every BB, and needed by log_* helpers @@ -724,8 +724,8 @@ void CLG_(init_eventsets)(void); Bool CLG_(get_debug_info)(Addr, Char filename[FILENAME_LEN], Char fn_name[FN_NAME_LEN], UInt*, DebugInfo**); void CLG_(collectBlockInfo)(IRSB* bbIn, UInt*, UInt*, Bool*); -void CLG_(set_instrument_state)(Char*,Bool); -void CLG_(dump_profile)(Char* trigger,Bool only_current_thread); +void CLG_(set_instrument_state)(const HChar*,Bool); +void CLG_(dump_profile)(const HChar* trigger,Bool only_current_thread); void CLG_(zero_all_cost)(Bool only_current_thread); Int CLG_(get_dump_counter)(void); void CLG_(fini)(Int exitcode); diff --git a/callgrind/main.c b/callgrind/main.c index c5d472d6a1..22919137a0 100644 --- a/callgrind/main.c +++ b/callgrind/main.c @@ -377,7 +377,7 @@ static void showEvent ( Event* ev ) static void flushEvents ( ClgState* clgs ) { Int i, regparms, inew; - Char* helperName; + const HChar* helperName; void* helperAddr; IRExpr** argv; IRExpr* i_node_expr; @@ -1377,7 +1377,7 @@ void zero_state_cost(thread_info* t) /* Ups, this can go very wrong... */ extern void VG_(discard_translations) ( Addr64 start, ULong range, HChar* who ); -void CLG_(set_instrument_state)(Char* reason, Bool state) +void CLG_(set_instrument_state)(const HChar* reason, Bool state) { if (CLG_(instrument_state) == state) { CLG_DEBUG(2, "%s: instrumentation already %s\n", @@ -1581,7 +1581,7 @@ Bool CLG_(handle_client_request)(ThreadId tid, UWord *args, UWord *ret) case VG_USERREQ__DUMP_STATS_AT: { - Char buf[512]; + HChar buf[512]; VG_(sprintf)(buf,"Client Request: %s", (Char*)args[1]); CLG_(dump_profile)(buf, True); *ret = 0; /* meaningless */ @@ -1700,7 +1700,8 @@ static UInt ULong_width(ULong n) static void branchsim_printstat(int l1, int l2, int l3) { - static Char buf1[128], buf2[128], buf3[128], fmt[128]; + static Char buf1[128], buf2[128], buf3[128]; + static HChar fmt[128]; FullCost total; ULong Bc_total_b, Bc_total_mp, Bi_total_b, Bi_total_mp; ULong B_total_b, B_total_mp; @@ -1738,7 +1739,8 @@ void branchsim_printstat(int l1, int l2, int l3) static void finish(void) { - Char buf[32+COSTS_LEN], fmt[128]; + Char buf[32+COSTS_LEN]; + HChar fmt[128]; Int l1, l2, l3; FullCost total; diff --git a/callgrind/sim.c b/callgrind/sim.c index 2348cbec1a..f252cd7c60 100644 --- a/callgrind/sim.c +++ b/callgrind/sim.c @@ -1034,7 +1034,7 @@ void inc_costs(CacheModelResult r, ULong* c1, ULong* c2) } static -Char* cacheRes(CacheModelResult r) +const HChar* cacheRes(CacheModelResult r) { switch(r) { case L1_Hit: return "L1 Hit "; diff --git a/callgrind/threads.c b/callgrind/threads.c index a784f1260e..98d9385c30 100644 --- a/callgrind/threads.c +++ b/callgrind/threads.c @@ -179,7 +179,7 @@ void CLG_(run_thread)(ThreadId tid) { /* check for dumps needed */ static ULong bbs_done = 0; - static Char buf[512]; + static HChar buf[512]; if (CLG_(clo).dump_every_bb >0) { if (CLG_(stat).bb_executions - bbs_done > CLG_(clo).dump_every_bb) { @@ -453,4 +453,3 @@ exec_state* exec_state_restore(void) return es; } -