Files
raddebugger/src/linker/lnk_error.h
T

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__)