about summary refs log tree commit diff
path: root/elf/sprof.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2002-02-23 09:20:59 +0000
committerUlrich Drepper <drepper@redhat.com>2002-02-23 09:20:59 +0000
commit7fec4f2f70d417b858127d340f7e8f66d8053572 (patch)
treec511d342ff5b55a1eaf970a60a1b8ff972dc6ec3 /elf/sprof.c
parent557fab43bd3cf75f87ba7efb65c9f4884e261a6c (diff)
downloadglibc-7fec4f2f70d417b858127d340f7e8f66d8053572.tar.gz
glibc-7fec4f2f70d417b858127d340f7e8f66d8053572.tar.xz
glibc-7fec4f2f70d417b858127d340f7e8f66d8053572.zip
Update.
	* elf/sprof.c (load_profdata): If do_test provide information as
	to why loading failed.
	* elf/dl-profile.c (_dl_start_profile): Initialize all of
	hist_hdr.dimen.
Diffstat (limited to 'elf/sprof.c')
-rw-r--r--elf/sprof.c14
1 files changed, 13 insertions, 1 deletions
diff --git a/elf/sprof.c b/elf/sprof.c
index 7d7fd9f978..3424282044 100644
--- a/elf/sprof.c
+++ b/elf/sprof.c
@@ -752,9 +752,21 @@ load_profdata (const char *name, struct shobj *shobj)
 		 sizeof (struct gmon_hist_hdr)) != 0
       || narcsp[-1] != GMON_TAG_CG_ARC)
     {
-      free (result);
       error (0, 0, _("`%s' is no correct profile data file for `%s'"),
 	     name, shobj->name);
+      if (do_test)
+	{
+	  if (memcmp (addr, &gmon_hdr, sizeof (struct gmon_hdr)) != 0)
+	    puts ("gmon_hdr differs");
+	  if (*(uint32_t *) result->hist != GMON_TAG_TIME_HIST)
+	    puts ("result->hist differs");
+	  if (memcmp (result->hist_hdr, &hist_hdr,
+		      sizeof (struct gmon_hist_hdr)) != 0)
+	    puts ("hist_hdr differs");
+	  if (narcsp[-1] != GMON_TAG_CG_ARC)
+	    puts ("narcsp[-1] differs");
+	}
+      free (result);
       munmap (addr, st.st_size);
       return NULL;
     }