add support for LLVM ghash sections

This commit is contained in:
Nikita Smith committed 2026-04-20 10:39:50 -07:00
1 parent cd4f81d473
commit 0a791e5876
10 files changed
+449 -39

No files matched your search

+24
View File
@@ -0,0 +1,24 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
internal String8
llvm_string_from_ghash_alg(LLVM_GHashAlg v)
{
switch (v) {
case LLVM_GHashAlg_SHA1: return str8_lit("SHA1");
case LLVM_GHashAlg_SHA1_8: return str8_lit("SHA1_8");
case LLVM_GHashAlg_BLAKE3: return str8_lit("BALK3");
}
return str8_zero();
}
internal U64
llvm_hash_size_from_alg(LLVM_GHashAlg v)
{
switch (v) {
case LLVM_GHashAlg_SHA1: return 20;
case LLVM_GHashAlg_SHA1_8: return 8;
case LLVM_GHashAlg_BLAKE3: return 8;
}
return 0;
}
+29
View File
@@ -0,0 +1,29 @@
// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
#ifndef LLVM_H
#define LLVM_H
#define LLVM_GHash_Magic 0x133c9c5
#define LLVM_GHash_CurrentVersion 0
typedef U16 LLVM_GHashAlg;
typedef enum LLVM_GHashAlgEnum
{
LLVM_GHashAlg_SHA1 = 0,
LLVM_GHashAlg_SHA1_8 = 1,
LLVM_GHashAlg_BLAKE3 = 2,
} LLVM_GHashAlgEnum;
typedef struct LLVM_GHash
{
U32 magic;
LLVM_GHashAlg hash_alg;
U16 version;
// * hashes[]
} LLVM_GHash;
internal String8 llvm_string_from_ghash_alg(LLVM_GHashAlg v);
#endif // LLVM_H