Switched to VG_(get_data_description)() for descriptions of addresses in error reports.

git-svn-id: svn://svn.valgrind.org/valgrind/trunk@7585 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/exp-drd/drd_error.c b/exp-drd/drd_error.c
index 05bf4a4..20d3aff 100644
--- a/exp-drd/drd_error.c
+++ b/exp-drd/drd_error.c
@@ -220,13 +220,20 @@
 void drd_report_data_race2(Error* const err, const DataRaceErrInfo* const dri)
 {
    AddrInfo ai;
-   Char descr[256];
+   Char descr1[256];
+   Char descr2[256];
 
    tl_assert(dri);
    tl_assert(dri->addr);
    tl_assert(dri->size > 0);
-   describe_addr_text(dri->addr, dri->size,
-                      &ai, descr, sizeof(descr));
+
+   descr1[0] = 0;
+   descr2[0] = 0;
+   VG_(get_data_description)(descr1, descr2, sizeof(descr1), dri->addr);
+   if (descr1[0] == 0)
+   {
+      describe_addr(dri->addr, dri->size, &ai);
+   }
    VG_(message)(Vg_UserMsg,
                 "Conflicting %s by %s at 0x%08lx size %ld",
                 dri->access_type == eStore ? "store" : "load",
@@ -234,11 +241,19 @@
                 dri->addr,
                 dri->size);
    VG_(pp_ExeContext)(VG_(get_error_where)(err));
-   VG_(message)(Vg_UserMsg, "Allocation context: %s", descr);
-   if (ai.akind == eMallocd && ai.lastchange)
+   if (descr1[0])
+   {
+      VG_(message)(Vg_UserMsg, "%s", descr1);
+      VG_(message)(Vg_UserMsg, "%s", descr2);
+   }
+   else if (ai.akind == eMallocd && ai.lastchange)
    {
       VG_(pp_ExeContext)(ai.lastchange);
    }
+   else
+   {
+      VG_(message)(Vg_UserMsg, "Allocation context: unknown.\n");
+   }
    thread_report_conflicting_segments(VgThreadIdToDrdThreadId(dri->tid),
                                       dri->addr, dri->size, dri->access_type);
 }