The change that added this code did not take Solaris only block (hidden behind define macro) into consideration. Should be reported upstream. --- valgrind-3.22.0/coregrind/m_debuginfo/readelf.c +++ valgrind-3.22.0/coregrind/m_debuginfo/readelf.c @@ -2386,6 +2386,12 @@ Bool ML_(read_elf_debug_info) ( struct _ /* Accept .data where mapped as rw (data), even if zero-sized */ if (0 == VG_(strcmp)(name, ".data")) { + if (inrw2) { + inrw = inrw2; + } else { + inrw = inrw1; + } + # if defined(SOLARIS_PT_SUNDWTRACE_THRP) if ((size == VKI_PT_SUNWDTRACE_SIZE) && (svma == dtrace_data_vaddr)) { TRACE_SYMTAB("ignoring .data section for dtrace_data " @@ -2393,12 +2399,6 @@ Bool ML_(read_elf_debug_info) ( struct _ } else # endif /* SOLARIS_PT_SUNDWTRACE_THRP */ - if (inrw2) { - inrw = inrw2; - } else { - inrw = inrw1; - } - if (inrw && !di->data_present) { di->data_present = True; di->data_svma = svma;