mirror of
https://github.com/Ed94/raddebugger.git
synced 2026-06-18 01:52:22 -07:00
135 lines
4.1 KiB
C
135 lines
4.1 KiB
C
// Copyright (c) 2025 Epic Games Tools
|
|
// Licensed under the MIT license (https://opensource.org/license/mit/)
|
|
|
|
#pragma once
|
|
|
|
typedef enum
|
|
{
|
|
LNK_Error_Null,
|
|
|
|
LNK_Error_StopFirst,
|
|
LNK_Error_Cmdl,
|
|
LNK_Error_EndprecompNotFound,
|
|
LNK_Error_EntryPoint,
|
|
LNK_Error_ExternalTypeServerConflict,
|
|
LNK_Error_FileNotFound,
|
|
LNK_Error_IllData,
|
|
LNK_Error_IllExport,
|
|
LNK_Error_IncomatibleCmdOptions,
|
|
LNK_Error_IncompatibleMachine,
|
|
LNK_Error_InvalidPrecompLeafCount,
|
|
LNK_Error_InvalidStartIndex,
|
|
LNK_Error_NoAccess,
|
|
LNK_Error_NoSubsystem,
|
|
LNK_Error_OutOfExportOrdinals,
|
|
LNK_Error_PrecompObjNotFound,
|
|
LNK_Error_PrecompSigMismatch,
|
|
LNK_Error_Telemetry,
|
|
LNK_Error_UnsupportedMachine,
|
|
LNK_Error_Mt,
|
|
LNK_Error_UnableToSerializeMsf,
|
|
LNK_Error_LoadRes,
|
|
LNK_Error_IO,
|
|
LNK_Error_LargeAddrAwareRequired,
|
|
LNK_Error_InvalidPath,
|
|
LNK_Error_MultiplyDefinedSymbol,
|
|
LNK_Error_SectRefsDiscardedMemory,
|
|
LNK_Error_IllegalSectionMerge,
|
|
LNK_Error_StopLast,
|
|
|
|
LNK_Error_First,
|
|
LNK_Error_AlreadyDefinedSymbol,
|
|
LNK_Error_AlternateNameConflict,
|
|
LNK_Error_CvPrecomp,
|
|
LNK_Error_Natvis,
|
|
LNK_Error_TooManyFiles,
|
|
LNK_Error_UndefinedSymbol,
|
|
LNK_Error_UnresolvedSymbol,
|
|
LNK_Error_UnableToOpenTypeServer,
|
|
LNK_Error_UnexpectedCodePath,
|
|
LNK_Error_CvIllSymbolData,
|
|
LNK_Error_IllegalAlternateNameRedifine,
|
|
LNK_Error_InvalidTypeIndex,
|
|
LNK_Error_UndefinedIsWeak,
|
|
LNK_Error_WeakCycle,
|
|
LNK_Error_Last,
|
|
|
|
LNK_Warning_First,
|
|
LNK_Warning_InvalidMergeDirectiveFormat,
|
|
LNK_Warning_AmbiguousMerge,
|
|
LNK_Warning_AtypicalStartIndex,
|
|
LNK_Warning_Cmdl,
|
|
LNK_Warning_Directive,
|
|
LNK_Warning_DuplicateObjPath,
|
|
LNK_Warning_ExternalTypeServerAgeMismatch,
|
|
LNK_Warning_FileNotFound,
|
|
LNK_Warning_IllData,
|
|
LNK_Warning_IllExport,
|
|
LNK_Warning_InvalidNatvisFileExt,
|
|
LNK_Warning_LargePages,
|
|
LNK_Warning_LargePagesNotEnabled,
|
|
LNK_Warning_MismatchedTypeServerSignature,
|
|
LNK_Warning_MissingExternalTypeServer,
|
|
LNK_Warning_MultipleDebugTAndDebugP,
|
|
LNK_Warning_MultipleExternalTypeServers,
|
|
LNK_Warning_MultipleLibMatch,
|
|
LNK_Warning_MultiplyDefinedImport,
|
|
LNK_Warning_Natvis,
|
|
LNK_Warning_PrecompObjSymbolsNotFound,
|
|
LNK_Warning_SectionFlagsConflict,
|
|
LNK_Warning_Subsystem,
|
|
LNK_Warning_UnknownDirective,
|
|
LNK_Warning_IllegalDirective,
|
|
LNK_Warning_UnresolvedComdat,
|
|
LNK_Warning_UnusedDelayLoadDll,
|
|
LNK_Warning_LongSectionName,
|
|
LNK_Warning_UnknownSwitch,
|
|
LNK_Warning_TLSAlign,
|
|
LNK_Warning_DirectiveSectionWithRelocs,
|
|
LNK_Warning_NoLargeAddressAwarenessForDll,
|
|
LNK_Warning_Last,
|
|
|
|
LNK_Error_Count
|
|
} LNK_ErrorCode;
|
|
|
|
typedef enum
|
|
{
|
|
LNK_ErrorMode_Ignore,
|
|
LNK_ErrorMode_Stop,
|
|
LNK_ErrorMode_Continue,
|
|
LNK_ErrorMode_Warn,
|
|
} LNK_ErrorMode;
|
|
|
|
typedef enum
|
|
{
|
|
LNK_InternalError_Null,
|
|
LNK_InternalError_NotImplemented,
|
|
LNK_InternalError_InvalidPath,
|
|
LNK_InternalError_IncompleteSwitch,
|
|
LNK_InternalError_OutOfMemory
|
|
} LNK_InternalError;
|
|
|
|
typedef enum
|
|
{
|
|
LNK_ErrorCodeStatus_Active,
|
|
LNK_ErrorCodeStatus_Ignore,
|
|
} LNK_ErrorCodeStatus;
|
|
|
|
internal void lnk_init_error_handler(void);
|
|
internal void lnk_errorfv(LNK_ErrorCode code, char *fmt, va_list args);
|
|
internal void lnk_error(LNK_ErrorCode code, char *fmt, ...);
|
|
internal void lnk_error_with_loc(LNK_ErrorCode code, String8 obj_path, String8 lib_path, char *fmt, ...);
|
|
internal void lnk_supplement_error(char *fmt, ...);
|
|
internal void lnk_supplement_error_list(String8List list);
|
|
internal void lnk_suppress_error(LNK_ErrorCode code);
|
|
|
|
#define lnk_is_error_code_active(code) (lnk_get_error_code_status(code) == LNK_ErrorCodeStatus_Active)
|
|
#define lnk_is_error_code_ignored(code) (lnk_get_error_code_status(code) == LNK_ErrorCodeStatus_Ignore)
|
|
internal LNK_ErrorCodeStatus lnk_get_error_code_status(LNK_ErrorCode code);
|
|
|
|
internal void lnk_internal_error(LNK_InternalError code, char *file, int line, char *fmt, ...);
|
|
#define lnk_invalid_path(...) lnk_internal_error(LNK_InternalError_InvalidPath, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define lnk_not_implemented(...) lnk_internal_error(LNK_InternalError_NotImplemented, __FILE__, __LINE__, __VA_ARGS__)
|
|
#define lnk_incomplete_switch(...) lnk_internal_error(LNK_InternalError_IncompleteSwitch, __FILE__, __LINE__, __VA_ARGS__)
|
|
|