Files
UnrealEngineUWP/Engine/Source/Programs/UnrealBuildAccelerator/Common/Private/UbaObjectFileLLVMIR.h
Ryan Hummer 4af2fd066d Updating Dev-Release-5.5 from Main at CL #36144969
#okforversepublic

[CL 36146571 by Ryan Hummer in Dev-5.5 branch]
2024-09-10 10:26:02 -04:00

61 lines
1.2 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "UbaObjectFile.h"
namespace uba
{
class ObjectFileLLVMIR : public ObjectFile
{
public:
ObjectFileLLVMIR();
~ObjectFileLLVMIR();
virtual bool Parse(Logger& logger, const tchar* hint) override;
private:
virtual bool StripExports(Logger& logger, u8* newData, const UnorderedSymbols& allNeededImports) override;
enum BlockInfoCodes : u8;
enum Encoding : u8;
enum EntryKind : u8;
enum FixedAbbrevIDs : u8;
struct Abbrev;
struct AbbrevOp;
struct BlockInfo;
struct Entry;
using AbbrevPtr = std::shared_ptr<Abbrev>;
class BitStreamReader;
bool ParseBlock(Logger& logger, BitStreamReader& reader, BlockInfo& blockInfo, u32 blockId, u32 indent);
enum DllStorage : u8
{
DllStorage_Export,
DllStorage_Import,
DllStorage_None,
};
struct BitStreamEntry
{
u64 pos;
u32 word;
u32 wordBits;
u32 code;
DllStorage dllStorage;
u8 keepAsIs;
Vector<AbbrevOp> operands;
};
Vector<BitStreamEntry> m_globalVarOrFunctionRecords;
u64 m_strTabPos;
u64 m_strTabSize;
//std::string m_strTab;
};
bool IsLLVMIRFile(const u8* data, u64 dataSize);
}