[Bug libdw/22252] New: Parallel parsing of CU's DIEs from libdw

woodard at redhat dot com sourceware-bugzilla@sourceware.org
Wed Oct 4 18:23:00 GMT 2017


https://sourceware.org/bugzilla/show_bug.cgi?id=22252

            Bug ID: 22252
           Summary: Parallel parsing of CU's DIEs from libdw
           Product: elfutils
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: libdw
          Assignee: unassigned at sourceware dot org
          Reporter: woodard at redhat dot com
                CC: elfutils-devel at sourceware dot org
  Target Milestone: ---

To speed up the processing of large ELF files which are common in HPC please
resolve the data races which prevent parallel parsing of CU's DIEs within ELF
files. We'd like to do something like:

 for(Dwarf_Off cu_off = 0;
            dwarf_next_unit(dbg(), cu_off, &next_cu_header, &cu_header_length,
                NULL, &abbrev_offset, &addr_size, &offset_size,
                &type_signaturep, NULL) == 0;
            cu_off = next_cu_header)
    {
        if(!dwarf_offdie_types(dbg(), cu_off + cu_header_length,
&current_cu_die))
            continue;
// Modified for parallelism: rather than a single DwarfWalker holding state,
// create a new context and clone before we spawn a thread
        push();
        DwarfWalker mod_walker(*this);
        pop();
        bool ret = cilk_spawn mod_walker.parseModule(false, fixUnknownMod);
//        bool ret = parseModule(false, fixUnknownMod);
        if(!ret) {
            cilk_sync;
            return false;
        }
        compile_offset = next_cu_header;
    }
    cilk_sync;

Code similar to this is being worked on for dyninst http://www.dyninst.org/

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the Elfutils-devel mailing list