ai->Addr.SegmentKind.segkind = seg->kind;
ai->Addr.SegmentKind.filename = NULL;
if (seg->kind == SkFileC)
- ai->Addr.SegmentKind.filename = VG_(am_get_filename) (seg);
+ ai->Addr.SegmentKind.filename
+ = VG_(strdup)("mc.da.skfname", VG_(am_get_filename)(seg));
if (ai->Addr.SegmentKind.filename != NULL)
ai->Addr.SegmentKind.filename
= VG_(strdup)("mc.da.skfname",
ULong VG_(di_notify_mmap)( Addr a, Bool allow_SkFileV, Int use_fd )
{
NSegment const * seg;
- HChar* filename;
+ const HChar* filename;
Bool is_rx_map, is_rw_map, is_ro_map;
DebugInfo* di;
Int actual_fd, oflags;
Bool quiet = VG_(strstr)(filename, "/var/run/nscd/") != NULL;
if (!quiet && VG_(clo_verbosity) > 1) {
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.fsm.filename = filename;
+ fake_di.fsm.filename = ML_(dinfo_strdup)("di.debuginfo.nmm", filename);
ML_(symerr)(&fake_di, True, "failed to stat64/stat this file");
}
return 0;
if (sr_Err(fd) != VKI_EACCES) {
DebugInfo fake_di;
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.fsm.filename = filename;
+ fake_di.fsm.filename = ML_(dinfo_strdup)("di.debuginfo.nmm",
+ filename);
ML_(symerr)(&fake_di, True,
"can't open file to inspect ELF header");
}
if (sr_isError(preadres)) {
DebugInfo fake_di;
VG_(memset)(&fake_di, 0, sizeof(fake_di));
- fake_di.fsm.filename = filename;
+ fake_di.fsm.filename = ML_(dinfo_strdup)("di.debuginfo.nmm", filename);
ML_(symerr)(&fake_di, True, "can't read file to inspect ELF header");
return 0;
}
elsewhere. This may return NULL if the file name is not known or
for arbitrary other implementation-dependent reasons, so callers
need to be able to handle a NULL return value. */
-extern HChar* VG_(am_get_filename)( NSegment const * );
+extern const HChar* VG_(am_get_filename)( NSegment const * );
/* Is the area [start .. start+len-1] validly accessible by the
client with at least the permissions 'prot' ? To find out
// memory by explicitly mapping /dev/zero.
if (seg->kind == SkFileC
&& (VKI_S_ISCHR(seg->mode) || VKI_S_ISBLK(seg->mode))) {
- HChar* dev_name = VG_(am_get_filename)( seg );
+ const HChar* dev_name = VG_(am_get_filename)( seg );
if (dev_name && 0 == VG_(strcmp)(dev_name, "/dev/zero")) {
// Don't skip /dev/zero.
} else {