Structured binary data editor
    
    
    
      
      
      
        
Implement a tool to view and edit structured binary data, such as program memory structures (task memory, core file), file system structures, etc.
- Details
- 
The implementation should primarily consist of a versatile library that would provide:  
- An API to dynamically (at run time) define and manipulate data structures (data schemas) comprising of typical basic and compound data types (integers, arrays, structs, unions, pointers)
- An API to enumerate the members of such data structures
- An API to compute field offsets (addresses)
- An API to read and write values of the members and traverse complex data structures using pointers (with custom pointer resolution routines)
- A parser which would provide a way to define the data structures (data schemas) in a textual representation (XML-based description, C-like type declaration or a DSL)
- A generator which would output the data structure definition in the textual representation which the library can parse again.
- Support for custom memory back-ends using code plug-ins (file, task memory [using udebug], block device)
 The implementation should also contain readily available definitions for common data structures (either as code plug-ins or in the form of textural representation), e.g.:- ubiquitous data structures (doubly-linked link lists, hash tables, etc.)
- ELF file format (with DWARF data)
- FAT file system structures
- ext2 file system structures
 
An interactive or command-based browser/editor should be provided on top of this library and data structure definitions. The library can be also integrated into other applications, such as the debugger.
- What Gains and Benefits will this bring?
- 
Easier debugging of file system drivers, easier debugging of running tasks and their live data, easier analysis of core dumps. The open design of the library/editor should make it great also for other future uses (analysis of application data files, etc.).
As the implementation of the library and to a major extend also the implementation of the end-user interactive editor can be done in standard-compliant C with little to no HelenOS-specific code, it can be also usable in other operating systems.
- Difficulty
- 
Medium
- Required skills
- 
A successful applicant will have good skills of programming in the C language and experience with designing reusable and extensible libraries with decent internal structure and public API. For the end-user interactive editor the ability to learn and use HelenOS-specific console manipulation routines is also expected.
- Documentation
- 
- Possible mentors
- 
HelenOS Core Team, Martin Decky, Vojtech Horky
 
     
   
 
      
        
        
          Change History
          (9)
        
          
  
  
  
    
      | Keywords: | gsoc12 added | 
    
      | Milestone: | 0.5.0 → 0.5.1 | 
  
 
           
          
  
  
  
    
      | Keywords: | needswork added | 
  
 
           
          
  
  
  
    
      | Component: | helenos/unspecified → helenos/app/other | 
  
 
           
          
  
  
  
    
      | Description: | modified (diff) | 
    
      | Keywords: | needswork removed | 
  
 
           
          
  
  
  
    
      | Description: | modified (diff) | 
  
 
           
          
  
  
  
    
      | Description: | modified (diff) | 
  
 
           
          
  
  
  
    
      | Cc: | wingedtachikoma@… added | 
    
      | Owner: | set to Sean Bartell | 
    
      | Status: | new → accepted | 
  
 
           
          
          
  
  
  
    
      | Resolution: | → fixed | 
    
      | Status: | accepted → closed | 
  
 
           
          
         
       
     
        
    
    
Mostly merged into mainline and documented as Bithenge.