mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-08-06 13:58:40 +00:00
linker
This commit is contained in:
@@ -0,0 +1,89 @@
|
||||
// Copyright (c) 2024 Epic Games Tools
|
||||
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
||||
|
||||
#pragma once
|
||||
|
||||
typedef struct LNK_Directive
|
||||
{
|
||||
struct LNK_Directive *next;
|
||||
String8 id;
|
||||
String8List value_list;
|
||||
} LNK_Directive;
|
||||
|
||||
typedef struct LNK_DirectiveList
|
||||
{
|
||||
U64 count;
|
||||
LNK_Directive *first;
|
||||
LNK_Directive *last;
|
||||
} LNK_DirectiveList;
|
||||
|
||||
typedef struct LNK_ExportParse
|
||||
{
|
||||
struct LNK_ExportParse *next;
|
||||
String8 name;
|
||||
String8 alias;
|
||||
String8 type;
|
||||
} LNK_ExportParse;
|
||||
|
||||
typedef struct LNK_ExportParseList
|
||||
{
|
||||
U64 count;
|
||||
LNK_ExportParse *first;
|
||||
LNK_ExportParse *last;
|
||||
} LNK_ExportParseList;
|
||||
|
||||
typedef struct LNK_MergeDirective
|
||||
{
|
||||
String8 src;
|
||||
String8 dst;
|
||||
} LNK_MergeDirective;
|
||||
|
||||
typedef struct LNK_MergeDirectiveNode
|
||||
{
|
||||
struct LNK_MergeDirectiveNode *next;
|
||||
LNK_MergeDirective data;
|
||||
} LNK_MergeDirectiveNode;
|
||||
|
||||
typedef struct LNK_MergeDirectiveList
|
||||
{
|
||||
U64 count;
|
||||
LNK_MergeDirectiveNode *first;
|
||||
LNK_MergeDirectiveNode *last;
|
||||
} LNK_MergeDirectiveList;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
LNK_Directive_Null,
|
||||
LNK_Directive_DefaultLib,
|
||||
LNK_Directive_Export,
|
||||
LNK_Directive_Include,
|
||||
LNK_Directive_ManifestDependency,
|
||||
LNK_Directive_Merge,
|
||||
LNK_Directive_Section,
|
||||
LNK_Directive_AlternateName,
|
||||
LNK_Directive_GuardSym,
|
||||
LNK_Directive_DisallowLib,
|
||||
LNK_Directive_FailIfMismatch,
|
||||
LNK_Directive_EditAndContinue,
|
||||
LNK_Directive_ThrowingNew,
|
||||
LNK_Directive_Count
|
||||
} LNK_DirectiveKind;
|
||||
|
||||
typedef struct LNK_DirectiveInfo
|
||||
{
|
||||
LNK_DirectiveList v[LNK_Directive_Count];
|
||||
} LNK_DirectiveInfo;
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void lnk_alt_name_list_concat_in_place(LNK_AltNameList *list, LNK_AltNameList *to_concat);
|
||||
|
||||
internal LNK_MergeDirectiveNode * lnk_merge_directive_list_push(Arena *arena, LNK_MergeDirectiveList *list, LNK_MergeDirective data);
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal void lnk_parse_directives(Arena *arena, LNK_DirectiveInfo *directive_info, String8 buffer, String8 obj_path);
|
||||
internal String8List lnk_parse_default_lib_directive(Arena *arena, LNK_DirectiveList *dir_list);
|
||||
internal B32 lnk_parse_merge_directive(String8 directive, LNK_MergeDirective *out);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user