llvm/llvm/include/llvm/BinaryFormat/GOFF.h

//===-- llvm/BinaryFormat/GOFF.h - GOFF definitions --------------*- C++-*-===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
//
// This header contains common, non-processor-specific data structures and
// constants for the GOFF file format.
//
// GOFF specifics can be found in MVS Program Management: Advanced Facilities.
// See
// https://www.ibm.com/docs/en/zos/3.1.0?topic=facilities-generalized-object-file-format-goff
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_BINARYFORMAT_GOFF_H
#define LLVM_BINARYFORMAT_GOFF_H

#include "llvm/Support/DataTypes.h"

namespace llvm {

namespace GOFF {

/// \brief Length of the parts of a physical GOFF record.
constexpr uint8_t RecordLength =;
constexpr uint8_t RecordPrefixLength =;
constexpr uint8_t PayloadLength =;
constexpr uint8_t RecordContentLength =;

/// \brief Maximum data length before starting a new card for RLD and TXT data.
///
/// The maximum number of bytes that can be included in an RLD or TXT record and
/// their continuations is a SIGNED 16 bit int despite what the spec says. The
/// number of bytes we allow ourselves to attach to a card is thus arbitrarily
/// limited to 32K-1 bytes.
constexpr uint16_t MaxDataLength =;

/// \brief Prefix byte on every record. This indicates GOFF format.
constexpr uint8_t PTVPrefix =;

enum RecordType : uint8_t {};

enum ESDSymbolType : uint8_t {};

enum ESDNameSpaceId : uint8_t {};

enum ESDReserveQwords : uint8_t {};

enum ESDAmode : uint8_t {};

enum ESDRmode : uint8_t {};

enum ESDTextStyle : uint8_t {};

enum ESDBindingAlgorithm : uint8_t {};

enum ESDTaskingBehavior : uint8_t {};

enum ESDExecutable : uint8_t {};

enum ESDDuplicateSymbolSeverity : uint8_t {};

enum ESDBindingStrength : uint8_t {};

enum ESDLoadingBehavior : uint8_t {};

enum ESDBindingScope : uint8_t {};

enum ESDLinkageType : uint8_t {};

enum ESDAlignment : uint8_t {};

enum ENDEntryPointRequest : uint8_t {};

// \brief Subsections of the primary C_CODE section in the object file.
enum SubsectionKind : uint8_t {};
} // end namespace GOFF

} // end namespace llvm

#endif // LLVM_BINARYFORMAT_GOFF_H