// 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