Skip to content
Snippets Groups Projects
doc.go 1.18 KiB
Newer Older
  • Learn to ignore specific revisions
  • // Copyright 2025 The Go Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style
    // license that can be found in the LICENSE file.
    
    /*
    The Unified IR (UIR) format is implicitly defined by the package noder.
    
    At the highest level, a package encoded in UIR follows the grammar below.
    
    File        = Header Payload fingerprint .
    Header      = version [ flags ] sectionEnds elementEnds .
    
    version     = uint32 .     // used for backward compatibility
    flags       = uint32 .     // feature flags used across versions
    sectionEnds = [10]uint32 . // defines section boundaries
    elementEnds = []uint32 .   // defines element boundaries
    fingerprint = [8]byte .    // sha256 fingerprint
    
    The payload has a structure as well. It is a series of sections, which
    contain elements of the same type. Go constructs are mapped onto
    (potentially multiple) elements. It is represented as below.
    
    TODO(markfreeman): Update when we rename RelocFoo to SectionFoo.
    Payload = RelocString
              RelocMeta
              RelocPosBase
              RelocPkg
              RelocName
              RelocType
              RelocObj
              RelocObjExt
              RelocObjDict
              RelocBody
              .
    */
    
    package noder