tiny.tldr.Diagnostics
Defined in model.
API (18)
Actions
Public operations.
clearlinkFailurerecordUndefinedSymbolrecordUnsupportedArchiveMemberFormatrecordUnsupportedInputFormatrecordUnsupportedRelocationrecordedUndefinedSymbols
Types and contracts
Public types and contracts.
LinkFailureUndefinedSymbolUndefinedSymbolsUnsupportedInputFormatUnsupportedRelocationmax_recorded_undefined_symbols
Fields and members
Public fields and members.
first_undefined_symbolfirst_unsupported_input_formatfirst_unsupported_relocationundefined_symbol_countundefined_symbols
Source
Source: lib/tldr/src/model.zig:267
zig
pub const Diagnostics = struct { pub const max_recorded_undefined_symbols = 8; first_undefined_symbol: ?UndefinedSymbol = null, first_unsupported_relocation: ?UnsupportedRelocation = null, first_unsupported_input_format: ?UnsupportedInputFormat = null, undefined_symbols: [max_recorded_undefined_symbols]UndefinedSymbol = undefined, undefined_symbol_count: usize = 0, pub const UndefinedSymbol = struct { name: []const u8, input_name: []const u8, }; pub const UnsupportedRelocation = struct { input_name: []const u8, section_name: []const u8, symbol_name: []const u8, relocation_type: u32, }; pub const UnsupportedInputFormat = struct { input_name: []const u8, member_name: ?[]const u8 = null, input_format: ObjectFormat, target_format: ObjectFormat, }; pub const UndefinedSymbols = struct { symbols: []const UndefinedSymbol, hidden_count: usize = 0, }; pub const LinkFailure = union(enum) { undefined_symbols: UndefinedSymbols, undefined_symbol: UndefinedSymbol, unsupported_relocation: UnsupportedRelocation, unsupported_input_format: UnsupportedInputFormat, generic: Error, }; pub fn clear(self: *Diagnostics) void { self.* = .{}; } pub fn recordUndefinedSymbol( self: *Diagnostics, input_name: []const u8, symbol_name: []const u8, ) void { if (self.undefined_symbol_count < self.undefined_symbols.len) { self.undefined_symbols[self.undefined_symbol_count] = .{ .name = symbol_name, .input_name = input_name, }; } self.undefined_symbol_count += 1; if (self.first_undefined_symbol == null) { self.first_undefined_symbol = .{ .name = symbol_name, .input_name = input_name, }; } } pub fn recordedUndefinedSymbols(self: *const Diagnostics) []const UndefinedSymbol { return self.undefined_symbols[0..@min(self.undefined_symbol_count, self.undefined_symbols.len)]; } pub fn recordUnsupportedRelocation( self: *Diagnostics, input_name: []const u8, section_name: []const u8, symbol_name: []const u8, relocation_type: u32, ) void { if (self.first_unsupported_relocation == null) { self.first_unsupported_relocation = .{ .input_name = input_name, .section_name = section_name, .symbol_name = symbol_name, .relocation_type = relocation_type, }; } } pub fn recordUnsupportedInputFormat( self: *Diagnostics, input_name: []const u8, input_format: ObjectFormat, target_format: ObjectFormat, ) void { if (self.first_unsupported_input_format == null) { self.first_unsupported_input_format = .{ .input_name = input_name, .input_format = input_format, .target_format = target_format, }; } } pub fn recordUnsupportedArchiveMemberFormat( self: *Diagnostics, input_name: []const u8, member_name: []const u8, input_format: ObjectFormat, target_format: ObjectFormat, ) void { if (self.first_unsupported_input_format == null) { self.first_unsupported_input_format = .{ .input_name = input_name, .member_name = member_name, .input_format = input_format, .target_format = target_format, }; } } pub fn linkFailure(self: *const Diagnostics, err: Error) LinkFailure { if (err == error.UndefinedSymbol) { const undefined_symbols = self.recordedUndefinedSymbols(); if (undefined_symbols.len > 1) { return .{ .undefined_symbols = .{ .symbols = undefined_symbols, .hidden_count = self.undefined_symbol_count - undefined_symbols.len, } }; } if (self.first_undefined_symbol) |undefined_symbol| { return .{ .undefined_symbol = undefined_symbol }; } } if (err == error.UnsupportedRelocation) { if (self.first_unsupported_relocation) |relocation| { return .{ .unsupported_relocation = relocation }; } } if (err == error.UnsupportedFormat) { if (self.first_unsupported_input_format) |unsupported| { return .{ .unsupported_input_format = unsupported }; } } return .{ .generic = err }; }};Source: lib/tldr/src/root.zig:70
zig
pub const Diagnostics = model.Diagnostics;Complete caller list for Diagnostics.linkFailure
8 direct callers.
lib.tldr.src.formats.coff.test_COFF_linker_records_unsupported_relocation_diagnostics[function] — test source atlib/tldr/src/formats/coff.zig:1522in nearest public ownertiny.tldr.formats.cofflib.tldr.src.formats.elf.test.test_ELF_linker_diagnoses_extracted_archive_members_with_mismatched_formats[function] — test source atlib/tldr/src/formats/elf/test.zig:3672in nearest public ownerlib.tldr.src.formats.elf.testlib.tldr.src.formats.macho.test_Mach-O_linker_records_unsupported_relocation_diagnostics[function] — test source atlib/tldr/src/formats/macho.zig:1917in nearest public ownertiny.tldr.formats.macholib.tldr.src.link.test_link_rejects_non-target_object_formats_before_ELF_linking[function] — test source atlib/tldr/src/link.zig:114in nearest public ownerlib.tldr.src.linklib.tldr.src.model.test_diagnostics_report_multiple_undefined_symbols[function] — test source atlib/tldr/src/model.zig:452in nearest public ownertiny.tldr.modellib.tldr.src.model.test_diagnostics_report_unsupported_archive_member_format_details[function] — test source atlib/tldr/src/model.zig:513in nearest public ownertiny.tldr.modellib.tldr.src.model.test_diagnostics_report_unsupported_input_format_details[function] — test source atlib/tldr/src/model.zig:499in nearest public ownertiny.tldr.modellib.tldr.src.model.test_diagnostics_report_unsupported_relocation_details[function] — test source atlib/tldr/src/model.zig:484in nearest public ownertiny.tldr.model
Audit
| Definitions | 14 |
|---|---|
| Public names | 28 |
| Members | 22 |
| Version | 26.7.0 |
| Revision | daab053ee433 |