diff --git a/bootstrap/Compilation.zig b/bootstrap/Compilation.zig
index e736e10..f5771f3 100644
--- a/bootstrap/Compilation.zig
+++ b/bootstrap/Compilation.zig
@@ -11,6 +11,7 @@ const BlockList = data_structures.BlockList;
const MyAllocator = data_structures.MyAllocator;
const MyHashMap = data_structures.MyHashMap;
const span = data_structures.span;
+const format_int = data_structures.format_int;
const lexer = @import("frontend/lexer.zig");
const parser = @import("frontend/parser.zig");
@@ -29,7 +30,7 @@ fn todo() noreturn {
}
fn reportUnterminatedArgumentError(string: []const u8) noreturn {
- std.io.getStdOut().writeAll("Unterminated argument: ") catch {};
+ write(.panic, "Unterminated argument: ") catch {};
@panic(string);
}
@@ -61,8 +62,6 @@ pub fn createContext(allocator: Allocator, my_allocator: *MyAllocator) !*const C
pub fn compileBuildExecutable(context: *const Context, arguments: [][*:0]u8) !void {
_ = arguments; // autofix
const unit = try context.my_allocator.allocate_one(Unit);
- // const target_query = try std.Target.Query.parse(.{});
- // const target = try std.zig.system.resolveTargetQuery(target_query);
unit.* = .{
.descriptor = .{
.main_package_path = "build.nat",
@@ -141,23 +140,16 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
ar_args.append_with_capacity(out_dir ++ "libc.a");
for (generic_musl_source_files) |src_file| {
- const src_file_path = try std.mem.concat(context.allocator, u8, &.{"lib/libc/musl/", src_file});
+ const src_file_path = try std.mem.concat(context.allocator, u8, &.{ "lib/libc/musl/", src_file });
const basename = std.fs.path.basename(src_file);
const target = try context.allocator.dupe(u8, basename);
target[target.len - 1] = 'o';
const hash = data_structures.my_hash(src_file);
- const hash_string = data_structures.format_int(&buffer, hash, 16, false);
- const target_path = try std.mem.concat(context.allocator, u8, &.{out_dir, hash_string, target});
- const args: []const []const u8 = &.{ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
- "-I", arch_include_path,
- "-I", arch_generic_include_path,
- "-I", src_include_path,
- "-I", src_internal_path,
- "-I", include_path,
- "-I", triple_include_path,
- "-I", generic_include_path,
- "-c", src_file_path,
- "-o", target_path,
+ const hash_string = format_int(&buffer, hash, 16, false);
+ const target_path = try std.mem.concat(context.allocator, u8, &.{ out_dir, hash_string, target });
+ const args: []const []const u8 = &.{
+ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
+ "-I", arch_include_path, "-I", arch_generic_include_path, "-I", src_include_path, "-I", src_internal_path, "-I", include_path, "-I", triple_include_path, "-I", generic_include_path, "-c", src_file_path, "-o", target_path,
};
const exit_code = try clangMain(context.allocator, args);
if (exit_code != 0) unreachable;
@@ -166,23 +158,16 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
}
for (musl_x86_64_source_files) |src_file| {
- const src_file_path = try std.mem.concat(context.allocator, u8, &.{"lib/libc/musl/", src_file});
+ const src_file_path = try std.mem.concat(context.allocator, u8, &.{ "lib/libc/musl/", src_file });
const basename = std.fs.path.basename(src_file);
const target = try context.allocator.dupe(u8, basename);
target[target.len - 1] = 'o';
const hash = data_structures.my_hash(src_file);
- const hash_string = data_structures.format_int(&buffer, hash, 16, false);
- const target_path = try std.mem.concat(context.allocator, u8, &.{out_dir, hash_string, target});
- const args: []const []const u8 = &.{ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
- "-I", arch_include_path,
- "-I", arch_generic_include_path,
- "-I", src_include_path,
- "-I", src_internal_path,
- "-I", include_path,
- "-I", triple_include_path,
- "-I", generic_include_path,
- "-c", src_file_path,
- "-o", target_path,
+ const hash_string = format_int(&buffer, hash, 16, false);
+ const target_path = try std.mem.concat(context.allocator, u8, &.{ out_dir, hash_string, target });
+ const args: []const []const u8 = &.{
+ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
+ "-I", arch_include_path, "-I", arch_generic_include_path, "-I", src_include_path, "-I", src_internal_path, "-I", include_path, "-I", triple_include_path, "-I", generic_include_path, "-c", src_file_path, "-o", target_path,
};
const exit_code = try clangMain(context.allocator, args);
if (exit_code != 0) unreachable;
@@ -199,16 +184,9 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
const crt1_output_path = "nat/musl/crt1.o";
{
const crt_path = "lib/libc/musl/crt/crt1.c";
- const args: []const []const u8 = &.{ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700", "-DCRT",
- "-I", arch_include_path,
- "-I", arch_generic_include_path,
- "-I", src_include_path,
- "-I", src_internal_path,
- "-I", include_path,
- "-I", triple_include_path,
- "-I", generic_include_path,
- "-c", crt_path,
- "-o", crt1_output_path,
+ const args: []const []const u8 = &.{
+ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700", "-DCRT",
+ "-I", arch_include_path, "-I", arch_generic_include_path, "-I", src_include_path, "-I", src_internal_path, "-I", include_path, "-I", triple_include_path, "-I", generic_include_path, "-c", crt_path, "-o", crt1_output_path,
};
const exit_code = try clangMain(context.allocator, args);
if (exit_code != 0) {
@@ -219,16 +197,9 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
const crti_output_path = "nat/musl/crti.o";
{
const crt_path = "lib/libc/musl/crt/x86_64/crti.s";
- const args: []const []const u8 = &.{ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
- "-I", arch_include_path,
- "-I", arch_generic_include_path,
- "-I", src_include_path,
- "-I", src_internal_path,
- "-I", include_path,
- "-I", triple_include_path,
- "-I", generic_include_path,
- "-c", crt_path,
- "-o", crti_output_path,
+ const args: []const []const u8 = &.{
+ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
+ "-I", arch_include_path, "-I", arch_generic_include_path, "-I", src_include_path, "-I", src_internal_path, "-I", include_path, "-I", triple_include_path, "-I", generic_include_path, "-c", crt_path, "-o", crti_output_path,
};
const exit_code = try clangMain(context.allocator, args);
if (exit_code != 0) {
@@ -239,16 +210,9 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
const crtn_output_path = "nat/musl/crtn.o";
{
const crt_path = "lib/libc/musl/crt/x86_64/crtn.s";
- const args: []const []const u8 = &.{ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
- "-I", arch_include_path,
- "-I", arch_generic_include_path,
- "-I", src_include_path,
- "-I", src_internal_path,
- "-I", include_path,
- "-I", triple_include_path,
- "-I", generic_include_path,
- "-c", crt_path,
- "-o", crtn_output_path,
+ const args: []const []const u8 = &.{
+ context.executable_absolute_path, "--no-default-config", "-fno-caret-diagnostics", "-target", "x86_64-unknown-linux-musl", "-std=c99", "-ffreestanding", "-mred-zone", "-fno-omit-frame-pointer", "-fno-stack-protector", "-O2", "-fno-unwind-tables", "-fno-asynchronous-unwind-tables", "-ffunction-sections", "-fdata-sections", "-gdwarf-4", "-gdwarf32", "-Wa,--noexecstack", "-D_XOPEN_SOURCE=700",
+ "-I", arch_include_path, "-I", arch_generic_include_path, "-I", src_include_path, "-I", src_internal_path, "-I", include_path, "-I", triple_include_path, "-I", generic_include_path, "-c", crt_path, "-o", crtn_output_path,
};
const exit_code = try clangMain(context.allocator, args);
if (exit_code != 0) {
@@ -260,13 +224,7 @@ pub fn compileCSourceFile(context: *const Context, arguments: [][*:0]u8) !void {
const argument = span(arguments[0]);
const output_object_file = "nat/main.o";
- const exit_code = try clangMain(context.allocator, &.{ context.executable_absolute_path, "--no-default-config", "-target", "x86_64-unknown-linux-musl", "-nostdinc", "-fno-spell-checking",
- "-isystem", "lib/include",
- "-isystem", "lib/libc/include/x86_64-linux-musl",
- "-isystem", "lib/libc/include/generic-musl",
- "-isystem", "lib/libc/include/x86-linux-any",
- "-isystem", "lib/libc/include/any-linux-any",
- "-c", argument, "-o", output_object_file});
+ const exit_code = try clangMain(context.allocator, &.{ context.executable_absolute_path, "--no-default-config", "-target", "x86_64-unknown-linux-musl", "-nostdinc", "-fno-spell-checking", "-isystem", "lib/include", "-isystem", "lib/libc/include/x86_64-linux-musl", "-isystem", "lib/libc/include/generic-musl", "-isystem", "lib/libc/include/x86-linux-any", "-isystem", "lib/libc/include/any-linux-any", "-c", argument, "-o", output_object_file });
if (exit_code != 0) {
unreachable;
}
@@ -2109,7 +2067,6 @@ const musl_arch_files = [_][]const u8{
"src/unistd/x32/lseek.c",
};
-
fn argsCopyZ(alloc: Allocator, args: []const []const u8) ![:null]?[*:0]u8 {
var argv = try alloc.allocSentinel(?[*:0]u8, args.len, null);
for (args, 0..) |arg, i| {
@@ -2136,17 +2093,17 @@ const ExecutableOptions = struct {
is_test: bool,
};
-const Arch = enum{
+const Arch = enum {
x86_64,
aarch64,
};
-const Os = enum{
+const Os = enum {
linux,
macos,
};
-const Abi = enum{
+const Abi = enum {
none,
gnu,
musl,
@@ -2338,6 +2295,7 @@ fn realpathAlloc(allocator: Allocator, pathname: []const u8) ![]const u8 {
pub const ContainerType = enum {
@"struct",
@"enum",
+ bitfield,
};
pub const Directory = struct {
@@ -2389,38 +2347,14 @@ fn getLoggerScopeType(comptime logger_scope: LoggerScope) type {
var logger_bitset = std.EnumSet(LoggerScope).initEmpty();
-// fn getWriter() !std.fs.File.Writer {
-// const stdout = std.io.getStdOut();
-// return stdout.writer();
-// }
-
-// fn shouldLog(comptime logger_scope: LoggerScope, logger: getLoggerScopeType(logger_scope).Logger) bool {
-// return logger_bitset.contains(logger_scope) and getLoggerScopeType(logger_scope).Logger.bitset.contains(logger);
-// }
-
-// pub fn logln(comptime logger_scope: LoggerScope, logger: getLoggerScopeType(logger_scope).Logger, comptime format: []const u8, arguments: anytype) void {
-// if (shouldLog(logger_scope, logger)) {
-// log(logger_scope, logger, format, arguments);
-// const writer = try getWriter();
-// writer.writeByte('\n') catch unreachable;
-// }
-// }
-
-// pub fn log(comptime logger_scope: LoggerScope, logger: getLoggerScopeType(logger_scope).Logger, comptime format: []const u8, arguments: anytype) void {
-// if (shouldLog(logger_scope, logger)) {
-// std.fmt.format(try getWriter(), format, arguments) catch unreachable;
-// }
-// }
-
pub fn panic(message: []const u8, stack_trace: ?*std.builtin.StackTrace, return_address: ?usize) noreturn {
const print_stack_trace = @import("configuration").print_stack_trace;
switch (print_stack_trace) {
true => @call(.always_inline, std.builtin.default_panic, .{ message, stack_trace, return_address }),
false => {
- // const writer = try getWriter();
- // writer.writeAll("\nPANIC: ") catch {};
- // writer.writeAll(message) catch {};
- // writer.writeByte('\n') catch {};
+ write(.panic, "\nPANIC: ") catch {};
+ write(.panic, message) catch {};
+ write(.panic, "\n") catch {};
@breakpoint();
std.os.abort();
},
@@ -2444,35 +2378,23 @@ const ImportPackageResult = struct {
fn getTypeBitSize(ty: *Type, unit: *Unit) u32 {
return switch (ty.*) {
- .bool => 1,
.integer => |integer| integer.bit_count,
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- switch (struct_type.optional) {
- false => switch (struct_type.backing_type) {
- .null => {
- var bit_size: u32 = 0;
- for (struct_type.fields.slice()) |field_index| {
- const field = unit.struct_fields.get(field_index);
- const field_type = unit.types.get(field.type);
- const field_bit_size = field_type.getBitSize(unit);
- bit_size += field_bit_size;
- }
- return bit_size;
- },
- else => unreachable,
- },
- true => unreachable,
- }
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
+ var bit_size: u32 = 0;
+ for (struct_type.fields.slice()) |field_index| {
+ const field = unit.struct_fields.get(field_index);
+ const field_type = unit.types.get(field.type);
+ const field_bit_size = field_type.getBitSize(unit);
+ bit_size += field_bit_size;
+ }
+ return bit_size;
+ },
+ else => |t| @panic(@tagName(t)),
},
.pointer => 64,
- .@"enum" => |enum_index| b: {
- const enum_type = unit.enums.get(enum_index);
- const backing_type = unit.types.get(enum_type.backing_type);
- break :b getTypeBitSize(backing_type, unit);
- },
.slice => 2 * @bitSizeOf(usize),
- .void => 0,
+ .void, .noreturn => 0,
else => |t| @panic(@tagName(t)),
};
}
@@ -2481,19 +2403,12 @@ pub const Type = union(enum) {
void,
noreturn,
type,
- comptime_int,
- bool,
@"struct": Struct.Index,
- @"enum": Enum.Index,
function: Function.Prototype.Index,
integer: Type.Integer,
pointer: Type.Pointer,
slice: Type.Slice,
array: Type.Array,
- @"union": Type.Union.Index,
- @"error": Type.Error.Index,
- error_union: Type.Error.Union,
- error_set: Type.Error.Set.Index,
pub fn getBitSize(ty: *Type, unit: *Unit) u32 {
return getTypeBitSize(ty, unit);
@@ -2509,9 +2424,12 @@ pub const Type = union(enum) {
fn getScope(ty: *Type, unit: *Unit) *Debug.Scope {
return switch (ty.*) {
- .@"struct" => |struct_index| &unit.structs.get(struct_index).scope.scope,
- .@"enum" => |enum_index| &unit.enums.get(enum_index).scope.scope,
- .@"error" => |error_index| &unit.errors.get(error_index).scope.scope,
+ .@"struct" => |struct_index| &unit.structs.get(struct_index).kind.@"struct".scope.scope,
+ .integer => |*integer| switch (integer.kind) {
+ .@"enum" => |*enum_type| &enum_type.scope.scope,
+ .@"error" => |*err| &err.scope.scope,
+ else => |t| @panic(@tagName(t)),
+ },
else => |t| @panic(@tagName(t)),
};
}
@@ -2530,7 +2448,7 @@ pub const Type = union(enum) {
const Error = struct {
fields: UnpinnedArray(Type.Error.Field.Index) = .{},
scope: Debug.Scope.Global,
- backing_type: Type.Index,
+ id: u32,
pub const List = BlockList(@This(), enum {});
pub usingnamespace @This().List.Index;
@@ -2553,29 +2471,45 @@ pub const Type = union(enum) {
const Union = struct {
@"error": Type.Index,
type: Type.Index,
+ alternate_type: Type.Index,
+ alternate_index: bool,
pub const List = BlockList(@This(), enum {});
pub usingnamespace @This().List.Index;
+
+ const Descriptor = struct {
+ @"error": Type.Index,
+ type: Type.Index,
+ };
};
};
- const Union = struct {
- fields: UnpinnedArray(Struct.Field.Index) = .{},
- scope: Debug.Scope.Global,
- is_tagged: bool,
- pub const List = BlockList(@This(), enum {});
- pub usingnamespace @This().List.Index;
- };
-
const Integer = struct {
+ kind: Kind,
bit_count: u16,
signedness: Signedness,
+ const Kind = union(enum) {
+ bool,
+ comptime_int,
+ @"enum": Enum,
+ materialized_int,
+ disguised_pointer,
+ @"error": Type.Error,
+ error_set: Type.Error.Set,
+ bitfield: Bitfield,
+ };
+
pub const Signedness = enum(u1) {
unsigned = 0,
signed = 1,
};
};
+ pub const Bitfield = struct {
+ fields: UnpinnedArray(Struct.Field.Index) = .{},
+ scope: Debug.Scope.Global,
+ };
+
pub const Pointer = struct {
type: Type.Index,
termination: Termination,
@@ -2622,76 +2556,101 @@ pub const Type = union(enum) {
usize,
ssize,
+ const bool_type = Type.u1;
+
const map = std.EnumArray(@This(), Type).init(.{
.void = .void,
.noreturn = .noreturn,
.type = .type,
- .bool = .bool,
- .comptime_int = .comptime_int,
+ .bool = .{
+ .integer = .{
+ .bit_count = 1,
+ .signedness = .unsigned,
+ .kind = .bool,
+ },
+ },
+ .comptime_int = .{
+ .integer = .{
+ .bit_count = 0,
+ .signedness = .unsigned,
+ .kind = .comptime_int,
+ },
+ },
.u1 = .{
.integer = .{
.bit_count = 1,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
.u8 = .{
.integer = .{
.bit_count = 8,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
.u16 = .{
.integer = .{
.bit_count = 16,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
.u32 = .{
.integer = .{
.bit_count = 32,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
.u64 = .{
.integer = .{
.bit_count = 64,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
.s8 = .{
.integer = .{
.bit_count = 8,
.signedness = .signed,
+ .kind = .materialized_int,
},
},
.s16 = .{
.integer = .{
.bit_count = 16,
.signedness = .signed,
+ .kind = .materialized_int,
},
},
.s32 = .{
.integer = .{
.bit_count = 32,
.signedness = .signed,
+ .kind = .materialized_int,
},
},
.s64 = .{
.integer = .{
.bit_count = 64,
.signedness = .signed,
+ .kind = .materialized_int,
},
},
.ssize = .{
.integer = .{
.bit_count = 64,
.signedness = .signed,
+ .kind = .materialized_int,
},
},
.usize = .{
.integer = .{
.bit_count = 64,
.signedness = .unsigned,
+ .kind = .materialized_int,
},
},
});
@@ -2729,13 +2688,33 @@ pub const Instruction = union(enum) {
stack_slot: Instruction.StackSlot,
store: Store,
syscall: Syscall,
+ @"switch": Switch,
trap,
@"unreachable",
+ const Switch = struct {
+ condition: V,
+ cases: UnpinnedArray(Case) = .{},
+ else_block: BasicBlock.Index = .null,
+ block_type: Type.Index,
+
+ const Case = struct {
+ condition: V.Comptime,
+ basic_block: BasicBlock.Index,
+ };
+ };
+
const Phi = struct {
values: UnpinnedArray(V) = .{},
basic_blocks: UnpinnedArray(BasicBlock.Index) = .{},
type: Type.Index,
+
+ pub fn addIncoming(phi: *Phi, context: *const Context, value: V, basic_block: BasicBlock.Index) !void {
+ assert(phi.type == value.type);
+ assert(basic_block != .null);
+ try phi.values.append(context.my_allocator, value);
+ try phi.basic_blocks.append(context.my_allocator, basic_block);
+ }
};
const Min = struct {
@@ -2860,6 +2839,9 @@ pub const Instruction = union(enum) {
slice_coerce_to_zero_termination,
truncate,
pointer_to_array_to_pointer_to_many,
+ error_union_type_int_to_pointer,
+ error_union_type_upcast,
+ error_union_type_downcast,
};
};
@@ -2896,7 +2878,7 @@ pub const Instruction = union(enum) {
pub const BasicBlock = struct {
instructions: UnpinnedArray(Instruction.Index) = .{},
- predecessor: BasicBlock.Index = .null,
+ predecessors: UnpinnedArray(BasicBlock.Index) = .{},
// TODO: not use a bool
terminated: bool = false,
@@ -2943,11 +2925,33 @@ pub const Function = struct {
};
pub const Struct = struct {
- fields: UnpinnedArray(Struct.Field.Index) = .{},
- scope: Debug.Scope.Global,
- backing_type: Type.Index,
- type: Type.Index,
- optional: bool,
+ kind: Kind,
+
+ pub const Kind = union(enum) {
+ @"struct": StructDescriptor,
+ @"union": struct {
+ scope: Debug.Scope.Global,
+ fields: UnpinnedArray(Struct.Field.Index) = .{},
+ },
+ error_union: struct {
+ @"error": Type.Index,
+ type: Type.Index,
+ union_for_type: Type.Index,
+ union_for_error: Type.Index,
+ abi: Type.Index,
+ },
+ optional: Type.Index,
+ raw_error_union: Type.Index,
+ abi_compatible_error_union: struct {
+ type: Type.Index,
+ padding: Type.Index,
+ },
+
+ pub const StructDescriptor = struct {
+ scope: Debug.Scope.Global,
+ fields: UnpinnedArray(Struct.Field.Index) = .{},
+ };
+ };
pub const Field = struct {
name: u32,
@@ -2980,7 +2984,7 @@ pub const Context = struct {
};
pub fn joinPath(context: *const Context, a: []const u8, b: []const u8) ![]const u8 {
- return if (a.len != 0 and b.len != 0) try std.mem.concat(context.allocator, u8, &.{a, "/", b}) else b;
+ return if (a.len != 0 and b.len != 0) try std.mem.concat(context.allocator, u8, &.{ a, "/", b }) else b;
}
pub const V = struct {
@@ -3004,12 +3008,13 @@ pub const V = struct {
error_value: Type.Error.Field.Index,
function_definition: Function.Definition.Index,
global: *Debug.Declaration.Global,
- constant_backed_struct: u64,
+ constant_bitfield: u64,
constant_struct: ConstantStruct.Index,
constant_array: ConstantArray.Index,
constant_slice: ConstantSlice.Index,
string_literal: u32,
null_pointer,
+ @"unreachable",
pub const ConstantSlice = struct {
array: *Debug.Declaration.Global,
@@ -3265,6 +3270,111 @@ pub const Builder = struct {
generate_debug_info: bool,
emit_ir: bool,
+ fn setCurrentScope(builder: *Builder, scope: *Debug.Scope) void {
+ builder.current_scope = scope;
+ }
+
+ fn getErrorUnionType(builder: *Builder, unit: *Unit, context: *const Context, error_union: Type.Error.Union.Descriptor) !Type.Index {
+ _ = builder; // autofix
+ if (unit.error_unions.get(error_union)) |type_index| {
+ return type_index;
+ } else {
+ const t = unit.types.get(error_union.type);
+ const e = unit.types.get(error_union.@"error");
+ const t_bitsize = t.getBitSize(unit);
+ const e_bitsize = e.getBitSize(unit);
+ const types = [2]Type.Index{ error_union.type, error_union.@"error" };
+ const is_type_smaller_or_equal = t_bitsize < e_bitsize;
+ const biggest_index = @intFromBool(is_type_smaller_or_equal);
+ const biggest_type_index = types[biggest_index];
+
+ const abi_struct_index = try unit.structs.append(context.my_allocator, .{
+ .kind = .{
+ .raw_error_union = biggest_type_index,
+ },
+ });
+
+ const abi_type_index = try unit.types.append(context.my_allocator, .{
+ .@"struct" = abi_struct_index,
+ });
+
+ var error_union_for_type = Type.Index.null;
+ var error_union_for_error = Type.Index.null;
+
+ if (biggest_type_index == error_union.type) {
+ error_union_for_type = abi_type_index;
+
+ const padding_bit_count = t_bitsize - e_bitsize;
+ assert(padding_bit_count != t_bitsize);
+ if (padding_bit_count == 0 and t.* == .integer) {
+ error_union_for_error = abi_type_index;
+ } else {
+ const padding_type = try unit.getArrayType(context, .{
+ .count = padding_bit_count,
+ .type = .u1,
+ .termination = .none,
+ });
+
+ const error_union_for_error_struct_index = try unit.structs.append(context.my_allocator, .{
+ .kind = .{
+ .abi_compatible_error_union = .{
+ .type = error_union.@"error",
+ .padding = padding_type,
+ },
+ },
+ });
+ error_union_for_error = try unit.types.append(context.my_allocator, .{
+ .@"struct" = error_union_for_error_struct_index,
+ });
+ }
+ } else {
+ error_union_for_error = abi_type_index;
+
+ const padding_bit_count = e_bitsize - t_bitsize;
+ assert(padding_bit_count != 0);
+ if (padding_bit_count != e_bitsize) {
+ const padding_type = try unit.getArrayType(context, .{
+ .count = padding_bit_count,
+ .type = .u1,
+ .termination = .none,
+ });
+
+ const error_union_for_error_struct_index = try unit.structs.append(context.my_allocator, .{
+ .kind = .{
+ .abi_compatible_error_union = .{
+ .type = error_union.@"error",
+ .padding = padding_type,
+ },
+ },
+ });
+ _ = error_union_for_error_struct_index; // autofix
+ unreachable;
+ } else {
+ error_union_for_type = abi_type_index;
+ }
+ }
+
+ const error_union_struct_index = try unit.structs.append(context.my_allocator, .{
+ .kind = .{
+ .error_union = .{
+ .@"error" = error_union.@"error",
+ .type = error_union.type,
+ .union_for_type = error_union_for_type,
+ .union_for_error = error_union_for_error,
+ .abi = abi_type_index,
+ },
+ },
+ });
+
+ const error_union_type_index = try unit.types.append(context.my_allocator, .{
+ .@"struct" = error_union_struct_index,
+ });
+ try unit.error_unions.put_no_clobber(context.my_allocator, error_union, error_union_type_index);
+
+ return error_union_type_index;
+ }
+ }
+
fn processArrayLiteral(builder: *Builder, unit: *Unit, context: *const Context, constant_array_index: V.Comptime.ConstantArray.Index, token: Token.Index) !*Debug.Declaration.Global {
if (unit.global_array_constants.get(constant_array_index)) |global| {
return global;
@@ -3311,9 +3421,9 @@ pub const Builder = struct {
fn join_name(context: *const Context, name: []const u8, number: usize, base: u8) ![:0]const u8 {
const len = 65;
var buffer: [len + 1]u8 = undefined;
- const slice = data_structures.format_int(buffer[0..len], number, base, false);
+ const slice = format_int(buffer[0..len], number, base, false);
const ptr = slice.ptr - name.len;
- const new_slice = ptr[0..slice.len + name.len];
+ const new_slice = ptr[0 .. slice.len + name.len];
@memcpy(new_slice[0..name.len], name);
buffer[len] = 0;
return @ptrCast(try context.my_allocator.duplicate_bytes(new_slice));
@@ -3396,17 +3506,21 @@ pub const Builder = struct {
.@"asm" => {
const architecture = InlineAssembly.x86_64;
- var instructions = try UnpinnedArray(InlineAssembly.Instruction.Index).initialize_with_capacity(context.my_allocator, @intCast(argument_node_list.len));
+ assert(argument_node_list.len == 1);
+ const assembly_block_node = unit.getNode(argument_node_list[0]);
+ const instruction_node_list = unit.getNodeList(assembly_block_node.left);
+ var instructions = try UnpinnedArray(InlineAssembly.Instruction.Index).initialize_with_capacity(context.my_allocator, @intCast(instruction_node_list.len));
- for (argument_node_list) |assembly_statement_node_index| {
- const assembly_statement_node = unit.getNode(assembly_statement_node_index);
- const instruction_name = unit.getExpectedTokenBytes(assembly_statement_node.token, .identifier);
+ for (instruction_node_list) |assembly_statement_node_index| {
+ const assembly_instruction_node = unit.getNode(assembly_statement_node_index);
+ const assembly_instruction_name_node = unit.getNode(assembly_instruction_node.left);
+ const instruction_name = unit.getExpectedTokenBytes(assembly_instruction_name_node.token, .identifier);
const instruction = inline for (@typeInfo(architecture.Instruction).Enum.fields) |instruction_enum_field| {
if (byte_equal(instruction_name, instruction_enum_field.name)) {
break @field(architecture.Instruction, instruction_enum_field.name);
}
} else unreachable;
- const operand_nodes = unit.getNodeList(assembly_statement_node.left);
+ const operand_nodes = unit.getNodeList(assembly_instruction_node.right);
var operands = try UnpinnedArray(InlineAssembly.Operand).initialize_with_capacity(context.my_allocator, @intCast(operand_nodes.len));
@@ -3431,13 +3545,8 @@ pub const Builder = struct {
},
else => |t| @panic(@tagName(t)),
},
- .identifier => b: {
- const identifier = unit.getExpectedTokenBytes(operand_node.token, .identifier);
- const result = try builder.resolveIdentifier(unit, context, Type.Expect.none, identifier, .left);
-
- break :b .{
- .value = result,
- };
+ .assembly_code_expression => .{
+ .value = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, operand_node.left, .left),
},
else => |t| @panic(@tagName(t)),
};
@@ -3476,142 +3585,34 @@ pub const Builder = struct {
// TODO: depends? .right is not always the right choice
const v = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, argument_node_index, .right);
- const source_type = unit.types.get(v.type);
- //
const cast_id: Instruction.Cast.Id = switch (type_expect) {
- .type => |type_index| b: {
- assert(type_index != v.type);
- const destination_type = unit.types.get(type_index);
- switch (destination_type.*) {
- .pointer => |destination_pointer| {
- switch (source_type.*) {
- .integer => |source_integer| {
- _ = source_integer; // autofix
- // TODO:
- break :b .int_to_pointer;
+ .type => |type_index| {
+ const cast_id = try builder.resolveCast(unit, context, type_index, v);
+ switch (cast_id) {
+ else => {
+ const instruction = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .value = v,
+ .type = type_expect.type,
+ .id = cast_id,
},
- .pointer => |source_pointer| {
- if (destination_pointer.type == source_pointer.type) {
- if (destination_pointer.mutability == source_pointer.mutability) {
- if (destination_pointer.nullable != source_pointer.nullable) {
- // std.debug.print("Dst: {} Src: {}\n", .{ destination_pointer.nullable, source_pointer.nullable });
- if (destination_pointer.nullable) {
- assert(destination_pointer.termination != source_pointer.termination);
- unreachable;
- } else {
- unreachable;
- }
- }
- if (destination_pointer.termination != source_pointer.termination) {
- unreachable;
- }
- unreachable;
- } else {
- break :b .pointer_const_to_var;
- }
- } else {
- unreachable;
- }
- },
- else => |t| @panic(@tagName(t)),
- }
- },
- .integer => |destination_integer| {
- switch (source_type.*) {
- .@"enum" => |enum_index| {
- const enum_type = unit.enums.get(enum_index);
- if (enum_type.backing_type == type_index) {
- break :b .enum_to_int;
- } else {
- const source_integer = unit.types.get(enum_type.backing_type).integer;
- if (destination_integer.bit_count < source_integer.bit_count) {
- unreachable;
- } else if (destination_integer.bit_count > source_integer.bit_count) {
- assert(destination_integer.signedness != source_integer.signedness);
- break :b switch (destination_integer.signedness) {
- .signed => .sign_extend,
- .unsigned => .zero_extend,
- };
- } else {
- assert(destination_integer.signedness != source_integer.signedness);
- break :b .bitcast;
- }
- }
- },
- .integer => |source_integer| {
- if (destination_integer.bit_count < source_integer.bit_count) {
- assert(destination_integer.signedness == source_integer.signedness);
- break :b .truncate;
- } else if (destination_integer.bit_count > source_integer.bit_count) {
- assert(destination_integer.signedness != source_integer.signedness);
- break :b switch (destination_integer.signedness) {
- .signed => .sign_extend,
- .unsigned => .zero_extend,
- };
- } else {
- assert(destination_integer.signedness != source_integer.signedness);
- break :b .bitcast;
- }
- },
- .pointer => {
- if (destination_integer.signedness == .signed) {
- unreachable;
- }
- if (destination_integer.bit_count < 64) {
- unreachable;
- }
+ });
- break :b .pointer_to_int;
+ try builder.appendInstruction(unit, context, instruction);
+
+ return .{
+ .value = .{
+ .runtime = instruction,
},
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- if (struct_type.backing_type != .null) {
- if (struct_type.backing_type == type_index) {
- break :b .bitcast;
- } else {
- unreachable;
- }
- } else {
- unreachable;
- }
- },
- else => |t| @panic(@tagName(t)),
- }
+ .type = type_expect.type,
+ };
},
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- if (struct_type.optional) {
- assert(struct_type.backing_type == .null);
- unreachable;
- } else {
- switch (struct_type.backing_type) {
- .null => unreachable,
- else => unreachable,
- }
- }
- },
- else => |t| @panic(@tagName(t)),
}
},
else => |t| @panic(@tagName(t)),
};
+ _ = cast_id; // autofix
- const instruction = try unit.instructions.append(context.my_allocator, .{
- .cast = .{
- .value = v,
- .type = type_expect.type,
- .id = cast_id,
- },
- });
-
- try builder.appendInstruction(unit, context, instruction);
-
- return .{
- .value = .{
- .runtime = instruction,
- },
- .type = type_expect.type,
- };
},
.size => {
assert(argument_node_list.len == 1);
@@ -3682,29 +3683,32 @@ pub const Builder = struct {
const left = try builder.resolveRuntimeValue(unit, context, type_expect, argument_node_list[0], .right);
const right = try builder.resolveRuntimeValue(unit, context, type_expect, argument_node_list[1], .right);
switch (unit.types.get(type_index).*) {
- .integer => |integer| {
- const min_descriptor = Instruction.Min{
- .left = left,
- .right = right,
- .type = type_index,
- };
- const instruction: Instruction = switch (integer.signedness) {
- .unsigned => .{
- .umin = min_descriptor,
- },
- .signed => .{
- .smin = min_descriptor,
- },
- };
- const min = try unit.instructions.append(context.my_allocator, instruction);
- try builder.appendInstruction(unit, context, min);
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => {
+ const min_descriptor = Instruction.Min{
+ .left = left,
+ .right = right,
+ .type = type_index,
+ };
+ const instruction: Instruction = switch (integer.signedness) {
+ .unsigned => .{
+ .umin = min_descriptor,
+ },
+ .signed => .{
+ .smin = min_descriptor,
+ },
+ };
+ const min = try unit.instructions.append(context.my_allocator, instruction);
+ try builder.appendInstruction(unit, context, min);
- return .{
- .value = .{
- .runtime = min,
- },
- .type = type_index,
- };
+ return .{
+ .value = .{
+ .runtime = min,
+ },
+ .type = type_index,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -3717,7 +3721,6 @@ pub const Builder = struct {
.@"error" => {
assert(argument_node_list.len == 1);
// TODO: type
- // const value = try builder.resolveComptimeValue(unit, context, Type.Expect.none, .{}, argument_node_list[0], null);
const argument_node = unit.getNode(argument_node_list[0]);
switch (argument_node.id) {
.string_literal => {
@@ -3730,77 +3733,132 @@ pub const Builder = struct {
else => |t| @panic(@tagName(t)),
}
},
- .add_overflow => {
- assert(argument_node_list.len == 2);
- const left = try builder.resolveRuntimeValue(unit, context, type_expect, argument_node_list[0], .right);
- const right_type_expect = switch (type_expect) {
- .none => Type.Expect{ .type = left.type },
- else => type_expect,
- };
- const right = try builder.resolveRuntimeValue(unit, context, right_type_expect, argument_node_list[1], .right);
+ else => |t| @panic(@tagName(t)),
+ }
+ }
- const add_overflow = try unit.instructions.append(context.my_allocator, .{
- .add_overflow = .{
- .left = left,
- .right = right,
- .type = left.type,
+ fn resolveCast(builder: *Builder, unit: *Unit, context: *const Context, type_index: Type.Index, value: V) !Instruction.Cast.Id {
+ _ = builder; // autofix
+ _ = context; // autofix
+ assert(type_index != value.type);
+ const source_type = unit.types.get(value.type);
+ const destination_type = unit.types.get(type_index);
+
+ switch (destination_type.*) {
+ .pointer => |destination_pointer| {
+ switch (source_type.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ // TODO:
+ .materialized_int => return .int_to_pointer,
+ else => |t| @panic(@tagName(t)),
},
- });
- try builder.appendInstruction(unit, context, add_overflow);
-
- const result_type = try unit.getOptionalType(context, left.type);
-
- const extract_value = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = .{
- .value = .{
- .runtime = add_overflow,
- },
- .type = result_type,
+ .pointer => |source_pointer| {
+ if (destination_pointer.type == source_pointer.type) {
+ if (destination_pointer.mutability == source_pointer.mutability) {
+ if (destination_pointer.nullable != source_pointer.nullable) {
+ // std.debug.print("Dst: {} Src: {}\n", .{ destination_pointer.nullable, source_pointer.nullable });
+ if (destination_pointer.nullable) {
+ assert(destination_pointer.termination != source_pointer.termination);
+ unreachable;
+ } else {
+ unreachable;
+ }
+ }
+ if (destination_pointer.termination != source_pointer.termination) {
+ unreachable;
+ }
+ unreachable;
+ } else {
+ return .pointer_const_to_var;
+ }
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ .integer => |destination_integer| switch (destination_integer.kind) {
+ .materialized_int => switch (source_type.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ .@"enum" => {
+ if (destination_integer.signedness == source_integer.signedness and destination_integer.bit_count == source_integer.bit_count) {
+ return .enum_to_int;
+ } else {
+ // TODO: is this correct?
+ if (destination_integer.bit_count < source_integer.bit_count) {
+ unreachable;
+ } else if (destination_integer.bit_count > source_integer.bit_count) {
+ assert(destination_integer.signedness != source_integer.signedness);
+ return switch (destination_integer.signedness) {
+ .signed => .sign_extend,
+ .unsigned => .zero_extend,
+ };
+ } else {
+ assert(destination_integer.signedness != source_integer.signedness);
+ return .bitcast;
+ }
+ }
},
- .index = 1,
- },
- });
- try builder.appendInstruction(unit, context, extract_value);
-
- const carry = try builder.newBasicBlock(unit, context);
- const normal = try builder.newBasicBlock(unit, context);
-
- try builder.branch(unit, context, extract_value, carry, normal);
- builder.current_basic_block = carry;
-
- try builder.buildRet(unit, context, .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = 1,
- },
+ .materialized_int => {
+ if (destination_integer.bit_count < source_integer.bit_count) {
+ assert(destination_integer.signedness == source_integer.signedness);
+ return .truncate;
+ } else if (destination_integer.bit_count > source_integer.bit_count) {
+ assert(destination_integer.signedness != source_integer.signedness);
+ return switch (destination_integer.signedness) {
+ .signed => .sign_extend,
+ .unsigned => .zero_extend,
+ };
+ } else {
+ assert(destination_integer.signedness != source_integer.signedness);
+ return .bitcast;
+ }
},
- },
- .type = left.type,
- });
-
- builder.current_basic_block = normal;
-
- const result_extract_value = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = .{
- .value = .{
- .runtime = add_overflow,
- },
- .type = result_type,
+ .bitfield => {
+ if (destination_integer.bit_count == source_integer.bit_count and destination_integer.signedness == source_integer.signedness) {
+ return .bitcast;
+ } else {
+ unreachable;
+ }
},
- .index = 0,
+ else => |t| @panic(@tagName(t)),
},
- });
- try builder.appendInstruction(unit, context, result_extract_value);
+ .pointer => {
+ if (destination_integer.signedness == .signed) {
+ unreachable;
+ }
+ if (destination_integer.bit_count < 64) {
+ unreachable;
+ }
- return V{
- .value = .{
- .runtime = result_extract_value,
+ return .pointer_to_int;
},
- .type = left.type,
- };
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"error" => |_| switch (source_type.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ .materialized_int => {
+ if (destination_integer.signedness == source_integer.signedness and destination_integer.bit_count == source_integer.bit_count) {
+ return .bitcast;
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"struct" => |destination_struct_index| switch (unit.structs.get(destination_struct_index).kind) {
+ .error_union => |_| switch (source_type.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -3811,7 +3869,7 @@ pub const Builder = struct {
assert(@intFromEnum(old_scope.kind) <= @intFromEnum(new_scope.kind));
- if (builder.current_basic_block != .null) {
+ if (builder.current_basic_block != .null and (unit.function_definitions.get( builder.current_function).basic_blocks.length <= 1 or (unit.basic_blocks.get(builder.current_basic_block).instructions.length > 0 or unit.basic_blocks.get(builder.current_basic_block).predecessors.length > 0))) {
assert(@intFromEnum(old_scope.kind) >= @intFromEnum(Debug.Scope.Kind.function));
const instruction = try unit.instructions.append(context.my_allocator, .{
.push_scope = .{
@@ -3823,7 +3881,7 @@ pub const Builder = struct {
}
new_scope.parent = old_scope;
- builder.current_scope = new_scope;
+ builder.setCurrentScope(new_scope);
}
fn popScope(builder: *Builder, unit: *Unit, context: *const Context) !void {
@@ -3832,7 +3890,7 @@ pub const Builder = struct {
assert(@intFromEnum(old_scope.kind) >= @intFromEnum(new_scope.kind));
- if (builder.current_basic_block != .null) {
+ if (builder.current_basic_block != .null and (unit.function_definitions.get( builder.current_function).basic_blocks.length <= 1 or (unit.basic_blocks.get(builder.current_basic_block).instructions.length > 0 or unit.basic_blocks.get(builder.current_basic_block).predecessors.length > 0))) {
const instruction = try unit.instructions.append(context.my_allocator, .{
.pop_scope = .{
.old = old_scope,
@@ -3842,7 +3900,7 @@ pub const Builder = struct {
try builder.appendInstruction(unit, context, instruction);
}
- builder.current_scope = new_scope;
+ builder.setCurrentScope(new_scope);
}
fn analyzePackage(builder: *Builder, unit: *Unit, context: *const Context, package: *Package) !void {
@@ -3867,8 +3925,8 @@ pub const Builder = struct {
builder.loop_exit_block = .null;
const old_scope = builder.current_scope;
- builder.current_scope = &unit.scope.scope;
- defer builder.current_scope = old_scope;
+ builder.setCurrentScope(&unit.scope.scope);
+ defer builder.setCurrentScope(old_scope);
const old_exit_blocks = builder.exit_blocks;
builder.exit_blocks = .{};
@@ -3957,7 +4015,7 @@ pub const Builder = struct {
}
fn appendInstruction(builder: *Builder, unit: *Unit, context: *const Context, instruction_index: Instruction.Index) !void {
- // if (@intFromEnum(instruction_index) == 366) @breakpoint();
+ // if (@intFromEnum(instruction_index) == 430) @breakpoint();
switch (unit.instructions.get(instruction_index).*) {
.extract_value => |extract_value| switch (unit.types.get(extract_value.expression.type).*) {
.pointer => unreachable,
@@ -4078,7 +4136,7 @@ pub const Builder = struct {
.basic_block = builder.current_basic_block,
};
- builder.current_scope = new.scope;
+ builder.setCurrentScope(new.scope);
builder.current_basic_block = new.basic_block;
builder.current_file = new.file;
@@ -4086,7 +4144,7 @@ pub const Builder = struct {
}
fn endContextSwitch(builder: *Builder, old: ContextSwitch) void {
- builder.current_scope = old.scope;
+ builder.setCurrentScope(old.scope);
builder.current_basic_block = old.basic_block;
builder.current_file = old.file;
}
@@ -4271,7 +4329,7 @@ pub const Builder = struct {
const function_prototype = unit.function_prototypes.get(function_prototype_index);
const return_type = function_prototype.return_type;
- if (!cbb.terminated) {
+ if (!cbb.terminated and (cbb.instructions.length > 0 or cbb.predecessors.length > 0)) {
if (builder.return_block == .null) {
switch (function_prototype.attributes.naked) {
true => {
@@ -4279,50 +4337,52 @@ pub const Builder = struct {
try builder.buildTrap(unit, context);
},
false => switch (return_type) {
- .void => {
- try builder.buildRet(unit, context, .{
- .value = .{
- .@"comptime" = .void,
- },
- .type = .void,
- });
- },
- .noreturn => {
- try builder.buildTrap(unit, context);
- },
+ .void => try builder.buildRet(unit, context, .{
+ .value = .{
+ .@"comptime" = .void,
+ },
+ .type = .void,
+ }),
+ .noreturn => try builder.buildTrap(unit, context),
else => switch (unit.types.get(return_type).*) {
- .error_union => |error_union| switch (error_union.type) {
- .void => {
- const undefined_value = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = return_type,
- };
- const insert = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = undefined_value,
- .index = 1,
- .new_value = .{
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .error_union => |error_union| {
+ switch (error_union.type) {
+ .void => {
+ assert(error_union.abi == error_union.union_for_type);
+ const undefined_value = V{
.value = .{
- .@"comptime" = .{
- .bool = false,
+ .@"comptime" = .undefined,
+ },
+ .type = return_type,
+ };
+ const insert = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = undefined_value,
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = false,
+ },
+ },
+ .type = .bool,
},
},
- .type = .bool,
- },
- },
- });
- try builder.appendInstruction(unit, context, insert);
+ });
+ try builder.appendInstruction(unit, context, insert);
- try builder.buildRet(unit, context, .{
- .value = .{
- .runtime = insert,
+ try builder.buildRet(unit, context, .{
+ .value = .{
+ .runtime = insert,
+ },
+ .type = return_type,
+ });
},
- .type = return_type,
- });
+ else => unreachable,
+ }
},
- else => unreachable,
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -4338,45 +4398,52 @@ pub const Builder = struct {
.void => unreachable,
.noreturn => unreachable,
else => switch (unit.types.get(return_type).*) {
- .error_union => |error_union| {
- if (error_union.type == .void) {
- const return_value = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = .{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = return_type,
- },
- .index = 1,
- .new_value = .{
- .value = .{
- .@"comptime" = .{
- .bool = false,
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .error_union => |error_union| {
+ if (error_union.type == .void or
+ // TODO: is this correct?
+ error_union.type == .noreturn)
+ {
+ const return_value = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .@"comptime" = .undefined,
},
+ .type = return_type,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = false,
+ },
+ },
+ .type = .bool,
},
- .type = .bool,
},
- },
- });
- try builder.appendInstruction(unit, context, return_value);
+ });
+ try builder.appendInstruction(unit, context, return_value);
- try phi.values.append(context.my_allocator, .{
- .value = .{
- .runtime = return_value,
- },
- .type = return_type,
- });
- try phi.basic_blocks.append(context.my_allocator, builder.current_basic_block);
+ try phi.addIncoming(context, .{
+ .value = .{
+ .runtime = return_value,
+ },
+ .type = return_type,
+ }, builder.current_basic_block);
- try builder.jump(unit, context, builder.return_block);
- } else if (error_union.type == .noreturn) {
- unreachable;
- } else {
- unreachable;
- }
+ try builder.jump(unit, context, builder.return_block);
+ } else {
+ try unit.dumpFunctionDefinition(builder.current_function);
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => {
+ try unit.dumpFunctionDefinition(builder.current_function);
+ unreachable;
},
- else => {},
},
}
}
@@ -4405,20 +4472,19 @@ pub const Builder = struct {
.undefined => {
return .undefined;
},
- .enum_type => {
- const type_index = try builder.resolveContainerType(unit, context, node_index, .@"enum", maybe_global);
- return .{
- .type = type_index,
- };
- },
- .struct_type => {
- const type_index = try builder.resolveContainerType(unit, context, node_index, .@"struct", maybe_global);
+ .enum_type, .struct_type, .bitfield_type => {
+ const type_index = try builder.resolveContainerType(unit, context, node_index, switch (node.id) {
+ .enum_type => .@"enum",
+ .struct_type => .@"struct",
+ .bitfield_type => .bitfield,
+ else => unreachable,
+ }, maybe_global);
return .{
.type = type_index,
};
},
.@"switch" => {
- const result = try builder.resolveSwitch(unit, context, type_expect, node_index);
+ const result = try builder.resolveSwitch(unit, context, type_expect, node_index, .right);
switch (result.value) {
.@"comptime" => |ct| {
return ct;
@@ -4433,7 +4499,6 @@ pub const Builder = struct {
.none => unreachable,
.type => |type_index| switch (unit.types.get(type_index).*) {
.type => .right,
- .integer => .right,
else => |t| @panic(@tagName(t)),
},
else => unreachable,
@@ -4523,33 +4588,38 @@ pub const Builder = struct {
},
.error_type => {
assert(node.left != .null);
- assert(node.right == .null);
const nodes = unit.getNodeList(node.left);
if (nodes.len == 0) {
unreachable;
}
const token_debug_info = builder.getTokenDebugInfo(unit, node.token);
-
- const error_index = try unit.errors.append(context.my_allocator, .{
- .fields = try UnpinnedArray(Type.Error.Field.Index).initialize_with_capacity(context.my_allocator, @intCast(nodes.len)),
- .scope = .{
- .scope = .{
- .file = builder.current_file,
- .line = token_debug_info.line,
- .column = token_debug_info.column,
- .kind = .container,
- .local = false,
- .level = builder.current_scope.level + 1,
+ const error_type_index = try unit.types.append(context.my_allocator, .{
+ .integer = .{
+ .signedness = .unsigned,
+ .bit_count = 32,
+ .kind = .{
+ .@"error" = .{
+ .scope = .{
+ .scope = .{
+ .file = builder.current_file,
+ .line = token_debug_info.line,
+ .column = token_debug_info.column,
+ .kind = .container,
+ .local = false,
+ .level = builder.current_scope.level + 1,
+ .parent = builder.current_scope,
+ },
+ },
+ .fields = try UnpinnedArray(Type.Error.Field.Index).initialize_with_capacity(context.my_allocator, @intCast(nodes.len)),
+ .id = unit.error_count,
+ },
},
},
- .backing_type = .u32,
- });
- const new_error = unit.errors.get(error_index);
- const error_type_index = try unit.types.append(context.my_allocator, .{
- .@"error" = error_index,
});
+ unit.error_count += 1;
+ const error_type = &unit.types.get(error_type_index).integer.kind.@"error";
for (nodes, 0..) |field_node_index, index| {
const field_node = unit.getNode(field_node_index);
const identifier = unit.getExpectedTokenBytes(field_node.token, .identifier);
@@ -4559,13 +4629,53 @@ pub const Builder = struct {
.type = error_type_index,
.value = index,
});
- new_error.fields.append_with_capacity(error_field_index);
+ error_type.fields.append_with_capacity(error_field_index);
}
return .{
.type = error_type_index,
};
},
+ .dot_literal => {
+ switch (type_expect) {
+ .type => |type_index| {
+ const expected_type = unit.types.get(type_index);
+ const identifier = unit.getExpectedTokenBytes(Token.addInt(node.token, 1), .identifier);
+ const hash = try unit.processIdentifier(context, identifier);
+ switch (expected_type.*) {
+ .integer => |*integer| switch (integer.kind) {
+ .@"enum" => |*enum_type| {
+ for (enum_type.fields.slice()) |field_index| {
+ const field = unit.enum_fields.get(field_index);
+ if (field.name == hash) {
+ return .{
+ .enum_value = field_index,
+ };
+ }
+ } else {
+ unreachable;
+ }
+ },
+ .@"error" => |*error_type| {
+ for (error_type.fields.slice()) |field_index| {
+ const field = unit.error_fields.get(field_index);
+ if (field.name == hash) {
+ return .{
+ .error_value = field_index,
+ };
+ }
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
else => |t| @panic(@tagName(t)),
}
}
@@ -4630,6 +4740,11 @@ pub const Builder = struct {
sign_extend,
zero_extend,
error_to_error_union,
+ type_to_error_union,
+ error_union_to_all_error_union,
+ error_union_same_error,
+ error_to_all_errors,
+ error_to_all_errors_error_union,
};
const TypecheckError = error{};
@@ -4693,52 +4808,86 @@ pub const Builder = struct {
else => |t| @panic(@tagName(t)),
}
},
- .integer => |destination_integer| {
- switch (source.*) {
- .integer => |source_integer| {
- if (destination_integer.signedness == source_integer.signedness) {
- if (destination_integer.bit_count == source_integer.bit_count) {
- if (destination_type_index == .usize and source_type_index == .u64) {
- return .success;
- } else if (destination_type_index == .u64 and source_type_index == .usize) {
- return .success;
- } else if (destination_type_index == .ssize and source_type_index == .s64) {
- return .success;
- } else if (destination_type_index == .s64 and source_type_index == .ssize) {
- return .success;
+ .integer => |destination_integer| switch (destination_integer.kind) {
+ .materialized_int => switch (source.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ .materialized_int => {
+ if (destination_integer.signedness == source_integer.signedness) {
+ if (destination_integer.bit_count == source_integer.bit_count) {
+ if (destination_type_index == .usize and source_type_index == .u64) {
+ return .success;
+ } else if (destination_type_index == .u64 and source_type_index == .usize) {
+ return .success;
+ } else if (destination_type_index == .ssize and source_type_index == .s64) {
+ return .success;
+ } else if (destination_type_index == .s64 and source_type_index == .ssize) {
+ return .success;
+ } else {
+ unreachable;
+ }
+ } else if (destination_integer.bit_count > source_integer.bit_count) {
+ return switch (destination_integer.signedness) {
+ .signed => .sign_extend,
+ .unsigned => .zero_extend,
+ };
} else {
unreachable;
}
- } else if (destination_integer.bit_count > source_integer.bit_count) {
- return switch (destination_integer.signedness) {
- .signed => .sign_extend,
- .unsigned => .zero_extend,
- };
+ } else {
+ @panic("Signedness mismatch");
+ }
+ },
+ .comptime_int => {
+ return .materialize_int;
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"error" => switch (source.*) {
+ .integer => |source_integer| switch (source_integer.kind) {
+ .@"error" => {
+ if (destination_type_index == unit.all_errors) {
+ return .error_to_all_errors;
} else {
unreachable;
}
- } else {
- @panic("Signedness mismatch");
- }
- },
- .comptime_int => {
- return .materialize_int;
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
- }
+ },
+ else => |t| @panic(@tagName(t)),
},
- .@"struct" => |destination_struct_index| {
- const destination_struct = unit.structs.get(destination_struct_index);
- if (destination_struct.optional) {
+ .@"struct" => |destination_struct_index| switch (unit.structs.get(destination_struct_index).kind) {
+ .optional => {
if (unit.optionals.get(source_type_index)) |optional_type_index| {
_ = optional_type_index; // autofix
return .optional_wrap;
} else {
unreachable;
}
- } else {
- unreachable;
- }
+ },
+ .error_union => |destination_error_union| {
+ if (destination_error_union.@"error" == source_type_index) {
+ return .error_to_error_union;
+ } else if (destination_error_union.type == source_type_index) {
+ return .type_to_error_union;
+ } else switch (unit.types.get(source_type_index).*) {
+ .integer => |integer| switch (integer.kind) {
+ .@"error" => {
+ if (destination_error_union.@"error" == unit.all_errors) {
+ return .error_to_all_errors_error_union;
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ else => |t| @panic(@tagName(t)),
},
.slice => |destination_slice| {
switch (source.*) {
@@ -4816,33 +4965,15 @@ pub const Builder = struct {
unreachable;
} else {
@panic("Expected array termination");
- // std.debug.panic("Expected {s} array termination, got {s}", .{ @tagName(destination_array.termination), @tagName(source_array.termination) });
}
} else unreachable;
},
else => |t| @panic(@tagName(t)),
}
},
- .error_union => |error_union| {
- if (error_union.@"error" == source_type_index) {
- return .error_to_error_union;
- } else {
- unreachable;
- }
- },
- .bool => {
- switch (source.*) {
- else => |t| @panic(@tagName(t)),
- }
- },
- .comptime_int => {
- switch (source.*) {
- .integer => |integer| {
- _ = integer; // autofix
- @panic("WTF");
- },
- else => |t| @panic(@tagName(t)),
- }
+ .void => switch (source.*) {
+ .noreturn => return .success,
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -5152,61 +5283,154 @@ pub const Builder = struct {
.optional_wrap => {
const optional_type_index = expected_type_index;
switch (unit.types.get(optional_type_index).*) {
- .@"struct" => |struct_index| {
- assert(unit.structs.get(struct_index).optional);
- const optional_undefined = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = optional_type_index,
- };
-
- const insert_value_to_optional = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = optional_undefined,
- .index = 0,
- .new_value = v,
- },
- });
-
- try builder.appendInstruction(unit, context, insert_value_to_optional);
-
- const final_insert = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = .{
- .value = .{
- .runtime = insert_value_to_optional,
- },
- .type = optional_type_index,
- },
- .index = 1,
- // This tells the optional is valid (aka not null)
- .new_value = .{
- .value = .{
- .@"comptime" = .{
- .bool = true,
- },
- },
- .type = .bool,
- },
- },
- });
-
- try builder.appendInstruction(unit, context, final_insert);
-
- return .{
- .value = .{
- .runtime = final_insert,
- },
- .type = expected_type_index,
- };
- },
else => |t| @panic(@tagName(t)),
}
},
.error_to_error_union => {
- unreachable;
+ const error_union_struct_index = unit.types.get(expected_type_index).@"struct";
+ const error_union_struct = unit.structs.get(error_union_struct_index);
+ const error_union = error_union_struct.kind.error_union;
+
+ if (error_union.union_for_error == error_union.abi) {
+ const undef = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = expected_type_index,
+ };
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = undef,
+ .index = 0,
+ .new_value = v,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = expected_type_index,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ const value = V{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = expected_type_index,
+ };
+ return value;
+ } else {
+ const undef = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = error_union.union_for_error,
+ };
+
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = undef,
+ .index = 0,
+ .new_value = v,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = error_union.union_for_error,
+ },
+ .index = 2,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ const support_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = error_union.union_for_error,
+ },
+ });
+ try builder.appendInstruction(unit, context, support_alloca);
+
+ const pointer_type = try unit.getPointerType(context, .{
+ .type = error_union.union_for_error,
+ .termination = .none,
+ .mutability = .@"var",
+ .many = false,
+ .nullable = false,
+ });
+
+ const support_store = try unit.instructions.append(context.my_allocator, .{
+ .store = .{
+ .destination = .{
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
+ },
+ .source = .{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = error_union.union_for_error,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, support_store);
+
+ const support_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = .{
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
+ },
+ .type = expected_type_index,
+ },
+ });
+ try builder.appendInstruction(unit, context, support_load);
+ return .{
+ .value = .{
+ .runtime = support_load,
+ },
+ .type = expected_type_index,
+ };
+ }
},
+ .type_to_error_union => return try builder.resolveTypeToErrorUnion(unit, context, expected_type_index, v),
+ .error_to_all_errors_error_union => unreachable,
+ .error_union_to_all_error_union => unreachable,
+ .error_union_same_error => unreachable,
+ .error_to_all_errors => unreachable,
}
},
.array => |expected_array_descriptor| {
@@ -5256,12 +5480,163 @@ pub const Builder = struct {
// indentation += 1;
// }
-
@panic("identifier not found");
//std.debug.panic("Identifier '{s}' not found in file {s}", .{ identifier, file_path });
}
}
+ fn resolveTypeToErrorUnion(builder: *Builder, unit: *Unit, context: *const Context, error_union_type_index: Type.Index, value: V) !V {
+ const error_union_struct_index = unit.types.get(error_union_type_index).@"struct";
+ const error_union_struct = unit.structs.get(error_union_struct_index);
+ const error_union = error_union_struct.kind.error_union;
+
+ assert(error_union.type != .void);
+ assert(error_union.type != .noreturn);
+
+ if (error_union.union_for_type == error_union.abi) {
+ const undef = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = error_union_type_index,
+ };
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = undef,
+ .index = 0,
+ .new_value = value,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = error_union_type_index,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = false,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ const result = V{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = error_union_type_index,
+ };
+ return result;
+ } else {
+ unreachable;
+ }
+ }
+
+ fn resolveErrorToAllErrorUnion(builder: *Builder, unit: *Unit, context: *const Context, destination_type_index: Type.Index, error_value: V) !V {
+ const error_value_type = unit.types.get(error_value.type);
+ const error_type = error_value_type.integer.kind.@"error";
+ const destination_error_union_type = unit.types.get(destination_type_index);
+ const destination_error_union_struct_index = destination_error_union_type.@"struct";
+ const destination_error_union = unit.structs.get(destination_error_union_struct_index).kind.error_union;
+
+ const error_id = error_type.id;
+ const constant_shifted = @as(u64, error_id) << 32;
+
+ const zero_extend = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .id = .zero_extend,
+ .value = error_value,
+ .type = .u64,
+ },
+ });
+ try builder.appendInstruction(unit, context, zero_extend);
+
+ const or_value = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .left = .{
+ .value = .{
+ .runtime = zero_extend,
+ },
+ .type = .u64,
+ },
+ .right = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = constant_shifted,
+ },
+ },
+ },
+ .type = .u64,
+ },
+ .id = .bit_or,
+ .signedness = .unsigned,
+ },
+ });
+ try builder.appendInstruction(unit, context, or_value);
+
+ if (destination_error_union.union_for_error == destination_error_union.abi) {
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = destination_type_index,
+ },
+ .index = 0,
+ .new_value = .{
+ .value = .{
+ .runtime = or_value,
+ },
+ .type = destination_error_union.@"error",
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = destination_type_index,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ return V{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = destination_type_index,
+ };
+ } else {
+ unreachable;
+ }
+ }
+
fn resolveAssignment(builder: *Builder, unit: *Unit, context: *const Context, node_index: Node.Index) !V {
const node = unit.getNode(node_index);
switch (node.id) {
@@ -5298,33 +5673,36 @@ pub const Builder = struct {
try builder.appendInstruction(unit, context, left_load);
switch (unit.types.get(expected_right_type).*) {
- .integer => |integer| {
- const instruction = try unit.instructions.append(context.my_allocator, .{
- .integer_binary_operation = .{
- .left = .{
- .value = .{
- .runtime = left_load,
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => {
+ const instruction = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .left = .{
+ .value = .{
+ .runtime = left_load,
+ },
+ .type = expected_right_type,
+ },
+ .right = right,
+ .signedness = integer.signedness,
+ .id = switch (node.id) {
+ .add_assign => .add,
+ .sub_assign => .sub,
+ .div_assign => .div,
+ else => |t| @panic(@tagName(t)),
},
- .type = expected_right_type,
},
- .right = right,
- .signedness = integer.signedness,
- .id = switch (node.id) {
- .add_assign => .add,
- .sub_assign => .sub,
- .div_assign => .div,
- else => |t| @panic(@tagName(t)),
- },
- },
- });
- try builder.appendInstruction(unit, context, instruction);
+ });
+ try builder.appendInstruction(unit, context, instruction);
- break :blk V{
- .value = .{
- .runtime = instruction,
- },
- .type = expected_right_type,
- };
+ break :blk V{
+ .value = .{
+ .runtime = instruction,
+ },
+ .type = expected_right_type,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -5379,6 +5757,7 @@ pub const Builder = struct {
.unsigned_integer_type => .unsigned,
else => unreachable,
},
+ .kind = .materialized_int,
});
break :b type_index;
},
@@ -5586,20 +5965,42 @@ pub const Builder = struct {
const err = try builder.resolveType(unit, context, node.left);
const ty = try builder.resolveType(unit, context, node.right);
- const error_union = try unit.types.append(context.my_allocator, .{
- .error_union = .{
- .@"error" = err,
- .type = ty,
- },
+ const error_union = try builder.getErrorUnionType(unit, context, .{
+ .@"error" = err,
+ .type = ty,
});
+
break :blk error_union;
},
.all_errors => blk: {
- const all_error_index = try unit.error_sets.append(context.my_allocator, .{});
- const all_errors = try unit.types.append(context.my_allocator, .{
- .error_set = all_error_index,
- });
- break :blk all_errors;
+ if (unit.all_errors != .null) {
+ break :blk unit.all_errors;
+ } else {
+ const token_debug_info = builder.getTokenDebugInfo(unit, node.token);
+ unit.all_errors = try unit.types.append(context.my_allocator, .{
+ .integer = .{
+ .bit_count = 64,
+ .signedness = .unsigned,
+ .kind = .{
+ .@"error" = .{
+ .scope = .{
+ .scope = .{
+ .file = builder.current_file,
+ .line = token_debug_info.line,
+ .column = token_debug_info.column,
+ .kind = .container,
+ .local = false,
+ .level = builder.current_scope.level + 1,
+ .parent = &unit.scope.scope,
+ },
+ },
+ .id = std.math.maxInt(u32),
+ },
+ },
+ },
+ });
+ break :blk unit.all_errors;
+ }
},
else => |t| @panic(@tagName(t)),
};
@@ -5682,51 +6083,28 @@ pub const Builder = struct {
type: Type.Index,
};
- const backing_type: Type.Index = switch (container_node.right) {
- .null => .null,
- else => |backing_type_node_index| b: {
- switch (builder.current_scope.kind) {
- .file => unreachable,
- else => {
- const backing_type_index = try builder.resolveType(unit, context, backing_type_node_index);
- const backing_type = unit.types.get(backing_type_index);
- switch (backing_type.*) {
- .integer => |integer| {
- switch (integer.bit_count) {
- 8, 16, 32, 64 => {},
- else => @panic("Invalid integer backing type bit count"),
- }
- },
- else => |t| @panic(@tagName(t)),
- }
-
- break :b backing_type_index;
- },
- }
- },
- };
-
const token_debug_info = builder.getTokenDebugInfo(unit, container_node.token);
const data: Data = switch (container_type) {
.@"struct" => b: {
assert(container_node.id == .struct_type);
const struct_index = try unit.structs.append(context.my_allocator, .{
- .scope = .{
- .scope = .{
- .kind = switch (builder.current_scope.kind) {
- .file => .file_container,
- else => .container,
+ .kind = .{
+ .@"struct" = .{
+ .scope = .{
+ .scope = .{
+ .kind = switch (builder.current_scope.kind) {
+ .file => .file_container,
+ else => .container,
+ },
+ .line = token_debug_info.line,
+ .column = token_debug_info.column,
+ .level = builder.current_scope.level + 1,
+ .local = false,
+ .file = builder.current_file,
+ },
},
- .line = token_debug_info.line,
- .column = token_debug_info.column,
- .level = builder.current_scope.level + 1,
- .local = false,
- .file = builder.current_file,
},
},
- .backing_type = backing_type,
- .optional = false,
- .type = .null,
});
const struct_type = unit.structs.get(struct_index);
@@ -5734,14 +6112,13 @@ pub const Builder = struct {
.@"struct" = struct_index,
});
- struct_type.type = type_index;
-
// Save file type
switch (builder.current_scope.kind) {
.file => {
const global_scope = @fieldParentPtr(Debug.Scope.Global, "scope", builder.current_scope);
const file = @fieldParentPtr(Debug.File, "scope", global_scope);
file.type = type_index;
+ try unit.scope_container_map.put_no_clobber(context.my_allocator, &struct_type.kind.@"struct".scope.scope, type_index);
},
.file_container => {},
else => |t| @panic(@tagName(t)),
@@ -5750,31 +6127,100 @@ pub const Builder = struct {
try unit.struct_type_map.put_no_clobber(context.my_allocator, struct_index, type_index);
break :b .{
- .scope = &struct_type.scope,
+ .scope = &struct_type.kind.@"struct".scope,
.type = type_index,
};
},
.@"enum" => b: {
assert(container_node.id == .enum_type);
- const enum_index = try unit.enums.append(context.my_allocator, .{
- .scope = .{ .scope = .{
- .kind = .container,
- .line = token_debug_info.line,
- .column = token_debug_info.column,
- .level = builder.current_scope.level + 1,
- .local = false,
- .file = builder.current_file,
- } },
- .backing_type = backing_type,
+ const integer = switch (container_node.right) {
+ .null => Type.Integer{
+ .bit_count = 0,
+ .signedness = .unsigned,
+ .kind = .comptime_int,
+ },
+ else => e: {
+ const backing_type_index = try builder.resolveType(unit, context, container_node.right);
+ const backing_type = unit.types.get(backing_type_index);
+ break :e switch (backing_type.*) {
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => integer,
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ };
+ },
+ };
+
+ const type_index = try unit.types.append(context.my_allocator, .{
+ .integer = .{
+ .bit_count = integer.bit_count,
+ .signedness = integer.signedness,
+ .kind = .{
+ .@"enum" = .{
+ .scope = .{
+ .scope = .{
+ .kind = .container,
+ .line = token_debug_info.line,
+ .column = token_debug_info.column,
+ .level = builder.current_scope.level + 1,
+ .local = false,
+ .file = builder.current_file,
+ },
+ },
+ },
+ },
+ },
+ });
+ const e_type = unit.types.get(type_index);
+ break :b .{
+ .scope = &e_type.integer.kind.@"enum".scope,
+ .type = type_index,
+ };
+ },
+ .bitfield => b: {
+ assert(container_node.id == .bitfield_type);
+ const integer = switch (container_node.right) {
+ .null => unreachable,
+ else => e: {
+ const backing_type_index = try builder.resolveType(unit, context, container_node.right);
+ const backing_type = unit.types.get(backing_type_index);
+ break :e switch (backing_type.*) {
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => integer,
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ };
+ },
+ };
+ const bitfield_type_index = try unit.types.append(context.my_allocator, .{
+ .integer = .{
+ .bit_count = integer.bit_count,
+ .signedness = integer.signedness,
+ .kind = .{
+ .bitfield = .{
+ .scope = .{
+ .scope = .{
+ .kind = switch (builder.current_scope.kind) {
+ .file => .file_container,
+ else => .container,
+ },
+ .line = token_debug_info.line,
+ .column = token_debug_info.column,
+ .level = builder.current_scope.level + 1,
+ .local = false,
+ .file = builder.current_file,
+ },
+ },
+ },
+ },
+ },
});
- const enum_type = unit.enums.get(enum_index);
- const type_index = try unit.types.append(context.my_allocator, .{
- .@"enum" = enum_index,
- });
break :b .{
- .scope = &enum_type.scope,
- .type = type_index,
+ .type = bitfield_type_index,
+ .scope = &unit.types.get(bitfield_type_index).integer.kind.bitfield.scope,
};
},
};
@@ -5800,10 +6246,6 @@ pub const Builder = struct {
for (container_nodes) |member_index| {
const member = unit.getNode(member_index);
- switch (container_type) {
- .@"struct" => assert(member.id != .enum_field),
- .@"enum" => assert(member.id != .container_field),
- }
const member_type = getContainerMemberType(member.id);
@@ -5929,25 +6371,24 @@ pub const Builder = struct {
if (count.fields > 0) {
const ty = unit.types.get(type_index);
+ const field_count = field_nodes.length;
switch (container_type) {
.@"enum" => {
- const enum_type = unit.enums.get(ty.@"enum");
- const field_count = field_nodes.length;
+ const integer_type = &ty.integer;
+ const enum_type = &integer_type.kind.@"enum";
try enum_type.fields.ensure_capacity(context.my_allocator, field_count);
- if (enum_type.backing_type == .null) {
- const bit_count = @bitSizeOf(@TypeOf(field_nodes.length)) - @clz(field_nodes.length);
-
- enum_type.backing_type = try unit.getIntegerType(context, .{
- .bit_count = bit_count,
- .signedness = .unsigned,
- });
+ if (integer_type.bit_count == 0) {
+ integer_type.bit_count = @bitSizeOf(@TypeOf(field_nodes.length)) - @clz(field_nodes.length);
}
+ assert(integer_type.bit_count > 0);
},
.@"struct" => {
const struct_type = unit.structs.get(ty.@"struct");
- const field_count = field_nodes.length;
- try struct_type.fields.ensure_capacity(context.my_allocator, field_count);
+ try struct_type.kind.@"struct".fields.ensure_capacity(context.my_allocator, field_count);
+ },
+ .bitfield => {
+ try ty.integer.kind.bitfield.fields.ensure_capacity(context.my_allocator, field_count);
},
}
@@ -5959,13 +6400,18 @@ pub const Builder = struct {
switch (container_type) {
.@"enum" => {
assert(field_node.id == .enum_field);
- const enum_type = unit.enums.get(ty.@"enum");
+
+ const integer_type = try unit.getIntegerType(context, .{
+ .bit_count = ty.integer.bit_count,
+ .signedness = ty.integer.signedness,
+ .kind = .materialized_int,
+ });
const enum_value: usize = switch (field_node.left) {
.null => index,
else => b: {
const enum_value = try builder.resolveComptimeValue(unit, context, Type.Expect{
- .type = enum_type.backing_type,
+ .type = integer_type,
}, .{}, field_node.left, null);
assert(enum_value.comptime_int.signedness == .unsigned);
break :b enum_value.comptime_int.value;
@@ -5977,7 +6423,7 @@ pub const Builder = struct {
.value = enum_value,
.parent = type_index,
});
- enum_type.fields.append_with_capacity(enum_field_index);
+ ty.integer.kind.@"enum".fields.append_with_capacity(enum_field_index);
},
.@"struct" => {
assert(field_node.id == .container_field);
@@ -5995,7 +6441,25 @@ pub const Builder = struct {
.type = field_type,
.default_value = field_default_value,
});
- struct_type.fields.append_with_capacity(struct_field);
+ struct_type.kind.@"struct".fields.append_with_capacity(struct_field);
+ },
+ .bitfield => {
+ assert(field_node.id == .container_field);
+ const bitfield = &ty.integer.kind.bitfield;
+ const field_name = unit.getExpectedTokenBytes(field_node.token, .identifier);
+ const field_name_hash = try unit.processIdentifier(context, field_name);
+ const field_type = try builder.resolveType(unit, context, field_node.left);
+ const field_default_value: ?V.Comptime = switch (field_node.right) {
+ .null => null,
+ else => |default_value_node_index| try builder.resolveComptimeValue(unit, context, Type.Expect{ .type = field_type }, .{}, default_value_node_index, null),
+ };
+
+ const struct_field = try unit.struct_fields.append(context.my_allocator, .{
+ .name = field_name_hash,
+ .type = field_type,
+ .default_value = field_default_value,
+ });
+ bitfield.fields.append_with_capacity(struct_field);
},
}
}
@@ -6058,16 +6522,13 @@ pub const Builder = struct {
break :b anon_global;
};
- const return_type = try unit.types.append(context.my_allocator, .{
- .error_union = .{
- .@"error" = try unit.types.append(context.my_allocator, .{
- // This means all errors
- .error_set = try unit.error_sets.append(context.my_allocator, .{}),
- }),
- .type = .void,
- },
+ const error_union = try builder.getErrorUnionType(unit, context, .{
+ .@"error" = unit.all_errors,
+ .type = .void,
});
+ const return_type = error_union;
+
// TODO: make test function prototypes unique
const function_prototype_index = try unit.function_prototypes.append(context.my_allocator, .{
.argument_types = &.{},
@@ -6132,8 +6593,9 @@ pub const Builder = struct {
try builder.buildTrap(unit, context);
},
else => switch (unit.types.get(return_type).*) {
- .error_union => |error_union| {
- if (error_union.type == .void) {
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .error_union => |return_error_union| {
+ if (return_error_union.type == .void) {
const undef = V{
.value = .{ .@"comptime" = .undefined },
.type = return_type,
@@ -6160,12 +6622,13 @@ pub const Builder = struct {
},
.type = return_type,
});
- } else if (error_union.type == .noreturn) {
- unreachable;
- // try builder.buildTrap(unit, context);
- } else {
- unreachable;
- }
+ } else if (return_error_union.type == .noreturn) {
+ unreachable;
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -6385,11 +6848,10 @@ pub const Builder = struct {
}
break :block switch (unit.types.get(left_value.type).*) {
- .integer => |integer| try builder.emitIntegerCompare(unit, context, left_value, right_value, integer, cmp_node_id),
- .bool => try builder.emitIntegerCompare(unit, context, left_value, right_value, .{
- .bit_count = 1,
- .signedness = .unsigned,
- }, cmp_node_id),
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => try builder.emitIntegerCompare(unit, context, left_value, right_value, integer, cmp_node_id),
+ else => |t| @panic(@tagName(t)),
+ },
.pointer => |pointer| b: {
const Pair = struct {
left: V,
@@ -6437,6 +6899,7 @@ pub const Builder = struct {
const compare = try builder.emitIntegerCompare(unit, context, pair.left, pair.right, .{
.bit_count = 64,
.signedness = .unsigned,
+ .kind = .disguised_pointer,
}, cmp_node_id);
break :b compare;
@@ -6445,7 +6908,7 @@ pub const Builder = struct {
};
}
},
- .add, .sub, .mul, .div, .mod, .bit_and, .bit_or, .bit_xor, .shift_left, .shift_right => block: {
+ .add, .sub, .mul, .div, .mod, .bit_and, .bit_or, .bit_xor, .shift_left, .shift_right, .bool_and, .bool_or => block: {
const left_node_index = node.left;
const right_node_index = node.right;
const binary_operation_id: ArithmeticLogicIntegerInstruction = switch (node.id) {
@@ -6459,6 +6922,7 @@ pub const Builder = struct {
.bit_or => .bit_or,
.shift_left => .shift_left,
.shift_right => .shift_right,
+ .bool_and => .bit_and,
else => |t| @panic(@tagName(t)),
};
@@ -6466,13 +6930,15 @@ pub const Builder = struct {
var left_value = try builder.resolveRuntimeValue(unit, context, left_expect_type, left_node_index, .right);
switch (unit.types.get(left_value.type).*) {
- .integer => {},
- .comptime_int => {},
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int, .comptime_int, .bool => {},
+ else => |t| @panic(@tagName(t)),
+ },
else => |t| @panic(@tagName(t)),
}
const right_expect_type: Type.Expect = switch (type_expect) {
- .none => switch (unit.types.get(left_value.type).*) {
+ .none => switch (left_value.type) {
.comptime_int => type_expect,
else => Type.Expect{
.type = left_value.type,
@@ -6607,56 +7073,47 @@ pub const Builder = struct {
};
const instruction = switch (unit.types.get(left_value.type).*) {
- .integer => |integer| b: {
- const id: Instruction.IntegerBinaryOperation.Id = switch (binary_operation_id) {
- .add => .add,
- .div => .div,
- .mod => .mod,
- .mul => .mul,
- .sub => .sub,
- .bit_and => .bit_and,
- .bit_or => .bit_or,
- .bit_xor => .bit_xor,
- .shift_left => .shift_left,
- .shift_right => .shift_right,
- };
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => b: {
+ const id: Instruction.IntegerBinaryOperation.Id = switch (binary_operation_id) {
+ .add => .add,
+ .div => .div,
+ .mod => .mod,
+ .mul => .mul,
+ .sub => .sub,
+ .bit_and => .bit_and,
+ .bit_or => .bit_or,
+ .bit_xor => .bit_xor,
+ .shift_left => .shift_left,
+ .shift_right => .shift_right,
+ };
- const i = try unit.instructions.append(context.my_allocator, .{
- .integer_binary_operation = .{
- .left = left_value,
- .right = right_value,
- .id = id,
- .signedness = integer.signedness,
- },
- });
- break :b i;
- },
- .comptime_int => {
- const left = left_value.value.@"comptime".comptime_int;
- const right = right_value.value.@"comptime".comptime_int;
- switch (binary_operation_id) {
- .add => {
- assert(left.signedness == right.signedness);
- assert(left.signedness == .unsigned);
- if (true) unreachable;
- const value = left.value + right.value;
- break :block switch (type_expect) {
- .none => V{
- .value = .{
- .@"comptime" = .{
- .comptime_int = .{
- .value = value,
- .signedness = left.signedness,
- },
- },
- },
- .type = .comptime_int,
- },
- else => |t| @panic(@tagName(t)),
- };
- },
- else => |t| @panic(@tagName(t)),
- }
+ const i = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .left = left_value,
+ .right = right_value,
+ .id = id,
+ .signedness = integer.signedness,
+ },
+ });
+ break :b i;
+ },
+ .bool => b: {
+ const id: Instruction.IntegerBinaryOperation.Id = switch (binary_operation_id) {
+ .bit_and => .bit_and,
+ else => |t| @panic(@tagName(t)),
+ };
+ const i = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .left = left_value,
+ .right = right_value,
+ .id = id,
+ .signedness = .unsigned,
+ },
+ });
+ break :b i;
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
};
@@ -6677,32 +7134,20 @@ pub const Builder = struct {
.call => try builder.resolveCall(unit, context, node_index),
.field_access => try builder.resolveFieldAccess(unit, context, type_expect, node_index, side),
.number_literal => switch (std.zig.parseNumberLiteral(unit.getExpectedTokenBytes(node.token, .number_literal))) {
- .int => |integer| switch (type_expect) {
+ .int => |integer_value| switch (type_expect) {
.type => |type_index| switch (unit.types.get(type_index).*) {
- .integer => V{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = integer,
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => V{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = integer_value,
+ },
},
},
+ .type = type_index,
},
- .type = type_index,
- },
- .comptime_int => V{
- .value = .{
- .@"comptime" = .{
- .comptime_int = .{
- .value = integer,
- .signedness = .unsigned,
- },
- },
- },
- .type = type_index,
- },
- .error_union => |error_union| {
- _ = error_union; // autofix
- unreachable;
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -6710,7 +7155,7 @@ pub const Builder = struct {
.value = .{
.@"comptime" = .{
.comptime_int = .{
- .value = integer,
+ .value = integer_value,
.signedness = .unsigned,
},
},
@@ -6762,30 +7207,32 @@ pub const Builder = struct {
}
unreachable;
},
- .enum_literal => block: {
+ .dot_literal => block: {
switch (type_expect) {
.type => |type_index| {
const expected_type = unit.types.get(type_index);
switch (expected_type.*) {
- .@"enum" => |enum_index| {
- const enum_type = unit.enums.get(enum_index);
- const identifier = unit.getExpectedTokenBytes(Token.addInt(node.token, 1), .identifier);
- const hash = try unit.processIdentifier(context, identifier);
- for (enum_type.fields.slice()) |field_index| {
- const field = unit.enum_fields.get(field_index);
- if (field.name == hash) {
- break :block V{
- .value = .{
- .@"comptime" = .{
- .enum_value = field_index,
+ .integer => |*integer| switch (integer.kind) {
+ .@"enum" => |*enum_type| {
+ const identifier = unit.getExpectedTokenBytes(Token.addInt(node.token, 1), .identifier);
+ const hash = try unit.processIdentifier(context, identifier);
+ for (enum_type.fields.slice()) |field_index| {
+ const field = unit.enum_fields.get(field_index);
+ if (field.name == hash) {
+ break :block V{
+ .value = .{
+ .@"comptime" = .{
+ .enum_value = field_index,
+ },
},
- },
- .type = type_index,
- };
+ .type = type_index,
+ };
+ }
+ } else {
+ unreachable;
}
- } else {
- unreachable;
- }
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -6795,98 +7242,6 @@ pub const Builder = struct {
},
.null_literal => switch (type_expect) {
.type => |type_index| switch (unit.types.get(type_index).*) {
- .@"struct" => |struct_index| blk: {
- const struct_type = unit.structs.get(struct_index);
-
- if (struct_type.optional) {
- const optional_undefined = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = type_index,
- };
-
- const final_insert = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = optional_undefined,
- .index = 1,
- // This tells the optional is valid (aka not null)
- .new_value = .{
- .value = .{
- .@"comptime" = .{
- .bool = false,
- },
- },
- .type = .bool,
- },
- },
- });
-
- try builder.appendInstruction(unit, context, final_insert);
-
- break :blk .{
- .value = .{
- .runtime = final_insert,
- },
- .type = type_index,
- };
- } else {
- unreachable;
- }
- },
- .slice => |slice| blk: {
- const optional_undefined = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = type_index,
- };
-
- const slice_builder = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = optional_undefined,
- .index = 0,
- .new_value = .{
- .value = .{
- .@"comptime" = .null_pointer,
- },
- .type = slice.child_pointer_type,
- },
- },
- });
-
- try builder.appendInstruction(unit, context, slice_builder);
-
- const final_slice = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = .{
- .value = .{
- .runtime = slice_builder,
- },
- .type = type_index,
- },
- .index = 1,
- .new_value = .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = 0,
- },
- },
- },
- .type = .usize,
- },
- },
- });
- try builder.appendInstruction(unit, context, final_slice);
-
- break :blk .{
- .value = .{
- .runtime = final_slice,
- },
- .type = type_index,
- };
- },
.pointer => |pointer| .{
.value = .{
.@"comptime" = .null_pointer,
@@ -6902,7 +7257,7 @@ pub const Builder = struct {
},
else => |t| @panic(@tagName(t)),
},
- .slice => blk: {
+ .slice => block: {
const expression_to_slice = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .left);
const range_node = unit.getNode(node.right);
@@ -7056,8 +7411,8 @@ pub const Builder = struct {
}
};
- switch (unit.types.get(expression_to_slice.type).*) {
- .slice => |slice| {
+ const slice_value: V = switch (unit.types.get(expression_to_slice.type).*) {
+ .slice => |slice| blk: {
const extract_value = try unit.instructions.append(context.my_allocator, .{
.extract_value = .{
.expression = expression_to_slice,
@@ -7119,7 +7474,7 @@ pub const Builder = struct {
};
},
.pointer => |pointer| switch (pointer.many) {
- true => {
+ true => blk: {
const pointer_gep = try unit.instructions.append(context.my_allocator, .{
.get_element_pointer = .{
.pointer = expression_to_slice.value.runtime,
@@ -7137,16 +7492,22 @@ pub const Builder = struct {
.many = true,
.nullable = false,
});
+
+ const slice_type = try unit.getSliceType(context, .{
+ .child_type = pointer.type,
+ .child_pointer_type = pointer_type,
+ .mutability = pointer.mutability,
+ .termination = pointer.termination,
+ .nullable = false,
+ });
+
const slice_builder = try unit.instructions.append(context.my_allocator, .{
.insert_value = .{
.expression = V{
.value = .{
.@"comptime" = .undefined,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
},
.index = 0,
.new_value = .{
@@ -7165,7 +7526,7 @@ pub const Builder = struct {
.value = .{
.runtime = slice_builder,
},
- .type = expression_to_slice.type,
+ .type = slice_type,
},
.index = 1,
.new_value = len_expression,
@@ -7177,14 +7538,12 @@ pub const Builder = struct {
.value = .{
.runtime = final_slice,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
};
},
false => switch (unit.types.get(pointer.type).*) {
- .array => |array| {
+ .array => |array| blk: {
+ assert(!pointer.nullable);
const pointer_gep = try unit.instructions.append(context.my_allocator, .{
.get_element_pointer = .{
.pointer = expression_to_slice.value.runtime,
@@ -7208,7 +7567,7 @@ pub const Builder = struct {
.child_pointer_type = pointer_type,
.termination = array.termination,
.mutability = pointer.mutability,
- .nullable = false,
+ .nullable = pointer.nullable,
});
const slice_builder = try unit.instructions.append(context.my_allocator, .{
@@ -7217,11 +7576,7 @@ pub const Builder = struct {
.value = .{
.@"comptime" = .undefined,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
},
.index = 0,
.new_value = .{
@@ -7240,7 +7595,7 @@ pub const Builder = struct {
.value = .{
.runtime = slice_builder,
},
- .type = expression_to_slice.type,
+ .type = slice_type,
},
.index = 1,
.new_value = len_expression,
@@ -7252,15 +7607,11 @@ pub const Builder = struct {
.value = .{
.runtime = final_slice,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
};
},
.pointer => |child_pointer| switch (child_pointer.many) {
- true => {
+ true => blk: {
assert(!child_pointer.nullable);
const load = try unit.instructions.append(context.my_allocator, .{
.load = .{
@@ -7302,11 +7653,7 @@ pub const Builder = struct {
.value = .{
.@"comptime" = .undefined,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
},
.index = 0,
.new_value = .{
@@ -7325,7 +7672,7 @@ pub const Builder = struct {
.value = .{
.runtime = slice_builder,
},
- .type = expression_to_slice.type,
+ .type = slice_type,
},
.index = 1,
.new_value = len_expression,
@@ -7337,15 +7684,11 @@ pub const Builder = struct {
.value = .{
.runtime = final_slice,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
};
},
false => switch (unit.types.get(child_pointer.type).*) {
- .array => |array| {
+ .array => |array| blk: {
const load = try unit.instructions.append(context.my_allocator, .{
.load = .{
.value = expression_to_slice,
@@ -7386,11 +7729,7 @@ pub const Builder = struct {
.value = .{
.@"comptime" = .undefined,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
},
.index = 0,
.new_value = .{
@@ -7421,17 +7760,13 @@ pub const Builder = struct {
.value = .{
.runtime = final_slice,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => slice_type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
};
},
else => |t| @panic(@tagName(t)),
},
},
- .slice => |slice| {
+ .slice => |slice| blk: {
const load = try unit.instructions.append(context.my_allocator, .{
.load = .{
.value = expression_to_slice,
@@ -7463,17 +7798,15 @@ pub const Builder = struct {
});
try builder.appendInstruction(unit, context, pointer_gep);
+ const slice_type = pointer.type;
+
const slice_builder = try unit.instructions.append(context.my_allocator, .{
.insert_value = .{
.expression = V{
.value = .{
.@"comptime" = .undefined,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => pointer.type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
},
.index = 0,
.new_value = .{
@@ -7492,7 +7825,7 @@ pub const Builder = struct {
.value = .{
.runtime = slice_builder,
},
- .type = pointer.type,
+ .type = slice_type,
},
.index = 1,
.new_value = len_expression,
@@ -7504,18 +7837,41 @@ pub const Builder = struct {
.value = .{
.runtime = final_slice,
},
- .type = switch (type_expect) {
- .type => |type_index| type_index,
- .none => pointer.type,
- else => |t| @panic(@tagName(t)),
- },
+ .type = slice_type,
};
},
else => |t| @panic(@tagName(t)),
},
},
else => |t| @panic(@tagName(t)),
- }
+ };
+
+ break :block switch (type_expect) {
+ .none => slice_value,
+ .type => |type_index| switch (try builder.typecheck(unit, context, type_index, slice_value.type)) {
+ .success => slice_value,
+ .type_to_error_union => try builder.resolveTypeToErrorUnion(unit, context, type_index, slice_value),
+ .slice_to_nullable => {
+ const cast = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .id = .slice_to_nullable,
+ .value = slice_value,
+ .type = type_index,
+ },
+ });
+
+ try builder.appendInstruction(unit, context, cast);
+ return .{
+ .value = .{
+ .runtime = cast,
+ },
+ .type = type_index,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ };
},
.keyword_false, .keyword_true => .{
.value = .{
@@ -7897,10 +8253,13 @@ pub const Builder = struct {
break :blk v;
},
},
- .integer => {
- const v = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .left);
- _ = v;
- unreachable;
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => {
+ const v = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .left);
+ _ = v;
+ unreachable;
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -8098,41 +8457,44 @@ pub const Builder = struct {
.type = gep_type,
};
},
- .integer => b: {
- assert(child_pointer.many);
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => b: {
+ assert(child_pointer.many);
- const load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = array_like_expression,
- .type = pointer.type,
- },
- });
- try builder.appendInstruction(unit, context, load);
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = array_like_expression,
+ .type = pointer.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, load);
- const gep = try unit.instructions.append(context.my_allocator, .{
- .get_element_pointer = .{
- .pointer = load,
- .base_type = child_pointer.type,
- .is_struct = false,
- .index = index,
- },
- });
- try builder.appendInstruction(unit, context, gep);
+ const gep = try unit.instructions.append(context.my_allocator, .{
+ .get_element_pointer = .{
+ .pointer = load,
+ .base_type = child_pointer.type,
+ .is_struct = false,
+ .index = index,
+ },
+ });
+ try builder.appendInstruction(unit, context, gep);
- const gep_type = try unit.getPointerType(context, .{
- .type = child_pointer.type,
- .termination = .none,
- .mutability = pointer.mutability,
- .many = false,
- .nullable = false,
- });
+ const gep_type = try unit.getPointerType(context, .{
+ .type = child_pointer.type,
+ .termination = .none,
+ .mutability = pointer.mutability,
+ .many = false,
+ .nullable = false,
+ });
- break :b .{
- .value = .{
- .runtime = gep,
- },
- .type = gep_type,
- };
+ break :b .{
+ .value = .{
+ .runtime = gep,
+ },
+ .type = gep_type,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -8234,31 +8596,45 @@ pub const Builder = struct {
.negation => block: {
assert(node.left != .null);
assert(node.right == .null);
- const value = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .right);
+ const value = try builder.resolveRuntimeValue(unit, context, type_expect, node.left, .right);
+
switch (value.value) {
.@"comptime" => |ct| switch (ct) {
+ .constant_int => |constant_int| switch (type_expect) {
+ .type => |type_index| {
+ assert(type_index == value.type);
+ const expected_type = unit.types.get(type_index);
+ switch (expected_type.*) {
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => {
+ assert(integer.signedness == .signed);
+ var v: i64 = @intCast(constant_int.value);
+ v = -v;
+ v = 0 - v;
+
+ break :block .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = @bitCast(v),
+ },
+ },
+ },
+ .type = type_index,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
.comptime_int => |ct_int| switch (type_expect) {
.type => |type_index| switch (unit.types.get(type_index).*) {
- .integer => |integer| {
- assert(integer.signedness == .signed);
-
- var v: i64 = @bitCast(ct_int.value);
- if (ct_int.signedness == .signed) {
- v = -v;
- }
-
- v = 0 - v;
-
- break :block .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = @bitCast(v),
- },
- },
- },
- .type = type_index,
- };
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => assert(integer.signedness == .signed),
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -8282,230 +8658,712 @@ pub const Builder = struct {
},
else => |t| @panic(@tagName(t)),
},
+ .runtime => {
+ const sub = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .id = .sub,
+ .left = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = 0,
+ },
+ },
+ },
+ .type = value.type,
+ },
+ .right = value,
+ .signedness = switch (unit.types.get(value.type).*) {
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => integer.signedness,
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, sub);
+ break :block .{
+ .value = .{
+ .runtime = sub,
+ },
+ .type = value.type,
+ };
+ },
else => |t| @panic(@tagName(t)),
}
},
.@"return" => block: {
try builder.emitReturn(unit, context, node_index);
// TODO: warning
- break :block undefined;
+ break :block V{
+ .value = .{
+ .@"comptime" = .void,
+ },
+ .type = .void,
+ };
},
+ .@"switch" => try builder.resolveSwitch(unit, context, type_expect, node_index, side),
+ .catch_expression => try builder.resolveCatchExpression(unit, context, type_expect, node_index, side),
+ .@"unreachable" => block: {
+ try builder.buildTrap(unit, context);
+ break :block .{
+ .value = .{
+ .@"comptime" = .@"unreachable",
+ },
+ .type = .noreturn,
+ };
+ },
+ .try_expression => try builder.resolveTryExpression(unit, context, type_expect, node_index, side),
else => |t| @panic(@tagName(t)),
};
return v;
}
+ fn resolveTryExpression(builder: *Builder, unit: *Unit, context: *const Context, type_expect: Type.Expect, node_index: Node.Index, side: Side) !V {
+ _ = side; // autofix
+ const node = unit.getNode(node_index);
+ assert(node.left != .null);
+ assert(node.right == .null);
+ const value = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .right);
+
+ const function_type = unit.function_definitions.get(builder.current_function).type;
+ const function_prototype_index = unit.types.get(function_type).function;
+ const function_prototype = unit.function_prototypes.get(function_prototype_index);
+ const return_type_index = function_prototype.return_type;
+ const return_type = unit.types.get(return_type_index);
+
+ switch (unit.types.get(value.type).*) {
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .error_union => |error_union| {
+ switch (type_expect) {
+ .none => {},
+ .type => |type_index| {
+ switch (try builder.typecheck(unit, context, type_index, error_union.type)) {
+ .success => {},
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+
+ const is_error = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = value,
+ .index = 1,
+ },
+ });
+ try builder.appendInstruction(unit, context, is_error);
+ const error_block = try builder.newBasicBlock(unit, context);
+ const clean_block = try builder.newBasicBlock(unit, context);
+
+ try builder.branch(unit, context, is_error, error_block, clean_block);
+
+ builder.current_basic_block = error_block;
+
+ const final_error_union = if (return_type_index == value.type) value else final: {
+ switch (return_type.*) {
+ .@"struct" => |return_struct_index| switch (unit.structs.get(return_struct_index).kind) {
+ .error_union => |return_error_union| {
+ switch (try builder.typecheck(unit, context, return_error_union.@"error", error_union.@"error")) {
+ .success => {
+ const error_value = if (error_union.union_for_error == error_union.abi) {
+ unreachable;
+ } else err: {
+ const try_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = value.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, try_alloca);
+
+ const try_store = try unit.instructions.append(context.my_allocator, .{
+ .store = .{
+ .destination = .{
+ .value = .{
+ .runtime = try_alloca,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = value.type,
+ .termination = .none,
+ .mutability = .@"var",
+ .many = false,
+ .nullable = false,
+ }),
+ },
+ .source = value,
+ },
+ });
+ try builder.appendInstruction(unit, context, try_store);
+
+ const union_for_error_gep = try unit.instructions.append(context.my_allocator, .{
+ .get_element_pointer = .{
+ .pointer = try_alloca,
+ .base_type = error_union.union_for_error,
+ .is_struct = true,
+ .index = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = 0,
+ },
+ },
+ },
+ .type = .u32,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, union_for_error_gep);
+
+ const error_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = .{
+ .value = .{
+ .runtime = union_for_error_gep,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = error_union.@"error",
+ .termination = .none,
+ .mutability = .@"const",
+ .many = false,
+ .nullable = false,
+ }),
+ },
+ .type = error_union.@"error",
+ },
+ });
+ try builder.appendInstruction(unit, context, error_load);
+ break :err V{
+ .value = .{
+ .runtime = error_load,
+ },
+ .type = error_union.@"error",
+ };
+ };
+
+ if (return_error_union.union_for_error == return_error_union.abi) {
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = return_type_index,
+ },
+ .index = 0,
+ .new_value = error_value,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = return_type_index,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ break :final V{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = return_type_index,
+ };
+ } else {
+ const v = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = error_union.union_for_error,
+ };
+
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = v,
+ .index = 0,
+ .new_value = error_value,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = error_union.union_for_error,
+ },
+ .index = 2,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ const support_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = error_union.union_for_error,
+ },
+ });
+ try builder.appendInstruction(unit, context, support_alloca);
+
+ const pointer_type = try unit.getPointerType(context, .{
+ .type = error_union.union_for_error,
+ .termination = .none,
+ .mutability = .@"var",
+ .many = false,
+ .nullable = false,
+ });
+
+ const support_store = try unit.instructions.append(context.my_allocator, .{
+ .store = .{
+ .destination = .{
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
+ },
+ .source = .{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = error_union.union_for_error,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, support_store);
+
+ const support_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = .{
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
+ },
+ .type = return_type_index,
+ },
+ });
+ try builder.appendInstruction(unit, context, support_load);
+
+ break :final V{
+ .value = .{
+ .runtime = support_load,
+ },
+ .type = return_type_index,
+ };
+ }
+ },
+ .error_to_all_errors => {
+ // Prepare error composed id
+ const error_type = unit.types.get(error_union.@"error").integer.kind.@"error";
+ const error_id = error_type.id;
+ const constant_shifted = @as(u64, error_id) << 32;
+ _ = constant_shifted; // autofix
+
+ const error_value = if (error_union.union_for_error == error_union.abi) b: {
+ const get_error = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = value,
+ .index = 0,
+ },
+ });
+ try builder.appendInstruction(unit, context, get_error);
+ break :b V{
+ .value = .{
+ .runtime = get_error,
+ },
+ .type = error_union.@"error",
+ };
+ } else err: {
+ const try_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = value.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, try_alloca);
+
+ const try_store = try unit.instructions.append(context.my_allocator, .{
+ .store = .{
+ .destination = .{
+ .value = .{
+ .runtime = try_alloca,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = value.type,
+ .termination = .none,
+ .mutability = .@"var",
+ .many = false,
+ .nullable = false,
+ }),
+ },
+ .source = value,
+ },
+ });
+ try builder.appendInstruction(unit, context, try_store);
+
+ const union_for_error_gep = try unit.instructions.append(context.my_allocator, .{
+ .get_element_pointer = .{
+ .pointer = try_alloca,
+ .base_type = error_union.union_for_error,
+ .is_struct = true,
+ .index = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = 0,
+ },
+ },
+ },
+ .type = .u32,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, union_for_error_gep);
+
+ const error_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = .{
+ .value = .{
+ .runtime = union_for_error_gep,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = error_union.@"error",
+ .termination = .none,
+ .mutability = .@"const",
+ .many = false,
+ .nullable = false,
+ }),
+ },
+ .type = error_union.@"error",
+ },
+ });
+ try builder.appendInstruction(unit, context, error_load);
+ break :err V{
+ .value = .{
+ .runtime = error_load,
+ },
+ .type = error_union.@"error",
+ };
+ };
+
+ break :final try builder.resolveErrorToAllErrorUnion(unit, context, return_type_index, error_value);
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ };
+
+ if (builder.return_block != .null) {
+ assert(builder.return_phi != .null);
+ const phi = &unit.instructions.get(builder.return_phi).phi;
+ try phi.addIncoming(context, final_error_union, builder.current_basic_block);
+ } else if (builder.return_phi != .null) {
+ unreachable;
+ } else {
+ assert(builder.return_phi == .null);
+ assert(builder.return_block == .null);
+ const phi_index = try unit.instructions.append(context.my_allocator, .{
+ .phi = .{
+ .type = return_type_index,
+ },
+ });
+ const phi = &unit.instructions.get(phi_index).phi;
+ const phi_block = try builder.newBasicBlock(unit, context);
+ try phi.addIncoming(context, final_error_union, builder.current_basic_block);
+
+ const old_block = builder.current_basic_block;
+ builder.current_basic_block = phi_block;
+
+ try builder.appendInstruction(unit, context, phi_index);
+ try builder.buildRet(unit, context, .{
+ .value = .{
+ .runtime = phi_index,
+ },
+ .type = return_type_index,
+ });
+
+ builder.current_basic_block = old_block;
+
+ builder.return_phi = phi_index;
+ builder.return_block = phi_block;
+ }
+
+ assert(builder.return_block != .null);
+ try builder.jump(unit, context, builder.return_block);
+
+ builder.current_basic_block = clean_block;
+
+ const result = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = value,
+ .index = 0,
+ },
+ });
+ try builder.appendInstruction(unit, context, result);
+
+ const v = V{
+ .value = .{
+ .runtime = result,
+ },
+ .type = error_union.type,
+ };
+
+ return v;
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ }
+
fn resolveContainerLiteral(builder: *Builder, unit: *Unit, context: *const Context, nodes: []const Node.Index, type_index: Type.Index) !V {
const container_type = unit.types.get(type_index);
- switch (container_type.*) {
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- const fields = struct_type.fields.slice();
- var list = try UnpinnedArray(V).initialize_with_capacity(context.my_allocator, @intCast(fields.len));
- var is_comptime = true;
+ const fields = switch (container_type.*) {
+ .integer => |*integer| switch (integer.kind) {
+ .bitfield => |*bitfield| bitfield.fields.slice(),
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| struct_type.fields.slice(),
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ };
- for (fields) |field_index| {
- const field = unit.struct_fields.get(field_index);
+ var list = try UnpinnedArray(V).initialize_with_capacity(context.my_allocator, @intCast(fields.len));
+ var is_comptime = true;
- for (nodes) |initialization_node_index| {
- const initialization_node = unit.getNode(initialization_node_index);
- assert(initialization_node.id == .container_field_initialization);
- assert(initialization_node.left != .null);
- assert(initialization_node.right == .null);
- const field_name = unit.getExpectedTokenBytes(Token.addInt(initialization_node.token, 1), .identifier);
- const field_name_hash = try unit.processIdentifier(context, field_name);
- if (field_name_hash == field.name) {
- const expected_type = field.type;
- const field_initialization = try builder.resolveRuntimeValue(unit, context, Type.Expect{ .type = expected_type }, initialization_node.left, .right);
- is_comptime = is_comptime and field_initialization.value == .@"comptime";
- list.append_with_capacity(field_initialization);
- break;
- }
- } else if (field.default_value) |default_value| {
- list.append_with_capacity(.{
- .value = .{
- .@"comptime" = default_value,
- },
- .type = field.type,
- });
- } else {
- @panic("Missing field");
- }
+ for (fields) |field_index| {
+ const field = unit.struct_fields.get(field_index);
+
+ for (nodes) |initialization_node_index| {
+ const initialization_node = unit.getNode(initialization_node_index);
+ assert(initialization_node.id == .container_field_initialization);
+ assert(initialization_node.left != .null);
+ assert(initialization_node.right == .null);
+ const field_name = unit.getExpectedTokenBytes(Token.addInt(initialization_node.token, 1), .identifier);
+ const field_name_hash = try unit.processIdentifier(context, field_name);
+ if (field_name_hash == field.name) {
+ const expected_type = field.type;
+ const field_initialization = try builder.resolveRuntimeValue(unit, context, Type.Expect{ .type = expected_type }, initialization_node.left, .right);
+ is_comptime = is_comptime and field_initialization.value == .@"comptime";
+ list.append_with_capacity(field_initialization);
+ break;
}
-
- switch (struct_type.backing_type) {
- .null => {
- if (is_comptime) {
- var comptime_list = try UnpinnedArray(V.Comptime).initialize_with_capacity(context.my_allocator, @intCast(fields.len));
- for (list.slice()) |item| {
- comptime_list.append_with_capacity(item.value.@"comptime");
- }
-
- return .{
- .value = .{
- .@"comptime" = .{
- .constant_struct = try unit.constant_structs.append(context.my_allocator, .{
- .fields = comptime_list.slice(),
- .type = type_index,
- }),
- },
- },
- .type = type_index,
- };
- } else {
- var struct_initialization = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = type_index,
- };
-
- for (list.slice(), 0..) |field, index| {
- const struct_initialization_instruction = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = struct_initialization,
- .index = @intCast(index),
- .new_value = field,
- },
- });
-
- try builder.appendInstruction(unit, context, struct_initialization_instruction);
-
- struct_initialization.value = .{
- .runtime = struct_initialization_instruction,
- };
- }
-
- return struct_initialization;
- }
+ } else if (field.default_value) |default_value| {
+ list.append_with_capacity(.{
+ .value = .{
+ .@"comptime" = default_value,
},
- else => {
- const backing_integer_type = unit.types.get(struct_type.backing_type).integer;
- assert(backing_integer_type.signedness == .unsigned);
- if (is_comptime) {
- var bit_offset: u32 = 0;
- var value: u64 = 0;
- for (list.slice()) |field| {
- const field_type = unit.types.get(field.type);
- const bit_size = field_type.getBitSize(unit);
- const field_value: u64 = switch (field.value.@"comptime") {
- .constant_int => |constant_int| constant_int.value,
- .bool => |boolean| @intFromBool(boolean),
- .comptime_int => |ct_int| switch (ct_int.signedness) {
- .unsigned => ct_int.value,
- .signed => unreachable,
- },
- else => |t| @panic(@tagName(t)),
- };
- const value_with_offset = field_value << @as(u6, @intCast(bit_offset));
- value |= value_with_offset;
- bit_offset += bit_size;
- }
+ .type = field.type,
+ });
+ } else {
+ @panic("Missing field");
+ }
+ }
- return .{
- .value = .{
- .@"comptime" = .{
- .constant_backed_struct = value,
- },
+ switch (container_type.*) {
+ .integer => |integer| switch (integer.kind) {
+ .bitfield => {
+ assert(integer.signedness == .unsigned);
+ if (is_comptime) {
+ var bit_offset: u32 = 0;
+ var value: u64 = 0;
+ for (list.slice()) |field| {
+ const field_type = unit.types.get(field.type);
+ const bit_size = field_type.getBitSize(unit);
+ const field_value: u64 = switch (field.value.@"comptime") {
+ .constant_int => |constant_int| constant_int.value,
+ .bool => |boolean| @intFromBool(boolean),
+ .comptime_int => |ct_int| switch (ct_int.signedness) {
+ .unsigned => ct_int.value,
+ .signed => unreachable,
},
+ else => |t| @panic(@tagName(t)),
+ };
+ const value_with_offset = field_value << @as(u6, @intCast(bit_offset));
+ value |= value_with_offset;
+ bit_offset += bit_size;
+ }
+
+ return .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_bitfield = value,
+ },
+ },
+ .type = type_index,
+ };
+ } else {
+ const zero_extend = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .id = .zero_extend,
+ .value = list.pointer[0],
.type = type_index,
- };
- } else {
- const zero_extend = try unit.instructions.append(context.my_allocator, .{
- .cast = .{
- .id = .zero_extend,
- .value = list.pointer[0],
- .type = struct_type.backing_type,
+ },
+ });
+ try builder.appendInstruction(unit, context, zero_extend);
+ var value = V{
+ .value = .{
+ .runtime = zero_extend,
+ },
+ .type = type_index,
+ };
+
+ const first_field_type = unit.types.get(list.pointer[0].type);
+ var bit_offset = first_field_type.getBitSize(unit);
+
+ for (list.slice()[1..]) |field| {
+ const field_type = unit.types.get(field.type);
+ const field_bit_size = field_type.getBitSize(unit);
+ defer bit_offset += field_bit_size;
+
+ switch (field.value) {
+ .@"comptime" => |ct| {
+ _ = ct; // autofix
+ unreachable;
},
- });
- try builder.appendInstruction(unit, context, zero_extend);
- var value = V{
- .value = .{
- .runtime = zero_extend,
- },
- .type = struct_type.backing_type,
- };
+ .runtime => {
+ const field_zero_extend = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .id = .zero_extend,
+ .value = field,
+ .type = type_index,
+ },
+ });
+ try builder.appendInstruction(unit, context, field_zero_extend);
- const first_field_type = unit.types.get(list.pointer[0].type);
- var bit_offset = first_field_type.getBitSize(unit);
-
- for (list.slice()[1..]) |field| {
- const field_type = unit.types.get(field.type);
- const field_bit_size = field_type.getBitSize(unit);
- defer bit_offset += field_bit_size;
-
- switch (field.value) {
- .@"comptime" => |ct| {
- _ = ct; // autofix
- unreachable;
- },
- .runtime => {
- const field_zero_extend = try unit.instructions.append(context.my_allocator, .{
- .cast = .{
- .id = .zero_extend,
- .value = field,
- .type = struct_type.backing_type,
- },
- });
- try builder.appendInstruction(unit, context, field_zero_extend);
-
- const shift_left = try unit.instructions.append(context.my_allocator, .{
- .integer_binary_operation = .{
- .id = .shift_left,
- .left = .{
- .value = .{
- .runtime = field_zero_extend,
- },
- .type = struct_type.backing_type,
+ const shift_left = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .id = .shift_left,
+ .left = .{
+ .value = .{
+ .runtime = field_zero_extend,
},
- .right = .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = bit_offset,
- },
+ .type = type_index,
+ },
+ .right = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = bit_offset,
},
},
- .type = struct_type.backing_type,
},
- .signedness = backing_integer_type.signedness,
+ .type = type_index,
},
- });
+ .signedness = integer.signedness,
+ },
+ });
- try builder.appendInstruction(unit, context, shift_left);
+ try builder.appendInstruction(unit, context, shift_left);
- const merge_or = try unit.instructions.append(context.my_allocator, .{
- .integer_binary_operation = .{
- .id = .bit_or,
- .signedness = backing_integer_type.signedness,
- .left = .{
- .value = .{
- .runtime = shift_left,
- },
- .type = struct_type.backing_type,
+ const merge_or = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .id = .bit_or,
+ .signedness = integer.signedness,
+ .left = .{
+ .value = .{
+ .runtime = shift_left,
},
- .right = value,
+ .type = type_index,
},
- });
- try builder.appendInstruction(unit, context, merge_or);
+ .right = value,
+ },
+ });
+ try builder.appendInstruction(unit, context, merge_or);
- value = .{
- .value = .{
- .runtime = merge_or,
- },
- .type = struct_type.backing_type,
- };
- },
- else => |t| @panic(@tagName(t)),
- }
+ value = .{
+ .value = .{
+ .runtime = merge_or,
+ },
+ .type = type_index,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
}
-
- return value;
}
- },
- }
+
+ return value;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => {
+ if (is_comptime) {
+ var comptime_list = try UnpinnedArray(V.Comptime).initialize_with_capacity(context.my_allocator, @intCast(fields.len));
+ for (list.slice()) |item| {
+ comptime_list.append_with_capacity(item.value.@"comptime");
+ }
+
+ return .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_struct = try unit.constant_structs.append(context.my_allocator, .{
+ .fields = comptime_list.slice(),
+ .type = type_index,
+ }),
+ },
+ },
+ .type = type_index,
+ };
+ } else {
+ var struct_initialization = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = type_index,
+ };
+
+ for (list.slice(), 0..) |field, index| {
+ const struct_initialization_instruction = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = struct_initialization,
+ .index = @intCast(index),
+ .new_value = field,
+ },
+ });
+
+ try builder.appendInstruction(unit, context, struct_initialization_instruction);
+
+ struct_initialization.value = .{
+ .runtime = struct_initialization_instruction,
+ };
+ }
+
+ return struct_initialization;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -8639,75 +9497,74 @@ pub const Builder = struct {
switch (field_access_left.value) {
.@"comptime" => |ct| switch (ct) {
- .type => |type_index| switch (unit.types.get(type_index).*) {
- .@"struct", .@"enum" => {
- const container_type = unit.types.get(type_index);
- const container_scope = container_type.getScope(unit);
- const look_in_parent_scopes = false;
+ .type => |type_index| {
+ const container_type = unit.types.get(type_index);
+ const container_scope = container_type.getScope(unit);
+ const look_in_parent_scopes = false;
- if (container_scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
- const global = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
- switch (global.initial_value) {
- .function_definition, .function_declaration => break :blk .{
- .value = .{
- .@"comptime" = .{
- .global = global,
- },
+ if (container_scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
+ const global = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
+ switch (global.initial_value) {
+ .function_definition, .function_declaration => break :blk .{
+ .value = .{
+ .@"comptime" = .{
+ .global = global,
},
- .type = global.declaration.type,
},
- else => |t| @panic(@tagName(t)),
- }
- } else {
- @panic("Right identifier in field access like call expression");
- //std.debug.panic("Right identifier in field-access-like call expression not found: '{s}'", .{right_identifier});
+ .type = global.declaration.type,
+ },
+ else => |t| @panic(@tagName(t)),
}
- },
- else => |t| @panic(@tagName(t)),
+ } else {
+ @panic("Right identifier in field access like call expression");
+ //std.debug.panic("Right identifier in field-access-like call expression not found: '{s}'", .{right_identifier});
+ }
},
.global => |global| {
switch (unit.types.get(global.declaration.type).*) {
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- for (struct_type.fields.slice()) |field_index| {
- const field = unit.struct_fields.get(field_index);
- if (field.name == right_identifier_hash) {
- unreachable;
- }
- } else {
- const look_in_parent_scopes = false;
- if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
- const right_symbol = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
- switch (right_symbol.initial_value) {
- .function_definition => {
- const function_type_index = right_symbol.declaration.type;
- const function_prototype_index = unit.types.get(function_type_index).function;
- const function_prototype = unit.function_prototypes.get(function_prototype_index);
- if (function_prototype.argument_types.len == 0) {
- unreachable;
- }
-
- const first_argument_type_index = function_prototype.argument_types[0];
- if (first_argument_type_index == field_access_left.type) {
- try argument_list.append(context.my_allocator, field_access_left);
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .global = right_symbol,
- },
- },
- .type = function_type_index,
- };
- } else {
- unreachable;
- }
- },
- else => |t| @panic(@tagName(t)),
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
+ for (struct_type.fields.slice()) |field_index| {
+ const field = unit.struct_fields.get(field_index);
+ if (field.name == right_identifier_hash) {
+ unreachable;
}
} else {
- unreachable;
+ const look_in_parent_scopes = false;
+ if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
+ const right_symbol = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
+ switch (right_symbol.initial_value) {
+ .function_definition => {
+ const function_type_index = right_symbol.declaration.type;
+ const function_prototype_index = unit.types.get(function_type_index).function;
+ const function_prototype = unit.function_prototypes.get(function_prototype_index);
+ if (function_prototype.argument_types.len == 0) {
+ unreachable;
+ }
+
+ const first_argument_type_index = function_prototype.argument_types[0];
+ if (first_argument_type_index == field_access_left.type) {
+ try argument_list.append(context.my_allocator, field_access_left);
+ break :blk V{
+ .value = .{
+ .@"comptime" = .{
+ .global = right_symbol,
+ },
+ },
+ .type = function_type_index,
+ };
+ } else {
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ } else {
+ unreachable;
+ }
}
- }
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -8717,158 +9574,20 @@ pub const Builder = struct {
.runtime => |instruction_index| {
switch (unit.types.get(field_access_left.type).*) {
.pointer => |pointer| switch (unit.types.get(pointer.type).*) {
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
-
- for (struct_type.fields.slice(), 0..) |field_index, index| {
- const field = unit.struct_fields.get(field_index);
- if (field.name == right_identifier_hash) {
- switch (unit.types.get(field.type).*) {
- .pointer => |field_pointer_type| switch (unit.types.get(field_pointer_type.type).*) {
- .function => {
- assert(field_pointer_type.mutability == .@"const");
- assert(!field_pointer_type.nullable);
- const gep = try unit.instructions.append(context.my_allocator, .{
- .get_element_pointer = .{
- .pointer = instruction_index,
- .base_type = pointer.type,
- .is_struct = true,
- .index = .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = index,
- },
- },
- },
- .type = .u32,
- },
- },
- });
- try builder.appendInstruction(unit, context, gep);
-
- const load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = .{
- .value = .{
- .runtime = gep,
- },
- .type = try unit.getPointerType(context, .{
- .type = field.type,
- .many = false,
- .nullable = false,
- .mutability = .@"const",
- .termination = .none,
- }),
- },
- .type = field.type,
- },
- });
-
- try builder.appendInstruction(unit, context, load);
- break :blk .{
- .value = .{
- .runtime = load,
- },
- .type = field.type,
- };
- },
- else => |t| @panic(@tagName(t)),
- },
- else => |t| @panic(@tagName(t)),
- }
- unreachable;
- }
- } else {
- const look_in_parent_scopes = false;
- if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
- const right_symbol = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
- switch (right_symbol.initial_value) {
- .function_definition => {
- const function_type_index = right_symbol.declaration.type;
- const function_prototype_index = unit.types.get(function_type_index).function;
- const function_prototype = unit.function_prototypes.get(function_prototype_index);
- if (function_prototype.argument_types.len == 0) {
- unreachable;
- }
-
- const first_argument_type_index = function_prototype.argument_types[0];
- if (first_argument_type_index == field_access_left.type) {
- try argument_list.append(context.my_allocator, field_access_left);
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .global = right_symbol,
- },
- },
- .type = function_type_index,
- };
- } else if (first_argument_type_index == pointer.type) {
- const load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = field_access_left,
- .type = first_argument_type_index,
- },
- });
- try builder.appendInstruction(unit, context, load);
-
- try argument_list.append(context.my_allocator, .{
- .value = .{
- .runtime = load,
- },
- .type = first_argument_type_index,
- });
-
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .global = right_symbol,
- },
- },
- .type = function_type_index,
- };
- } else {
- const symbol_name = unit.getIdentifier(right_symbol.declaration.name);
- _ = symbol_name; // autofix
- const decl_arg_type_index = first_argument_type_index;
- const field_access_left_type_index = field_access_left.type;
- const result = try builder.typecheck(unit, context, decl_arg_type_index, field_access_left_type_index);
- switch (result) {
- else => |t| @panic(@tagName(t)),
- }
- }
- },
- else => |t| @panic(@tagName(t)),
- }
- } else {
- unreachable;
- }
- }
- },
- .pointer => |child_pointer| switch (unit.types.get(child_pointer.type).*) {
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
for (struct_type.fields.slice(), 0..) |field_index, index| {
const field = unit.struct_fields.get(field_index);
if (field.name == right_identifier_hash) {
switch (unit.types.get(field.type).*) {
.pointer => |field_pointer_type| switch (unit.types.get(field_pointer_type.type).*) {
.function => {
- const first_load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = field_access_left,
- .type = pointer.type,
- },
- });
- try builder.appendInstruction(unit, context, first_load);
-
assert(field_pointer_type.mutability == .@"const");
assert(!field_pointer_type.nullable);
-
const gep = try unit.instructions.append(context.my_allocator, .{
.get_element_pointer = .{
- .pointer = first_load,
- .base_type = child_pointer.type,
+ .pointer = instruction_index,
+ .base_type = pointer.type,
.is_struct = true,
.index = .{
.value = .{
@@ -8901,8 +9620,8 @@ pub const Builder = struct {
.type = field.type,
},
});
- try builder.appendInstruction(unit, context, load);
+ try builder.appendInstruction(unit, context, load);
break :blk .{
.value = .{
.runtime = load,
@@ -8914,12 +9633,69 @@ pub const Builder = struct {
},
else => |t| @panic(@tagName(t)),
}
+ unreachable;
}
} else {
const look_in_parent_scopes = false;
if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
- _ = lookup; // autofix
- unreachable;
+ const right_symbol = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
+ switch (right_symbol.initial_value) {
+ .function_definition => {
+ const function_type_index = right_symbol.declaration.type;
+ const function_prototype_index = unit.types.get(function_type_index).function;
+ const function_prototype = unit.function_prototypes.get(function_prototype_index);
+ if (function_prototype.argument_types.len == 0) {
+ unreachable;
+ }
+
+ const first_argument_type_index = function_prototype.argument_types[0];
+ if (first_argument_type_index == field_access_left.type) {
+ try argument_list.append(context.my_allocator, field_access_left);
+ break :blk V{
+ .value = .{
+ .@"comptime" = .{
+ .global = right_symbol,
+ },
+ },
+ .type = function_type_index,
+ };
+ } else if (first_argument_type_index == pointer.type) {
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = field_access_left,
+ .type = first_argument_type_index,
+ },
+ });
+ try builder.appendInstruction(unit, context, load);
+
+ try argument_list.append(context.my_allocator, .{
+ .value = .{
+ .runtime = load,
+ },
+ .type = first_argument_type_index,
+ });
+
+ break :blk V{
+ .value = .{
+ .@"comptime" = .{
+ .global = right_symbol,
+ },
+ },
+ .type = function_type_index,
+ };
+ } else {
+ const symbol_name = unit.getIdentifier(right_symbol.declaration.name);
+ _ = symbol_name; // autofix
+ const decl_arg_type_index = first_argument_type_index;
+ const field_access_left_type_index = field_access_left.type;
+ const result = try builder.typecheck(unit, context, decl_arg_type_index, field_access_left_type_index);
+ switch (result) {
+ else => |t| @panic(@tagName(t)),
+ }
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
} else {
unreachable;
}
@@ -8927,49 +9703,91 @@ pub const Builder = struct {
},
else => |t| @panic(@tagName(t)),
},
- else => |t| @panic(@tagName(t)),
- },
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- for (struct_type.fields.slice()) |field_index| {
- const field = unit.struct_fields.get(field_index);
- if (field.name == right_identifier_hash) {
- unreachable;
- }
- } else {
- const look_in_parent_scopes = false;
- if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
- const right_symbol = try builder.referenceGlobalDeclaration(unit, context, lookup.scope, lookup.declaration);
- switch (right_symbol.initial_value) {
- .function_definition => {
- const function_type_index = right_symbol.declaration.type;
- const function_prototype_index = unit.types.get(function_type_index).function;
- const function_prototype = unit.function_prototypes.get(function_prototype_index);
- if (function_prototype.argument_types.len == 0) {
- unreachable;
- }
+ .pointer => |child_pointer| switch (unit.types.get(child_pointer.type).*) {
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
+ for (struct_type.fields.slice(), 0..) |field_index, index| {
+ const field = unit.struct_fields.get(field_index);
+ if (field.name == right_identifier_hash) {
+ switch (unit.types.get(field.type).*) {
+ .pointer => |field_pointer_type| switch (unit.types.get(field_pointer_type.type).*) {
+ .function => {
+ const first_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = field_access_left,
+ .type = pointer.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, first_load);
- const first_argument_type_index = function_prototype.argument_types[0];
- if (first_argument_type_index == field_access_left.type) {
- try argument_list.append(context.my_allocator, field_access_left);
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .global = right_symbol,
+ assert(field_pointer_type.mutability == .@"const");
+ assert(!field_pointer_type.nullable);
+
+ const gep = try unit.instructions.append(context.my_allocator, .{
+ .get_element_pointer = .{
+ .pointer = first_load,
+ .base_type = child_pointer.type,
+ .is_struct = true,
+ .index = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = index,
+ },
+ },
+ },
+ .type = .u32,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, gep);
+
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = .{
+ .value = .{
+ .runtime = gep,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = field.type,
+ .many = false,
+ .nullable = false,
+ .mutability = .@"const",
+ .termination = .none,
+ }),
+ },
+ .type = field.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, load);
+
+ break :blk .{
+ .value = .{
+ .runtime = load,
+ },
+ .type = field.type,
+ };
},
+ else => |t| @panic(@tagName(t)),
},
- .type = function_type_index,
- };
+ else => |t| @panic(@tagName(t)),
+ }
+ }
+ } else {
+ const look_in_parent_scopes = false;
+ if (struct_type.scope.scope.lookupDeclaration(right_identifier_hash, look_in_parent_scopes)) |lookup| {
+ _ = lookup; // autofix
+ unreachable;
} else {
unreachable;
}
- },
- else => |t| @panic(@tagName(t)),
- }
- } else {
- unreachable;
- }
- }
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -9076,18 +9894,6 @@ pub const Builder = struct {
for (function_prototype.argument_types, argument_list.slice(), 0..) |argument_type, argument_value, i| {
_ = i; // autofix
if (argument_type != argument_value.type) {
- // switch (unit.types.get(argument_type).*) {
- // .pointer => |dst_ptr| switch (unit.types.get(argument_value.type).*) {
- // .pointer => |src_ptr| {
- // _ = dst_ptr;
- // _ = src_ptr; // autofix
- // // std.debug.print("Declaration: {}\nCall: {}\n", .{ dst_ptr, src_ptr });
- // },
- // else => |t| @panic(@tagName(t)),
- // },
- // else => |t| @panic(@tagName(t)),
- // }
-
@panic("Type mismatch");
}
}
@@ -9219,7 +10025,9 @@ pub const Builder = struct {
}
try builder.pushScope(unit, context, &block.scope.scope);
- defer builder.popScope(unit, context) catch unreachable;
+ defer {
+ builder.popScope(unit, context) catch unreachable;
+ }
const statement_node_list = unit.getNodeList(block_node.left);
@@ -9300,8 +10108,7 @@ pub const Builder = struct {
.@"comptime" => |ct| switch (ct) {
.enum_value => |enum_field_index| {
const enum_field = unit.enum_fields.get(enum_field_index);
- const enum_type_general = unit.types.get(enum_field.parent);
- const enum_type = unit.enums.get(enum_type_general.@"enum");
+ const enum_type = &unit.types.get(enum_field.parent).integer.kind.@"enum";
const typecheck_enum_result = try unit.typecheckSwitchEnums(context, enum_type, case_nodes);
const group_index = for (typecheck_enum_result.switch_case_groups.pointer[0..typecheck_enum_result.switch_case_groups.length], 0..) |switch_case_group, switch_case_group_index| {
@@ -9735,80 +10542,8 @@ pub const Builder = struct {
.not_taken_expression_node_index = .null,
});
},
- .catch_expression => {
- assert(statement_node.left != .null);
- assert(statement_node.right != .null);
-
- const expression = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, statement_node.left, .left);
- const expression_type = unit.types.get(expression.type);
- switch (expression_type.*) {
- .error_union => |error_union| switch (unit.types.get(error_union.type).*) {
- .void => {
- const extract_value = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = expression,
- .index = 1,
- },
- });
- try builder.appendInstruction(unit, context, extract_value);
-
- const error_block = try builder.newBasicBlock(unit, context);
- const clean_block = try builder.newBasicBlock(unit, context);
- try builder.branch(unit, context, extract_value, error_block, clean_block);
- builder.current_basic_block = error_block;
-
- const v = try builder.resolveRuntimeValue(unit, context, Type.Expect{ .type = .void }, statement_node.right, .left);
- _ = v; // autofix
- assert(unit.basic_blocks.get(builder.current_basic_block).terminated);
-
- builder.current_basic_block = clean_block;
- // // try unit.instructions.append(context.my_allocator, .{
- // // .branch = .{
- // // .condition = extract_value,
- // // .from = builder.current_basic_block,
- // // },
- // // });
- // unreachable;
- },
- else => |t| @panic(@tagName(t)),
- },
- else => builder.reportCompileError(unit, context, .{
- .message = "expected error union expression",
- .node = statement_node.left,
- }),
- }
- },
- .try_expression => {
- assert(statement_node.left != .null);
- assert(statement_node.right == .null);
-
- const expression = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, statement_node.left, .left);
- const expression_type = unit.types.get(expression.type);
- switch (expression_type.*) {
- .error_union => |error_union| switch (unit.types.get(error_union.type).*) {
- .void => {
- const extract_value = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = expression,
- .index = 1,
- },
- });
- try builder.appendInstruction(unit, context, extract_value);
- const error_block = try builder.newBasicBlock(unit, context);
- const clean_block = try builder.newBasicBlock(unit, context);
- try builder.branch(unit, context, extract_value, error_block, clean_block);
- builder.current_basic_block = error_block;
-
- try builder.buildRet(unit, context, expression);
- assert(unit.basic_blocks.get(builder.current_basic_block).terminated);
-
- builder.current_basic_block = clean_block;
- },
- else => |t| @panic(@tagName(t)),
- },
- else => |t| @panic(@tagName(t)),
- }
- },
+ .catch_expression => _ = try builder.resolveCatchExpression(unit, context, Type.Expect{ .type = .void }, statement_node_index, .left),
+ .try_expression => _ = try builder.resolveTryExpression(unit, context, Type.Expect{ .type = .void }, statement_node_index, .left),
else => |t| @panic(@tagName(t)),
}
}
@@ -9816,6 +10551,154 @@ pub const Builder = struct {
return block_index;
}
+ fn resolveCatchExpression(builder: *Builder, unit: *Unit, context: *const Context, type_expect: Type.Expect, node_index: Node.Index, side: Side) !V {
+ const node = unit.getNode(node_index);
+ assert(node.left != .null);
+ assert(node.right != .null);
+
+ const expression = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .left);
+ const expression_type = unit.types.get(expression.type);
+ switch (expression_type.*) {
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .error_union => |error_union| {
+ switch (type_expect) {
+ .none => {},
+ .type => |type_index| switch (try builder.typecheck(unit, context, type_index, error_union.type)) {
+ .success => {},
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+
+ const catch_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = expression.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, catch_alloca);
+
+ const catch_type_expect = Type.Expect{ .type = error_union.type };
+ const is_error = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = expression,
+ .index = 1,
+ },
+ });
+ try builder.appendInstruction(unit, context, is_error);
+ const error_block = try builder.newBasicBlock(unit, context);
+ const clean_block = try builder.newBasicBlock(unit, context);
+ try builder.branch(unit, context, is_error, error_block, clean_block);
+
+ builder.current_basic_block = error_block;
+
+ const right_node = unit.getNode(node.right);
+ const catch_expression_node_index = switch (right_node.id) {
+ .catch_payload => b: {
+ const payload_node = unit.getNode(right_node.left);
+ const emit = true;
+
+ const error_extract_value = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = expression,
+ .index = 0,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_extract_value);
+ const error_value = V{
+ .value = .{
+ .runtime = error_extract_value,
+ },
+ .type = error_union.@"error",
+ };
+ _ = try builder.emitLocalVariableDeclaration(unit, context, payload_node.token, .@"const", error_union.@"error", error_value, emit, null);
+ break :b right_node.right;
+ },
+ else => node.right,
+ };
+ const v = try builder.resolveRuntimeValue(unit, context, catch_type_expect, catch_expression_node_index, side);
+ switch (error_union.type) {
+ .void, .noreturn => {
+ assert(unit.basic_blocks.get(builder.current_basic_block).terminated);
+ builder.current_basic_block = clean_block;
+ return v;
+ },
+ else => {
+ const is_block_terminated = unit.basic_blocks.get(builder.current_basic_block).terminated;
+ const CatchInfo = struct {
+ phi: Instruction.Index,
+ exit_block: BasicBlock.Index,
+ };
+ const catch_info: ?CatchInfo = if (!is_block_terminated) blk: {
+ const expected_type = error_union.type;
+ assert(v.type == expected_type);
+ const phi_index = try unit.instructions.append(context.my_allocator, .{
+ .phi = .{
+ .type = expected_type,
+ },
+ });
+ const phi = &unit.instructions.get(phi_index).phi;
+ try phi.addIncoming(context, v, builder.current_basic_block);
+
+ const phi_block = try builder.newBasicBlock(unit, context);
+ try builder.jump(unit, context, phi_block);
+ break :blk .{
+ .phi = phi_index,
+ .exit_block = phi_block,
+ };
+ } else null;
+
+ assert(unit.basic_blocks.get(builder.current_basic_block).terminated);
+ builder.current_basic_block = clean_block;
+
+ const no_error_extract_value = try unit.instructions.append(context.my_allocator, .{
+ .extract_value = .{
+ .expression = expression,
+ .index = 0,
+ },
+ });
+ try builder.appendInstruction(unit, context, no_error_extract_value);
+
+ const value = V{
+ .value = .{
+ .runtime = no_error_extract_value,
+ },
+ .type = error_union.type,
+ };
+ if (is_block_terminated) {
+ return value;
+ } else {
+ const phi_index = catch_info.?.phi;
+ const phi = &unit.instructions.get(phi_index).phi;
+ const exit_block = catch_info.?.exit_block;
+
+ try phi.addIncoming(context, value, builder.current_basic_block);
+
+ try builder.jump(unit, context, exit_block);
+ builder.current_basic_block = exit_block;
+
+ try builder.appendInstruction(unit, context, phi_index);
+
+ return .{
+ .value = .{
+ .runtime = phi_index,
+ },
+ .type = error_union.type,
+ };
+ }
+ },
+ }
+ },
+ else => {},
+ },
+ else => {},
+ }
+
+ builder.reportCompileError(unit, context, .{
+ .message = "expected error union expression",
+ .node = node.left,
+ });
+ }
+
fn resolveBranchPayload(builder: *Builder, unit: *Unit, context: *const Context, arguments: struct {
payload_node_index: Node.Index,
optional_node_index: Node.Index,
@@ -9828,23 +10711,6 @@ pub const Builder = struct {
switch (optional_expression.value) {
.runtime => {
switch (unit.types.get(optional_expression.type).*) {
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- if (struct_type.optional) {
- assert(struct_type.backing_type == .null);
- const condition = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = optional_expression,
- .index = 1,
- },
- });
- try builder.appendInstruction(unit, context, condition);
-
- try builder.resolveBranch(unit, context, Type.Expect{ .type = .void }, condition, arguments.taken_expression_node_index, arguments.not_taken_expression_node_index, payload_node.token, optional_expression);
- } else {
- unreachable;
- }
- },
.slice => |slice| {
if (slice.nullable) {
const pointer_value = try unit.instructions.append(context.my_allocator, .{
@@ -9920,27 +10786,6 @@ pub const Builder = struct {
if (maybe_optional_value) |optional_value| {
assert(optional_payload_token != .null);
switch (unit.types.get(optional_value.type).*) {
- .@"struct" => |struct_index| {
- const optional_struct = unit.structs.get(struct_index);
- assert(optional_struct.optional);
- assert(optional_struct.backing_type == .null);
- // TODO: avoid local symbol name collisions
- const unwrap = try unit.instructions.append(context.my_allocator, .{
- .extract_value = .{
- .expression = optional_value,
- .index = 0,
- },
- });
- try builder.appendInstruction(unit, context, unwrap);
- const emit = true;
- const optional_payload = unit.struct_fields.get(optional_struct.fields.pointer[0]);
- _ = try builder.emitLocalVariableDeclaration(unit, context, optional_payload_token, .@"const", optional_payload.type, .{
- .value = .{
- .runtime = unwrap,
- },
- .type = optional_payload.type,
- }, emit, null);
- },
.slice => |slice| {
const not_null_slice = try unit.getSliceType(context, .{
.child_pointer_type = blk: {
@@ -10020,7 +10865,9 @@ pub const Builder = struct {
}
}
- builder.current_basic_block = exit_block;
+ if (unit.basic_blocks.get(exit_block).predecessors.length > 0) {
+ builder.current_basic_block = exit_block;
+ }
}
fn branch(builder: *Builder, unit: *Unit, context: *const Context, condition: Instruction.Index, taken_block: BasicBlock.Index, non_taken_block: BasicBlock.Index) !void {
@@ -10036,8 +10883,8 @@ pub const Builder = struct {
try builder.appendInstruction(unit, context, br);
unit.basic_blocks.get(builder.current_basic_block).terminated = true;
- unit.basic_blocks.get(taken_block).predecessor = builder.current_basic_block;
- unit.basic_blocks.get(non_taken_block).predecessor = builder.current_basic_block;
+ try unit.basic_blocks.get(taken_block).predecessors.append(context.my_allocator, builder.current_basic_block);
+ try unit.basic_blocks.get(non_taken_block).predecessors.append(context.my_allocator, builder.current_basic_block);
}
fn jump(builder: *Builder, unit: *Unit, context: *const Context, new_basic_block: BasicBlock.Index) !void {
@@ -10051,10 +10898,10 @@ pub const Builder = struct {
try builder.appendInstruction(unit, context, instruction);
unit.basic_blocks.get(builder.current_basic_block).terminated = true;
- unit.basic_blocks.get(new_basic_block).predecessor = builder.current_basic_block;
+ try unit.basic_blocks.get(new_basic_block).predecessors.append(context.my_allocator, builder.current_basic_block);
}
- fn resolveSwitch(builder: *Builder, unit: *Unit, context: *const Context, type_expect: Type.Expect, node_index: Node.Index) !V {
+ fn resolveSwitch(builder: *Builder, unit: *Unit, context: *const Context, type_expect: Type.Expect, node_index: Node.Index, side: Side) !V {
const node = unit.getNode(node_index);
assert(node.id == .@"switch");
const expression_to_switch_on = try builder.resolveRuntimeValue(unit, context, Type.Expect.none, node.left, .right);
@@ -10064,8 +10911,7 @@ pub const Builder = struct {
.@"comptime" => |ct| switch (ct) {
.enum_value => |enum_field_index| {
const enum_field = unit.enum_fields.get(enum_field_index);
- const enum_type_general = unit.types.get(enum_field.parent);
- const enum_type = unit.enums.get(enum_type_general.@"enum");
+ const enum_type = &unit.types.get(enum_field.parent).integer.kind.@"enum";
const typecheck_enum_result = try unit.typecheckSwitchEnums(context, enum_type, case_nodes);
const group_index = for (typecheck_enum_result.switch_case_groups.pointer[0..typecheck_enum_result.switch_case_groups.length], 0..) |switch_case_group, switch_case_group_index| {
@@ -10080,9 +10926,128 @@ pub const Builder = struct {
const true_switch_case_node = unit.getNode(case_nodes[group_index]);
return try builder.resolveRuntimeValue(unit, context, type_expect, true_switch_case_node.right, .right);
},
+ .bool => |boolean| {
+ assert(case_nodes.len == 2);
+ for (case_nodes) |case_node_index| {
+ const case_node = unit.getNode(case_node_index);
+ assert(case_node.left != .null);
+ assert(case_node.right != .null);
+ const boolean_value = try builder.resolveComptimeValue(unit, context, Type.Expect{ .type = .bool }, .{}, case_node.left, null);
+ switch (boolean_value) {
+ .bool => |case_boolean| {
+ if (case_boolean == boolean) {
+ return try builder.resolveRuntimeValue(unit, context, type_expect, case_node.right, side);
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ } else {
+ unreachable;
+ }
+ },
else => |t| @panic(@tagName(t)),
},
- .runtime => todo(),
+ .runtime => {
+ const condition_type = expression_to_switch_on.type;
+ switch (condition_type) {
+ .comptime_int => unreachable,
+ else => {},
+ }
+
+ switch (type_expect) {
+ .type => |type_index| switch (type_index) {
+ .void => unreachable,
+ .noreturn => unreachable,
+ else => {
+ const switch_instruction_index = try unit.instructions.append(context.my_allocator, .{
+ .@"switch" = .{
+ .condition = expression_to_switch_on,
+ .block_type = type_index,
+ },
+ });
+ try builder.appendInstruction(unit, context, switch_instruction_index);
+ const switch_instruction = &unit.instructions.get(switch_instruction_index).@"switch";
+ const phi_index = try unit.instructions.append(context.my_allocator, .{
+ .phi = .{
+ .type = type_index,
+ },
+ });
+ const phi = &unit.instructions.get(phi_index).phi;
+
+ const phi_block = try builder.newBasicBlock(unit, context);
+
+ const before_switch_bb = builder.current_basic_block;
+ for (case_nodes) |case_node_index| {
+ builder.current_basic_block = before_switch_bb;
+ const case_node = unit.getNode(case_node_index);
+ assert(case_node.right != .null);
+ var conditions = UnpinnedArray(V.Comptime){};
+ switch (case_node.left) {
+ .null => {},
+ else => {
+ const condition_node = unit.getNode(case_node.left);
+ switch (condition_node.id) {
+ .node_list => {
+ const condition_nodes = unit.getNodeListFromNode(condition_node);
+ try conditions.ensure_capacity(context.my_allocator, @intCast(condition_nodes.len));
+ for (condition_nodes) |condition_node_index| {
+ const condition = try builder.resolveComptimeValue(unit, context, Type.Expect{ .type = condition_type }, .{}, condition_node_index, null);
+ conditions.append_with_capacity(condition);
+ }
+ },
+ else => {
+ const v = try builder.resolveComptimeValue(unit, context, Type.Expect{ .type = condition_type }, .{}, case_node.left, null);
+ try conditions.ensure_capacity(context.my_allocator, 1);
+ conditions.append_with_capacity(v);
+ },
+ }
+ },
+ }
+
+ const case_block = try builder.newBasicBlock(unit, context);
+ builder.current_basic_block = case_block;
+ const v = try builder.resolveRuntimeValue(unit, context, type_expect, case_node.right, .right);
+
+ if (!unit.basic_blocks.get(builder.current_basic_block).terminated) {
+ try phi.addIncoming(context, v, case_block);
+ try builder.jump(unit, context, phi_block);
+ }
+
+ if (conditions.length > 0) {
+ for (conditions.slice()) |condition| {
+ const case = Instruction.Switch.Case{
+ .condition = condition,
+ .basic_block = case_block,
+ };
+ try switch_instruction.cases.append(context.my_allocator, case);
+ }
+ } else {
+ switch_instruction.else_block = case_block;
+ }
+ }
+
+ if (phi.values.length > 0) {
+ builder.current_basic_block = phi_block;
+ try builder.appendInstruction(unit, context, phi_index);
+
+ return V{
+ .value = .{
+ .runtime = phi_index,
+ },
+ .type = type_index,
+ };
+ } else return V{
+ .value = .{
+ .@"comptime" = .void,
+ },
+ .type = .void,
+ };
+ },
+ },
+ else => |t| @panic(@tagName(t)),
+ }
+ todo();
+ },
else => |t| @panic(@tagName(t)),
}
}
@@ -10166,59 +11131,40 @@ pub const Builder = struct {
},
};
} else switch (left_type.*) {
- .@"enum" => |enum_index| blk: {
- const enum_type = unit.enums.get(enum_index);
- const field_index = for (enum_type.fields.slice()) |enum_field_index| {
- const enum_field = unit.enum_fields.get(enum_field_index);
- if (enum_field.name == identifier_hash) {
- break enum_field_index;
- }
- } else @panic("Right identifier not found");//std.debug.panic("Right identifier '{s}' not found", .{identifier});
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .enum_value = field_index,
+ .integer => |*integer| switch (integer.kind) {
+ .@"enum" => |*enum_type| blk: {
+ const field_index = for (enum_type.fields.slice()) |enum_field_index| {
+ const enum_field = unit.enum_fields.get(enum_field_index);
+ if (enum_field.name == identifier_hash) {
+ break enum_field_index;
+ }
+ } else @panic("Right identifier not found"); //std.debug.panic("Right identifier '{s}' not found", .{identifier});
+ break :blk V{
+ .value = .{
+ .@"comptime" = .{
+ .enum_value = field_index,
+ },
},
- },
- .type = type_index,
- };
- },
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- const field_index = for (struct_type.fields.slice()) |enum_field_index| {
- const enum_field = unit.struct_fields.get(enum_field_index);
- if (enum_field.name == identifier_hash) {
- break enum_field_index;
- }
- } else @panic("Right identifier not found");//std.debug.panic("Right identifier '{s}' not found", .{identifier});
- _ = field_index;
- unreachable;
- // break :blk V{
- // .value = .{
- // .@"comptime" = .{
- // .enum_value = field_index,
- // },
- // },
- // .type = type_index,
- // };
- },
- .@"error" => |error_index| blk: {
- const error_type = unit.errors.get(error_index);
- const field_index = for (error_type.fields.slice()) |error_field_index| {
- const error_field = unit.error_fields.get(error_field_index);
- if (error_field.name == identifier_hash) {
- break error_field_index;
- }
- } else @panic("Right identifier not found"); //std.debug.panic("Right identifier '{s}' not found", .{identifier});
-
- break :blk V{
- .value = .{
- .@"comptime" = .{
- .error_value = field_index,
+ .type = type_index,
+ };
+ },
+ .@"error" => |*error_type| blk: {
+ const field_index = for (error_type.fields.slice()) |error_field_index| {
+ const enum_field = unit.error_fields.get(error_field_index);
+ if (enum_field.name == identifier_hash) {
+ break error_field_index;
+ }
+ } else @panic("Right identifier not found"); //std.debug.panic("Right identifier '{s}' not found", .{identifier});
+ break :blk V{
+ .value = .{
+ .@"comptime" = .{
+ .error_value = field_index,
+ },
},
- },
- .type = type_index,
- };
+ .type = type_index,
+ };
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
};
@@ -10340,99 +11286,26 @@ pub const Builder = struct {
else => |t| @panic(@tagName(t)),
};
},
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- const fields = struct_type.fields.slice();
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
+ const fields = struct_type.fields.slice();
- for (fields, 0..) |field_index, i| {
- const field = unit.struct_fields.get(field_index);
- if (field.name == identifier_hash) {
- assert(struct_type.backing_type == .null);
-
- const load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = left,
- .type = pointer.type,
- },
- });
- try builder.appendInstruction(unit, context, load);
-
- // GEP because this is still a pointer
- const gep = try unit.instructions.append(context.my_allocator, .{
- .get_element_pointer = .{
- .pointer = load,
- .base_type = child_pointer.type,
- .is_struct = true,
- .index = .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = i,
- },
- },
- },
- .type = .u32,
+ for (fields, 0..) |field_index, i| {
+ const field = unit.struct_fields.get(field_index);
+ if (field.name == identifier_hash) {
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = left,
+ .type = pointer.type,
},
- },
- });
- try builder.appendInstruction(unit, context, gep);
+ });
+ try builder.appendInstruction(unit, context, load);
- const mutability = child_pointer.mutability;
- const gep_pointer_type = try unit.getPointerType(context, .{
- .type = field.type,
- .termination = .none,
- .mutability = mutability,
- .many = false,
- .nullable = false,
- });
- const gep_value = V{
- .value = .{
- .runtime = gep,
- },
- .type = gep_pointer_type,
- };
-
- break :b switch (side) {
- .left => gep_value,
- .right => right: {
- const field_load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = gep_value,
- .type = field.type,
- },
- });
- try builder.appendInstruction(unit, context, field_load);
-
- break :right .{
- .value = .{
- .runtime = field_load,
- },
- .type = field.type,
- };
- },
- };
- }
- } else {
- const scope = left_type.getScope(unit);
- _ = scope; // autofix
- unreachable;
- }
- },
- else => |t| @panic(@tagName(t)),
- },
- .@"struct" => |struct_index| {
- const struct_type = unit.structs.get(struct_index);
- const fields = struct_type.fields.slice();
-
- for (fields, 0..) |field_index, i| {
- const field = unit.struct_fields.get(field_index);
- if (field.name == identifier_hash) {
- switch (struct_type.backing_type) {
- .null => {
+ // GEP because this is still a pointer
const gep = try unit.instructions.append(context.my_allocator, .{
.get_element_pointer = .{
- .pointer = left.value.runtime,
- .base_type = pointer.type,
+ .pointer = load,
+ .base_type = child_pointer.type,
.is_struct = true,
.index = .{
.value = .{
@@ -10448,130 +11321,209 @@ pub const Builder = struct {
});
try builder.appendInstruction(unit, context, gep);
+ const mutability = child_pointer.mutability;
+ const gep_pointer_type = try unit.getPointerType(context, .{
+ .type = field.type,
+ .termination = .none,
+ .mutability = mutability,
+ .many = false,
+ .nullable = false,
+ });
const gep_value = V{
.value = .{
.runtime = gep,
},
- .type = try unit.getPointerType(context, .{
- .type = field.type,
- .mutability = .@"const",
- .nullable = false,
- .many = false,
- .termination = .none,
- }),
+ .type = gep_pointer_type,
};
- switch (side) {
- .left => break :b gep_value,
- .right => {
- const load = try unit.instructions.append(context.my_allocator, .{
+
+ break :b switch (side) {
+ .left => gep_value,
+ .right => right: {
+ const field_load = try unit.instructions.append(context.my_allocator, .{
.load = .{
.value = gep_value,
.type = field.type,
},
});
+ try builder.appendInstruction(unit, context, field_load);
- try builder.appendInstruction(unit, context, load);
-
- break :b V{
+ break :right .{
.value = .{
- .runtime = load,
+ .runtime = field_load,
},
.type = field.type,
};
},
- }
- },
- else => {
- assert(side == .right);
-
- const load = try unit.instructions.append(context.my_allocator, .{
- .load = .{
- .value = left,
- .type = struct_type.backing_type,
- },
- });
- try builder.appendInstruction(unit, context, load);
-
- var bit_offset: u32 = 0;
- for (fields[0..i]) |fi| {
- const f = unit.struct_fields.get(fi);
- const f_type = unit.types.get(f.type);
- const bit_size = f_type.getBitSize(unit);
- bit_offset += bit_size;
- }
-
- const backing_type = unit.types.get(struct_type.backing_type);
- const instruction_to_truncate = switch (bit_offset) {
- 0 => load,
- else => shl: {
- const shl = try unit.instructions.append(context.my_allocator, .{
- .integer_binary_operation = .{
- .id = .shift_right,
- .left = .{
- .value = .{
- .runtime = load,
- },
- .type = struct_type.backing_type,
- },
- .right = .{
- .value = .{
- .@"comptime" = .{
- .constant_int = .{
- .value = bit_offset,
- },
- },
- },
- .type = struct_type.backing_type,
- },
- .signedness = backing_type.integer.signedness,
- },
- });
- try builder.appendInstruction(unit, context, shl);
-
- break :shl shl;
- },
};
+ }
+ } else {
+ const scope = left_type.getScope(unit);
+ _ = scope; // autofix
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*struct_type| {
+ const fields = struct_type.fields.slice();
- const f_type = unit.types.get(field.type);
- const f_bit_size = f_type.getBitSize(unit);
-
- const backing_type_size = backing_type.getBitSize(unit);
-
- switch (f_bit_size == backing_type_size) {
- true => {
- //instruction_to_truncate,
- unreachable;
- },
- false => {
- const truncate = try unit.instructions.append(context.my_allocator, .{
- .cast = .{
- .id = .truncate,
- .value = .{
- .value = .{
- .runtime = instruction_to_truncate,
- },
- .type = left.type,
+ for (fields, 0..) |field_index, i| {
+ const field = unit.struct_fields.get(field_index);
+ if (field.name == identifier_hash) {
+ const gep = try unit.instructions.append(context.my_allocator, .{
+ .get_element_pointer = .{
+ .pointer = left.value.runtime,
+ .base_type = pointer.type,
+ .is_struct = true,
+ .index = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = i,
},
- .type = field.type,
},
- });
- try builder.appendInstruction(unit, context, truncate);
- break :b V{
+ },
+ .type = .u32,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, gep);
+
+ const gep_value = V{
+ .value = .{
+ .runtime = gep,
+ },
+ .type = try unit.getPointerType(context, .{
+ .type = field.type,
+ .mutability = .@"const",
+ .nullable = false,
+ .many = false,
+ .termination = .none,
+ }),
+ };
+ switch (side) {
+ .left => break :b gep_value,
+ .right => {
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = gep_value,
+ .type = field.type,
+ },
+ });
+
+ try builder.appendInstruction(unit, context, load);
+
+ break :b V{
+ .value = .{
+ .runtime = load,
+ },
+ .type = field.type,
+ };
+ },
+ }
+ }
+ } else {
+ const scope = left_type.getScope(unit);
+ _ = scope; // autofix
+ unreachable;
+ }
+ },
+ else => |t| @panic(@tagName(t)),
+ },
+ .integer => |*integer| switch (integer.kind) {
+ .bitfield => |*bitfield| {
+ const fields = bitfield.fields.slice();
+
+ for (fields, 0..) |field_index, i| {
+ const field = unit.struct_fields.get(field_index);
+ if (field.name == identifier_hash) {
+ assert(side == .right);
+
+ const load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
+ .value = left,
+ .type = pointer.type,
+ },
+ });
+ try builder.appendInstruction(unit, context, load);
+
+ var bit_offset: u32 = 0;
+ for (fields[0..i]) |fi| {
+ const f = unit.struct_fields.get(fi);
+ const f_type = unit.types.get(f.type);
+ const bit_size = f_type.getBitSize(unit);
+ bit_offset += bit_size;
+ }
+
+ const instruction_to_truncate = switch (bit_offset) {
+ 0 => load,
+ else => shl: {
+ const shl = try unit.instructions.append(context.my_allocator, .{
+ .integer_binary_operation = .{
+ .id = .shift_right,
+ .left = .{
+ .value = .{
+ .runtime = load,
+ },
+ .type = pointer.type,
+ },
+ .right = .{
+ .value = .{
+ .@"comptime" = .{
+ .constant_int = .{
+ .value = bit_offset,
+ },
+ },
+ },
+ .type = pointer.type,
+ },
+ .signedness = integer.signedness,
+ },
+ });
+ try builder.appendInstruction(unit, context, shl);
+
+ break :shl shl;
+ },
+ };
+
+ const f_type = unit.types.get(field.type);
+ const f_bit_size = f_type.getBitSize(unit);
+
+ switch (f_bit_size == integer.bit_count) {
+ true => {
+ //instruction_to_truncate,
+ unreachable;
+ },
+ false => {
+ const truncate = try unit.instructions.append(context.my_allocator, .{
+ .cast = .{
+ .id = .truncate,
.value = .{
- .runtime = truncate,
+ .value = .{
+ .runtime = instruction_to_truncate,
+ },
+ .type = left.type,
},
.type = field.type,
- };
- },
- }
- },
+ },
+ });
+ try builder.appendInstruction(unit, context, truncate);
+ break :b V{
+ .value = .{
+ .runtime = truncate,
+ },
+ .type = field.type,
+ };
+ },
+ }
+ unreachable;
}
- }
- } else {
- const scope = left_type.getScope(unit);
- _ = scope; // autofix
- unreachable;
- }
+ } else unreachable;
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
},
@@ -10665,55 +11617,150 @@ pub const Builder = struct {
switch (result.value) {
.@"comptime" => |ct| switch (ct) {
.error_value => {
- const v = V{
- .value = .{
- .@"comptime" = .undefined,
- },
- .type = ti,
- };
- const error_union_builder = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = v,
- .index = 0,
- .new_value = result,
- },
- });
- try builder.appendInstruction(unit, context, error_union_builder);
+ const struct_index = unit.types.get(ti).@"struct";
+ const error_union = unit.structs.get(struct_index).kind.error_union;
- const final_error_union = try unit.instructions.append(context.my_allocator, .{
- .insert_value = .{
- .expression = .{
+ if (error_union.union_for_error == error_union.abi) {
+ const v = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = ti,
+ };
+
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = v,
+ .index = 0,
+ .new_value = result,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = ti,
+ },
+ .index = 1,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ return .{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = ti,
+ };
+ } else {
+ const v = V{
+ .value = .{
+ .@"comptime" = .undefined,
+ },
+ .type = error_union.union_for_error,
+ };
+
+ const error_union_builder = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = v,
+ .index = 0,
+ .new_value = result,
+ },
+ });
+ try builder.appendInstruction(unit, context, error_union_builder);
+
+ const final_error_union = try unit.instructions.append(context.my_allocator, .{
+ .insert_value = .{
+ .expression = .{
+ .value = .{
+ .runtime = error_union_builder,
+ },
+ .type = error_union.union_for_error,
+ },
+ .index = 2,
+ .new_value = .{
+ .value = .{
+ .@"comptime" = .{
+ .bool = true,
+ },
+ },
+ .type = .bool,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, final_error_union);
+
+ const support_alloca = try unit.instructions.append(context.my_allocator, .{
+ .stack_slot = .{
+ .type = error_union.union_for_error,
+ },
+ });
+ try builder.appendInstruction(unit, context, support_alloca);
+
+ const pointer_type = try unit.getPointerType(context, .{
+ .type = error_union.union_for_error,
+ .termination = .none,
+ .mutability = .@"var",
+ .many = false,
+ .nullable = false,
+ });
+
+ const support_store = try unit.instructions.append(context.my_allocator, .{
+ .store = .{
+ .destination = .{
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
+ },
+ .source = .{
+ .value = .{
+ .runtime = final_error_union,
+ },
+ .type = error_union.union_for_error,
+ },
+ },
+ });
+ try builder.appendInstruction(unit, context, support_store);
+
+ const support_load = try unit.instructions.append(context.my_allocator, .{
+ .load = .{
.value = .{
- .runtime = error_union_builder,
+ .value = .{
+ .runtime = support_alloca,
+ },
+ .type = pointer_type,
},
.type = ti,
},
- .index = 1,
- .new_value = .{
- .value = .{
- .@"comptime" = .{
- .bool = true,
- },
- },
- .type = .bool,
+ });
+ try builder.appendInstruction(unit, context, support_load);
+ return .{
+ .value = .{
+ .runtime = support_load,
},
- },
- });
- try builder.appendInstruction(unit, context, final_error_union);
-
- return .{
- .value = .{
- .runtime = final_error_union,
- },
- .type = ti,
- };
+ .type = ti,
+ };
+ }
},
else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
- unreachable;
},
+ .error_to_all_errors_error_union => return try builder.resolveErrorToAllErrorUnion(unit, context, ti, result),
else => |t| @panic(@tagName(t)),
}
},
@@ -10743,7 +11790,12 @@ pub const Builder = struct {
.runtime => |condition_instruction| {
try builder.resolveBranch(unit, context, type_expect, condition_instruction, taken_expression_node_index, not_taken_expression_node_index, .null, null);
// TODO WARN SAFETY:
- return undefined;
+ return V{
+ .value = .{
+ .@"comptime" = .void,
+ },
+ .type = .void,
+ };
},
else => unreachable,
};
@@ -10751,6 +11803,12 @@ pub const Builder = struct {
return result;
}
+ fn isCurrentFunction(builder: *Builder, unit: *Unit, name: []const u8) bool {
+ const hash = unit.code_to_emit.get(builder.current_function).?.declaration.name;
+ const identifier = unit.getIdentifier(hash);
+ return byte_equal(identifier, name);
+ }
+
fn emitReturn(builder: *Builder, unit: *Unit, context: *const Context, return_node_index: Node.Index) !void {
const return_node = unit.getNode(return_node_index);
assert(return_node.id == .@"return");
@@ -10765,8 +11823,7 @@ pub const Builder = struct {
if (builder.return_block != .null) {
if (builder.return_phi != .null) {
const phi = &unit.instructions.get(builder.return_phi).phi;
- try phi.values.append(context.my_allocator, return_value);
- try phi.basic_blocks.append(context.my_allocator, builder.current_basic_block);
+ try phi.addIncoming(context, return_value, builder.current_basic_block);
}
assert(builder.current_basic_block != builder.return_block);
@@ -10786,8 +11843,7 @@ pub const Builder = struct {
try builder.appendInstruction(unit, context, builder.return_phi);
const phi = &unit.instructions.get(builder.return_phi).phi;
- try phi.values.append(context.my_allocator, return_value);
- try phi.basic_blocks.append(context.my_allocator, current_basic_block);
+ try phi.addIncoming(context, return_value, current_basic_block);
try builder.buildRet(unit, context, .{
.value = .{
@@ -10825,22 +11881,30 @@ pub const Builder = struct {
}
fn reportCompileError(builder: *Builder, unit: *Unit, context: *const Context, err: Error) noreturn {
+ _ = context; // autofix
const err_node = unit.getNode(err.node);
const file = unit.files.get(builder.current_file);
+ _ = file; // autofix
const token_debug_info = builder.getTokenDebugInfo(unit, err_node.token);
- std.io.getStdOut().writer().print("{s}:{}:{}: \x1b[31merror:\x1b[0m ", .{ file.getPath(context.allocator) catch unreachable, token_debug_info.line + 1, token_debug_info.column + 1 }) catch unreachable;
- std.io.getStdOut().writer().writeAll(err.message) catch unreachable;
- std.io.getStdOut().writer().writeByte('\n') catch unreachable;
+ _ = token_debug_info; // autofix
+ // std.io.getStdOut().writer().print("{s}:{}:{}: \x1b[31merror:\x1b[0m ", .{ file.getPath(context.allocator) catch unreachable, token_debug_info.line + 1, token_debug_info.column + 1 }) catch unreachable;
+ // std.io.getStdOut().writer().writeAll(err.message) catch unreachable;
+ // std.io.getStdOut().writer().writeByte('\n') catch unreachable;
std.os.abort();
}
fn reportFormattedCompileError(builder: *Builder, unit: *Unit, context: *const Context, node_index: Node.Index, comptime format: []const u8, args: anytype) noreturn {
+ _ = context; // autofix
+ _ = format; // autofix
+ _ = args; // autofix
const err_node = unit.getNode(node_index);
const file = unit.files.get(builder.current_file);
+ _ = file; // autofix
const token_debug_info = builder.getTokenDebugInfo(unit, err_node.token);
- std.io.getStdOut().writer().print("{s}:{}:{}: \x1b[31merror:\x1b[0m ", .{ file.getPath(context.allocator) catch unreachable, token_debug_info.line + 1, token_debug_info.column + 1 }) catch unreachable;
- std.io.getStdOut().writer().print(format, args) catch unreachable;
- std.io.getStdOut().writer().writeByte('\n') catch unreachable;
+ _ = token_debug_info; // autofix
+ // std.io.getStdOut().writer().print("{s}:{}:{}: \x1b[31merror:\x1b[0m ", .{ file.getPath(context.allocator) catch unreachable, token_debug_info.line + 1, token_debug_info.column + 1 }) catch unreachable;
+ // std.io.getStdOut().writer().print(format, args) catch unreachable;
+ // std.io.getStdOut().writer().writeByte('\n') catch unreachable;
std.os.abort();
}
@@ -10853,7 +11917,7 @@ pub const Builder = struct {
const builtin_file_struct = unit.structs.get(builtin_file_struct_index);
const test_functions_name = "test_functions";
const test_functions_name_hash = try unit.processIdentifier(context, test_functions_name);
- const test_functions = builtin_file_struct.scope.scope.declarations.get(test_functions_name_hash).?;
+ const test_functions = builtin_file_struct.kind.@"struct".scope.scope.declarations.get(test_functions_name_hash).?;
const test_slice_type = test_functions.type;
const test_type = unit.types.get(test_slice_type).slice.child_type;
assert(test_functions.kind == .global);
@@ -10867,8 +11931,9 @@ pub const Builder = struct {
const struct_test_type = unit.types.get(test_type);
const test_type_struct = unit.structs.get(struct_test_type.@"struct");
- assert(test_type_struct.fields.length == 2);
- const first_field = unit.struct_fields.get(test_type_struct.fields.pointer[0]);
+ const struct_fields = test_type_struct.kind.@"struct".fields.slice();
+ assert(struct_fields.len == 2);
+ const first_field = unit.struct_fields.get(struct_fields[0]);
// const second_field = unit.struct_fields.get(test_type_struct.fields.items[1]);
var list = try UnpinnedArray(V.Comptime).initialize_with_capacity(context.my_allocator, unit.test_functions.length);
@@ -10938,7 +12003,6 @@ pub const Builder = struct {
pub const Enum = struct {
scope: Debug.Scope.Global,
fields: UnpinnedArray(Enum.Field.Index) = .{},
- backing_type: Type.Index,
pub const Field = struct {
value: usize,
@@ -10958,9 +12022,9 @@ pub const Unit = struct {
files: Debug.File.List = .{},
types: Type.List = .{},
structs: Struct.List = .{},
- unions: Type.Union.List = .{},
+ // unions: Type.Union.List = .{},
struct_fields: Struct.Field.List = .{},
- enums: Enum.List = .{},
+ // enums: Enum.List = .{},
enum_fields: Enum.Field.List = .{},
function_definitions: Function.Definition.List = .{},
blocks: Debug.Block.List = .{},
@@ -10975,8 +12039,6 @@ pub const Unit = struct {
constant_structs: V.Comptime.ConstantStruct.List = .{},
constant_arrays: V.Comptime.ConstantArray.List = .{},
constant_slices: V.Comptime.ConstantSlice.List = .{},
- errors: Type.Error.List = .{},
- error_sets: Type.Error.Set.List = .{},
error_fields: Type.Error.Field.List = .{},
token_buffer: Token.Buffer = .{},
node_lists: UnpinnedArray(UnpinnedArray(Node.Index)) = .{},
@@ -10991,7 +12053,9 @@ pub const Unit = struct {
slices: MyHashMap(Type.Slice, Type.Index) = .{},
arrays: MyHashMap(Type.Array, Type.Index) = .{},
integers: MyHashMap(Type.Integer, Type.Index) = .{},
+ error_unions: MyHashMap(Type.Error.Union.Descriptor, Type.Index) = .{},
global_array_constants: MyHashMap(V.Comptime.ConstantArray.Index, *Debug.Declaration.Global) = .{},
+ error_count: u32 = 0,
code_to_emit: MyHashMap(Function.Definition.Index, *Debug.Declaration.Global) = .{},
data_to_emit: UnpinnedArray(*Debug.Declaration.Global) = .{},
@@ -11009,146 +12073,191 @@ pub const Unit = struct {
.local = false,
},
},
+ scope_container_map: MyHashMap(*Debug.Scope, Type.Index) = .{},
root_package: *Package = undefined,
main_package: ?*Package = null,
+ all_errors: Type.Index = .null,
descriptor: Descriptor,
discard_identifiers: usize = 0,
anon_i: usize = 0,
anon_arr: usize = 0,
- fn dumpFunctionDefinition(unit: *Unit, function_definition_index: Function.Definition.Index) void {
- const function_definition = unit.function_definitions.get(function_definition_index);
- _ = function_definition; // autofix
+ fn dumpInstruction(instruction_index: Instruction.Index) !void {
+ try write(.ir, "%");
+ try dumpInt(Instruction.unwrap(instruction_index), 10, false);
+ }
- // for (function_definition.basic_blocks.slice()) |basic_block_index| {
- // const basic_block = unit.basic_blocks.get(basic_block_index);
- // // logln(.compilation, .ir, "[#{}]:", .{BasicBlock.unwrap(basic_block_index)});
- //
- // for (basic_block.instructions.slice()) |instruction_index| {
- // const instruction = unit.instructions.get(instruction_index);
- // // log(.compilation, .ir, " %{}: {s} ", .{ Instruction.unwrap(instruction_index), @tagName(instruction.*) });
- //
- // switch (instruction.*) {
- // .call => |call| {
- // switch (call.callable.value) {
- // .@"comptime" => |ct| switch (ct) {
- // .global => |global| {},//log(.compilation, .ir, "{s}(", .{unit.getIdentifier(global.declaration.name)}),
- // else => unreachable,
- // },
- // .runtime => |ii| log(.compilation, .ir, "%{}(", .{Instruction.unwrap(ii)}),
- // else => |t| @panic(@tagName(t)),
- // }
- //
- // for (call.arguments) |arg| {
- // switch (arg.value) {
- // .@"comptime" => log(.compilation, .ir, "comptime", .{}),
- // .runtime => |ii| log(.compilation, .ir, "%{}, ", .{Instruction.unwrap(ii)}),
- // else => |t| @panic(@tagName(t)),
- // }
- // }
- //
- // log(.compilation, .ir, ")", .{});
- // },
- // .insert_value => |insert_value| {
- // log(.compilation, .ir, "aggregate ", .{});
- // switch (insert_value.expression.value) {
- // .@"comptime" => log(.compilation, .ir, "comptime", .{}),
- // .runtime => |ii| log(.compilation, .ir, "%{}", .{Instruction.unwrap(ii)}),
- // else => unreachable,
- // }
- // log(.compilation, .ir, ", {}, ", .{insert_value.index});
- // switch (insert_value.new_value.value) {
- // .@"comptime" => log(.compilation, .ir, "comptime", .{}),
- // .runtime => |ii| log(.compilation, .ir, "%{}", .{Instruction.unwrap(ii)}),
- // else => unreachable,
- // }
- // },
- // .extract_value => |extract_value| {
- // log(.compilation, .ir, "aggregate ", .{});
- // switch (extract_value.expression.value) {
- // .@"comptime" => log(.compilation, .ir, "comptime", .{}),
- // .runtime => |ii| log(.compilation, .ir, "%{}", .{Instruction.unwrap(ii)}),
- // else => unreachable,
- // }
- // log(.compilation, .ir, ", {}", .{extract_value.index});
- // },
- // .get_element_pointer => |gep| {
- // log(.compilation, .ir, "aggregate %{}, ", .{Instruction.unwrap(gep.pointer)});
- // switch (gep.index.value) {
- // .@"comptime" => log(.compilation, .ir, "comptime", .{}),
- // .runtime => |ii| log(.compilation, .ir, "%{}", .{Instruction.unwrap(ii)}),
- // else => unreachable,
- // }
- // },
- // .load => |load| {
- // switch (load.value.value) {
- // .@"comptime" => |ct| switch (ct) {
- // .global => |global| log(.compilation, .ir, "{s}", .{unit.getIdentifier(global.declaration.name)}),
- // else => |t| @panic(@tagName(t)),
- // },
- // .runtime => |ii| {
- // log(.compilation, .ir, "%{}", .{@intFromEnum(ii)});
- // },
- // else => unreachable,
- // }
- // },
- // .push_scope => |push_scope| {
- // log(.compilation, .ir, "0x{x} -> 0x{x}", .{ @as(u24, @truncate(@intFromPtr(push_scope.old))), @as(u24, @truncate(@intFromPtr(push_scope.new))) });
- // },
- // .pop_scope => |pop_scope| {
- // log(.compilation, .ir, "0x{x} <- 0x{x}", .{ @as(u24, @truncate(@intFromPtr(pop_scope.new))), @as(u24, @truncate(@intFromPtr(pop_scope.old))) });
- // },
- // .debug_checkpoint => |checkpoint| {
- // log(.compilation, .ir, "{}, {}", .{ checkpoint.line, checkpoint.column });
- // },
- // .argument_declaration => |arg| {
- // log(.compilation, .ir, "\"{s}\"", .{unit.getIdentifier(arg.declaration.name)});
- // },
- // .cast => |cast| {
- // log(.compilation, .ir, "{s}", .{@tagName(cast.id)});
- // },
- // .jump => |jump| {
- // log(.compilation, .ir, "[#{}]", .{BasicBlock.unwrap(jump.to)});
- // },
- // .branch => |branch| {
- // log(.compilation, .ir, "bool %{}, [#{}, #{}]", .{ Instruction.unwrap(branch.condition), BasicBlock.unwrap(branch.taken), BasicBlock.unwrap(branch.not_taken) });
- // },
- // .phi => |phi| {
- // for (phi.values.pointer[0..phi.values.length], phi.basic_blocks.pointer[0..phi.basic_blocks.length]) |value, bb| {
- // log(.compilation, .ir, "(%{}, #{}), ", .{ switch (value.value) {
- // .@"comptime" => 0xffff_ffff,
- // .runtime => |ii| @intFromEnum(ii),
- // else => unreachable,
- // }, @intFromEnum(bb) });
- // }
- // },
- // .integer_compare => |compare| {
- // log(.compilation, .ir, "{s} ", .{@tagName(compare.id)});
- // switch (compare.left.value) {
- // .@"comptime" => {
- // log(.compilation, .ir, "$comptime, ", .{});
- // },
- // .runtime => |ii| {
- // log(.compilation, .ir, "%{}, ", .{@intFromEnum(ii)});
- // },
- // else => unreachable,
- // }
- //
- // switch (compare.right.value) {
- // .@"comptime" => {
- // log(.compilation, .ir, "$comptime", .{});
- // },
- // .runtime => |ii| {
- // log(.compilation, .ir, "%{}", .{@intFromEnum(ii)});
- // },
- // else => unreachable,
- // }
- // },
- // else => {},
- // }
- // // logln(.compilation, .ir, "", .{});
- // }
- // }
+ fn dumpInt(value: u64, base: u8, signed: bool) !void {
+ var buffer: [65]u8 = undefined;
+ const formatted_int = format_int(&buffer, value, base, signed);
+ try write(.ir, formatted_int);
+ }
+
+ fn dumpBasicBlock(basic_block: BasicBlock.Index) !void {
+ try write(.ir, "#");
+ try dumpInt(BasicBlock.unwrap(basic_block), 10, false);
+ }
+
+ fn dumpFunctionDefinition(unit: *Unit, function_definition_index: Function.Definition.Index) !void {
+ const function_definition = unit.function_definitions.get(function_definition_index);
+
+ for (function_definition.basic_blocks.slice()) |basic_block_index| {
+ const basic_block = unit.basic_blocks.get(basic_block_index);
+ try write(.ir, "[");
+ try dumpBasicBlock(basic_block_index);
+ try write(.ir, "]:\n");
+
+ for (basic_block.instructions.slice()) |instruction_index| {
+ const instruction = unit.instructions.get(instruction_index);
+ try write(.ir, " ");
+ try dumpInstruction(instruction_index);
+ try write(.ir, ": ");
+ try write(.ir, @tagName(instruction.*));
+ try write(.ir, " ");
+
+ switch (instruction.*) {
+ .call => |call| {
+ switch (call.callable.value) {
+ .@"comptime" => |ct| switch (ct) {
+ .global => |global| {
+ _ = global; // autofix
+ }, //log(.compilation, .ir, "{s}(", .{unit.getIdentifier(global.declaration.name)}),
+ else => unreachable,
+ },
+ .runtime => |ii| try dumpInstruction(ii),
+ else => |t| @panic(@tagName(t)),
+ }
+
+ for (call.arguments) |arg| {
+ switch (arg.value) {
+ .@"comptime" => try write(.ir, "comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => |t| @panic(@tagName(t)),
+ }
+ }
+
+ try write(.ir, ")");
+ },
+ .insert_value => |insert_value| {
+ try write(.ir, "aggregate ");
+ switch (insert_value.expression.value) {
+ .@"comptime" => try write(.ir, "comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+
+ try write(.ir, ", ");
+ try dumpInt(insert_value.index, 10, false);
+ try write(.ir, ", ");
+ switch (insert_value.new_value.value) {
+ .@"comptime" => try write(.ir, "comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+ },
+ .extract_value => |extract_value| {
+ try write(.ir, "aggregate ");
+ switch (extract_value.expression.value) {
+ .@"comptime" => try write(.ir, "$comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+ try write(.ir, ", ");
+ try dumpInt(extract_value.index, 10, false);
+ },
+ .get_element_pointer => |gep| {
+ try write(.ir, "aggregate ");
+ try dumpInstruction(gep.pointer);
+ try write(.ir, ", ");
+ switch (gep.index.value) {
+ .@"comptime" => try write(.ir, "$comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+ },
+ .load => |load| {
+ switch (load.value.value) {
+ .@"comptime" => |ct| switch (ct) {
+ .global => |global| try write(.ir, unit.getIdentifier(global.declaration.name)),
+ else => |t| @panic(@tagName(t)),
+ },
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+ },
+ .push_scope => |push_scope| {
+ try dumpInt(@as(u24, @truncate(@intFromPtr(push_scope.old))), 16, false);
+ try write(.ir, " -> ");
+ try dumpInt(@as(u24, @truncate(@intFromPtr(push_scope.new))), 16, false);
+ },
+ .pop_scope => |pop_scope| {
+ try dumpInt(@as(u24, @truncate(@intFromPtr(pop_scope.new))), 16, false);
+ try write(.ir, " <- ");
+ try dumpInt(@as(u24, @truncate(@intFromPtr(pop_scope.old))), 16, false);
+ },
+ .debug_checkpoint => |checkpoint| {
+ try dumpInt(checkpoint.line, 10, false);
+ try write(.ir, ", ");
+ try dumpInt(checkpoint.column, 10, false);
+ },
+ .argument_declaration => |arg| {
+ try write(.ir, "\"");
+ try write(.ir, unit.getIdentifier(arg.declaration.name));
+ try write(.ir, "\"");
+ },
+ .cast => |cast| {
+ try write(.ir, @tagName(cast.id));
+ },
+ .jump => |jump| {
+ try write(.ir, "[#");
+ try dumpInt(BasicBlock.unwrap(jump.to), 10, false);
+ try write(.ir, "]");
+ },
+ .branch => |branch| {
+ try dumpInstruction(branch.condition);
+ try write(.ir, ", [");
+ try dumpInt(BasicBlock.unwrap(branch.taken), 10, false);
+ try write(.ir, ", ");
+ try dumpInt(BasicBlock.unwrap(branch.not_taken), 10, false);
+ try write(.ir, "]");
+ },
+ .phi => |phi| {
+ for (phi.values.pointer[0..phi.values.length], phi.basic_blocks.pointer[0..phi.basic_blocks.length]) |value, bb| {
+ try write(.ir, "(");
+ switch (value.value) {
+ .@"comptime" => try write(.ir, "$comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => |t| @panic(@tagName(t)),
+ }
+ try write(.ir, "#");
+ try dumpInt(@intFromEnum(bb), 10, false);
+ try write(.ir, ")");
+ }
+ },
+ .integer_compare => |compare| {
+ try write(.ir, @tagName(compare.id));
+ try write(.ir, " ");
+ switch (compare.left.value) {
+ .@"comptime" => try write(.ir, "$comptime "),
+ .runtime => |ii| {
+ try dumpInstruction(ii);
+ try write(.ir, ", ");
+ },
+ else => unreachable,
+ }
+
+ switch (compare.right.value) {
+ .@"comptime" => try write(.ir, "$comptime"),
+ .runtime => |ii| try dumpInstruction(ii),
+ else => unreachable,
+ }
+ },
+ else => {},
+ }
+ try write(.ir, "\n");
+ // logln(.compilation, .ir, "", .{});
+ }
+ }
}
fn getReturnType(unit: *Unit, function_index: Function.Definition.Index) Type.Index {
@@ -11164,6 +12273,7 @@ pub const Unit = struct {
};
var existing_enums = UnpinnedArray(Enum.Field.Index){};
+ // _ = existing_enums; // autofix
for (switch_case_node_list, 0..) |switch_case_node_index, index| {
const switch_case_node = unit.getNode(switch_case_node_index);
@@ -11174,7 +12284,7 @@ pub const Unit = struct {
var switch_case_group = UnpinnedArray(Enum.Field.Index){};
switch (switch_case_condition_node.id) {
- .enum_literal => {
+ .dot_literal => {
if (try unit.typeCheckEnumLiteral(context, Token.addInt(switch_case_condition_node.token, 1), enum_type)) |enum_field_index| {
for (existing_enums.slice()) |existing| {
if (enum_field_index == existing) {
@@ -11196,7 +12306,7 @@ pub const Unit = struct {
for (node_list) |case_condition_node_index| {
const case_condition_node = unit.getNode(case_condition_node_index);
switch (case_condition_node.id) {
- .enum_literal => {
+ .dot_literal => {
if (try unit.typeCheckEnumLiteral(context, Token.addInt(case_condition_node.token, 1), enum_type)) |enum_field_index| {
for (existing_enums.slice()) |existing| {
if (enum_field_index == existing) {
@@ -11292,35 +12402,10 @@ pub const Unit = struct {
return optional;
} else {
const optional_struct_index = try unit.structs.append(context.my_allocator, .{
- // TODO: this is going to bite my ass
- .scope = .{
- .scope = .{
- .file = @enumFromInt(0),
- .line = 0,
- .column = 0,
- // can this trick the compiler?
- .kind = .block,
- .local = true,
- .level = 0,
- },
+ .kind = .{
+ .optional = element_type,
},
- .backing_type = .null,
- .optional = true,
- .type = .null,
});
- const optional_struct = unit.structs.get(optional_struct_index);
- try optional_struct.fields.ensure_capacity(context.my_allocator, 2);
- const types = [_]Type.Index{ element_type, .bool };
- const names = [_][]const u8{ "payload", "is_valid" };
- for (types, names) |t, name| {
- const field = try unit.struct_fields.append(context.my_allocator, .{
- .name = try unit.processIdentifier(context, name),
- .type = t,
- .default_value = null,
- });
-
- optional_struct.fields.append_with_capacity(field);
- }
const optional_type_index = try unit.types.append(context.my_allocator, .{
.@"struct" = optional_struct_index,
@@ -11371,7 +12456,7 @@ pub const Unit = struct {
}
}
- fn getIntegerType(unit: *Unit, context: *const Context, integer: Type.Integer) !Type.Index {
+ pub fn getIntegerType(unit: *Unit, context: *const Context, integer: Type.Integer) !Type.Index {
const existing_type_index: Type.Index = switch (integer.bit_count) {
8 => switch (integer.signedness) {
.unsigned => .u8,
@@ -11469,15 +12554,17 @@ pub const Unit = struct {
}
}
- // for (unit.external_functions.values()) |function_declaration| {
- // logln(.compilation, .ir, "External function: {s}", .{unit.getIdentifier(function_declaration.declaration.name)});
- // }
-
for (unit.code_to_emit.values()) |function_declaration| {
const function_definition_index = function_declaration.initial_value.function_definition;
- // logln(.compilation, .ir, "Function #{} {s}", .{ Function.Definition.unwrap(function_definition_index), unit.getIdentifier(function_declaration.declaration.name) });
+ try write(.ir, "\nFunction #");
+ try dumpInt(Function.Definition.unwrap(function_definition_index), 16, false);
+ try write(.ir, ": ");
+ const function_name = unit.getIdentifier(function_declaration.declaration.name);
+ try write(.ir, function_name);
+ try write(.ir, "\n\n");
+ // logln(.compilation, .ir, "Function #{} {s}", .{ Function.Definition.unwrap(function_definition_index), });
- unit.dumpFunctionDefinition(function_definition_index);
+ try unit.dumpFunctionDefinition(function_definition_index);
}
}
@@ -11751,6 +12838,9 @@ pub const FixedKeyword = enum {
@"try",
@"orelse",
@"error",
+ @"and",
+ @"or",
+ bitfield,
};
pub const Descriptor = struct {
@@ -11827,35 +12917,34 @@ pub const Token = struct {
if (new_capacity > buffer.capacity) {
{
const line_byte_ptr: [*]u8 = @ptrCast(buffer.lines);
- const line_bytes = line_byte_ptr[0..buffer.length * @sizeOf(u32)];
+ const line_bytes = line_byte_ptr[0 .. buffer.length * @sizeOf(u32)];
const new_line_bytes = try allocator.reallocate(line_bytes, new_capacity * @sizeOf(u32), @alignOf(u32));
buffer.lines = @ptrCast(@alignCast(new_line_bytes));
}
{
const offset_byte_ptr: [*]u8 = @ptrCast(buffer.offsets);
- const offset_bytes = offset_byte_ptr[0..buffer.length * @sizeOf(u32)];
+ const offset_bytes = offset_byte_ptr[0 .. buffer.length * @sizeOf(u32)];
const new_offset_bytes = try allocator.reallocate(offset_bytes, new_capacity * @sizeOf(u32), @alignOf(u32));
buffer.offsets = @ptrCast(@alignCast(new_offset_bytes));
}
{
const length_byte_ptr: [*]u8 = @ptrCast(buffer.lengths);
- const length_bytes = length_byte_ptr[0..buffer.length * @sizeOf(u32)];
+ const length_bytes = length_byte_ptr[0 .. buffer.length * @sizeOf(u32)];
const new_length_bytes = try allocator.reallocate(length_bytes, new_capacity * @sizeOf(u32), @alignOf(u32));
buffer.lengths = @ptrCast(@alignCast(new_length_bytes));
}
{
const id_byte_ptr: [*]u8 = @ptrCast(buffer.ids);
- const id_bytes = id_byte_ptr[0..buffer.length * @sizeOf(Token.Id)];
+ const id_bytes = id_byte_ptr[0 .. buffer.length * @sizeOf(Token.Id)];
const new_id_bytes = try allocator.reallocate(id_bytes, new_capacity * @sizeOf(Token.Id), @alignOf(Token.Id));
buffer.ids = @ptrCast(@alignCast(new_id_bytes));
}
buffer.capacity = new_capacity;
}
-
}
pub fn getOffset(buffer: *const Buffer) Token.Index {
@@ -11897,6 +12986,7 @@ pub const Token = struct {
operator_optional,
operator_dollar,
operator_switch_case,
+ operator_backtick,
// Binary
operator_assign,
operator_add,
@@ -11956,6 +13046,9 @@ pub const Token = struct {
fixed_keyword_catch,
fixed_keyword_orelse,
fixed_keyword_error,
+ fixed_keyword_and,
+ fixed_keyword_or,
+ fixed_keyword_bitfield,
unused1,
unused2,
unused3,
@@ -12059,3 +13152,23 @@ pub const InlineAssembly = struct {
};
};
};
+
+const LogKind = enum {
+ parser,
+ ir,
+ llvm,
+ panic,
+};
+
+const should_log_map = std.EnumSet(LogKind).initMany(&.{
+ // .parser,
+ // .ir,
+ // .llvm,
+ .panic,
+});
+
+pub fn write(kind: LogKind, string: []const u8) !void {
+ if (should_log_map.contains(kind)) {
+ try std.io.getStdOut().writeAll(string);
+ }
+}
diff --git a/bootstrap/backend/llvm.zig b/bootstrap/backend/llvm.zig
index 48cf3e8..05cc5f2 100644
--- a/bootstrap/backend/llvm.zig
+++ b/bootstrap/backend/llvm.zig
@@ -2,6 +2,7 @@ const std = @import("std");
const Allocator = std.mem.Allocator;
const assert = std.debug.assert;
const Compilation = @import("../Compilation.zig");
+const write = Compilation.write;
// const log = Compilation.log;
// const logln = Compilation.logln;
const Module = Compilation.Module;
@@ -106,6 +107,7 @@ pub const LLVM = struct {
const createCast = bindings.NativityLLVMBuilderCreateCast;
const createBranch = bindings.NativityLLVMBuilderCreateBranch;
const createConditionalBranch = bindings.NativityLLVMBuilderCreateConditionalBranch;
+ const createSwitch = bindings.NativityLLVMBuilderCreateSwitch;
const createGEP = bindings.NativityLLVMBuilderCreateGEP;
const createStructGEP = bindings.NativityLLVMBuilderCreateStructGEP;
const createICmp = bindings.NativityLLVMBuilderCreateICmp;
@@ -812,6 +814,12 @@ pub const LLVM = struct {
}
};
+ pub const Switch = opaque {
+ fn toValue(this: *@This()) *Value {
+ return @ptrCast(this);
+ }
+ };
+
pub const Ret = opaque {
fn toValue(this: *@This()) *Value {
return @ptrCast(this);
@@ -1139,6 +1147,8 @@ pub const LLVM = struct {
fn toValue(this: *@This()) *Value {
return @ptrCast(this);
}
+
+ const toInt = bindings.NativityLLVMConstantToInt;
};
pub const InlineAssembly = opaque {
@@ -1179,10 +1189,10 @@ pub const LLVM = struct {
// TODO: ABI
.integer,
.pointer,
- .@"enum",
+ // .@"enum",
.@"struct",
.slice,
- .bool,
+ // .bool,
=> parameter_types.append_with_capacity(try llvm.getType(unit, context, argument_type_index)),
else => |t| @panic(@tagName(t)),
}
@@ -1192,14 +1202,12 @@ pub const LLVM = struct {
const llvm_function_type = LLVM.Context.getFunctionType(llvm_return_type, parameter_types.pointer, parameter_types.length, is_var_args) orelse return Type.Error.function;
break :blk llvm_function_type.toType();
},
- .bool => blk: {
- const bit_count = 1;
- const llvm_integer_type = llvm.context.getIntegerType(bit_count) orelse return Type.Error.integer;
- break :blk llvm_integer_type.toType();
- },
- .integer => |integer| blk: {
- const llvm_integer_type = llvm.context.getIntegerType(integer.bit_count) orelse return Type.Error.integer;
- break :blk llvm_integer_type.toType();
+ .integer => |integer| switch (integer.kind) {
+ .comptime_int => unreachable,
+ else => blk: {
+ const llvm_integer_type = llvm.context.getIntegerType(integer.bit_count) orelse return Type.Error.integer;
+ break :blk llvm_integer_type.toType();
+ },
},
.pointer => {
if (llvm.pointer_type) |pointer_type| {
@@ -1216,14 +1224,6 @@ pub const LLVM = struct {
const void_type = llvm.context.getVoidType() orelse return Type.Error.void;
break :blk void_type;
},
- .@"enum" => |enum_index| blk: {
- const enum_type = unit.enums.get(enum_index);
- const field_count = enum_type.fields.length;
- const bit_count = @bitSizeOf(@TypeOf(field_count)) - @clz(field_count);
- // const real_bit_count: u32 = if (bit_count <= 8) 8 else if (bit_count <= 16) 16 else if (bit_count <= 32) 32 else if (bit_count <= 64) 64 else unreachable;
- const llvm_integer_type = llvm.context.getIntegerType(bit_count) orelse return Type.Error.integer;
- break :blk llvm_integer_type.toType();
- },
.slice => |slice| blk: {
const llvm_pointer_type = try llvm.getType(unit, context, slice.child_pointer_type);
const llvm_usize_type = try llvm.getType(unit, context, .usize);
@@ -1232,28 +1232,40 @@ pub const LLVM = struct {
const struct_type = llvm.context.getStructType(&slice_types, slice_types.len, is_packed) orelse return Type.Error.@"struct";
break :blk struct_type.toType();
},
- .@"struct" => |struct_type_index| blk: {
- const sema_struct_type = unit.structs.get(struct_type_index);
- switch (sema_struct_type.backing_type) {
- else => {
- const backing_integer_type = try llvm.getType(unit, context, sema_struct_type.backing_type);
- break :blk backing_integer_type;
- },
- .null => {
- var field_type_list = try UnpinnedArray(*LLVM.Type).initialize_with_capacity(context.my_allocator, sema_struct_type.fields.length);
- for (sema_struct_type.fields.slice()) |sema_field_index| {
- const sema_field = unit.struct_fields.get(sema_field_index);
- const llvm_type = try llvm.getType(unit, context, sema_field.type);
- field_type_list.append_with_capacity(llvm_type);
- }
+ .@"struct" => |struct_type_index| switch (unit.structs.get(struct_type_index).kind) {
+ .error_union => |error_union| try llvm.getType(unit, context, error_union.abi),
+ .raw_error_union => |error_union_type_index| blk: {
+ const error_union_type = try llvm.getType(unit, context, error_union_type_index);
+ const boolean_type = try llvm.getType(unit, context, .bool);
+ const types = [2]*LLVM.Type{ error_union_type, boolean_type };
+ const is_packed = false;
+ const struct_type = llvm.context.getStructType(&types, types.len, is_packed) orelse return Type.Error.@"struct";
+ break :blk struct_type.toType();
+ },
+ .abi_compatible_error_union => |error_union| blk: {
+ const error_union_type = try llvm.getType(unit, context, error_union.type);
+ const padding_type = try llvm.getType(unit, context, error_union.padding);
+ const boolean_type = try llvm.getType(unit, context, .bool);
+ const types = [3]*LLVM.Type{ error_union_type, padding_type, boolean_type };
+ const is_packed = false;
+ const struct_type = llvm.context.getStructType(&types, types.len, is_packed) orelse return Type.Error.@"struct";
+ break :blk struct_type.toType();
+ },
+ .@"struct" => |*sema_struct_type| blk: {
+ var field_type_list = try UnpinnedArray(*LLVM.Type).initialize_with_capacity(context.my_allocator, sema_struct_type.fields.length);
+ for (sema_struct_type.fields.slice()) |sema_field_index| {
+ const sema_field = unit.struct_fields.get(sema_field_index);
+ const llvm_type = try llvm.getType(unit, context, sema_field.type);
+ field_type_list.append_with_capacity(llvm_type);
+ }
- // TODO:
- const is_packed = false;
- const struct_type = llvm.context.getStructType(field_type_list.pointer, field_type_list.length, is_packed) orelse return Type.Error.@"struct";
+ // TODO:
+ const is_packed = false;
+ const struct_type = llvm.context.getStructType(field_type_list.pointer, field_type_list.length, is_packed) orelse return Type.Error.@"struct";
- break :blk struct_type.toType();
- },
- }
+ break :blk struct_type.toType();
+ },
+ else => |t| @panic(@tagName(t)),
},
.array => |array| blk: {
const element_type = try llvm.getType(unit, context, array.type);
@@ -1264,39 +1276,6 @@ pub const LLVM = struct {
const array_type = LLVM.Type.Array.get(element_type, array.count + @intFromBool(extra_element)) orelse return Type.Error.array;
break :blk array_type.toType();
},
- .error_union => |error_union| {
- const error_type = try llvm.getType(unit, context, error_union.@"error");
- const payload_type = try llvm.getType(unit, context, error_union.type);
- const payload_type_size = unit.types.get(error_union.type).getBitSize(unit);
-
- switch (payload_type_size) {
- 0 => {
- const integer_type = llvm.context.getIntegerType(31) orelse unreachable;
- const boolean_type = try llvm.getType(unit, context, .bool);
- const types = [2]*LLVM.Type{ integer_type.toType(), boolean_type };
- const is_packed = false;
- const struct_type = llvm.context.getStructType(&types, types.len, is_packed) orelse return Type.Error.@"struct";
- return struct_type.toType();
- },
- else => unreachable,
- }
- _ = error_type;
- _ = payload_type;
- unreachable;
- },
- .error_set => |error_set_index| b: {
- const error_set = unit.error_sets.get(error_set_index);
- if (error_set.values.length > 0) {
- unreachable;
- } else {
- const integer_type = llvm.context.getIntegerType(32) orelse unreachable;
- break :b integer_type.toType();
- }
- },
- .@"error" => b: {
- const integer_type = llvm.context.getIntegerType(31) orelse unreachable;
- break :b integer_type.toType();
- },
else => |t| @panic(@tagName(t)),
};
@@ -1331,19 +1310,23 @@ pub const LLVM = struct {
} else {
const sema_type = unit.types.get(sema_type_index);
const result: []const u8 = switch (sema_type.*) {
- .integer => |integer| b: {
- var buffer: [65]u8 = undefined;
- const format = data_structures.format_int(&buffer, integer.bit_count, 10, false);
- const slice_ptr = format.ptr - 1;
- const slice = slice_ptr[0..format.len + 1];
- slice[0] = switch (integer.signedness) {
- .signed => 's',
- .unsigned => 'u',
- };
-
- break :b try context.my_allocator.duplicate_bytes(slice);
+ .integer => |integer| switch (integer.kind) {
+ .materialized_int => b: {
+ var buffer: [65]u8 = undefined;
+ const format = data_structures.format_int(&buffer, integer.bit_count, 10, false);
+ const slice_ptr = format.ptr - 1;
+ const slice = slice_ptr[0 .. format.len + 1];
+ slice[0] = switch (integer.signedness) {
+ .signed => 's',
+ .unsigned => 'u',
+ };
+
+ break :b try context.my_allocator.duplicate_bytes(slice);
+ },
+ .bool => "bool",
+ else => |t| @panic(@tagName(t)),
},
- .bool => "bool",
+ // .bool => "bool",
.pointer => |pointer| b: {
var name = UnpinnedArray(u8){};
try name.append(context.my_allocator, '&');
@@ -1355,25 +1338,9 @@ pub const LLVM = struct {
try name.append_slice(context.my_allocator, element_type_name);
break :b name.slice();
},
- .@"struct" => |struct_index| b: {
- const struct_type = unit.structs.get(struct_index);
- if (struct_type.optional) {
- var name = UnpinnedArray(u8){};
- try name.append(context.my_allocator, '?');
-
- const element_type_name = try llvm.renderTypeName(unit, context, unit.struct_fields.get(struct_type.fields.pointer[0]).type);
- try name.append_slice(context.my_allocator, element_type_name);
-
- break :b name.slice();
- } else {
- if (unit.type_declarations.get(sema_type_index)) |type_declaration| {
- _ = type_declaration; // autofix
- unreachable;
- } else {
- // TODO: fix
- break :b "anon_struct";
- }
- }
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => "anon_struct", // TODO:
+ else => |t| @panic(@tagName(t)),
},
// TODO: termination
.slice => |slice| b: {
@@ -1454,305 +1421,87 @@ pub const LLVM = struct {
return struct_type;
}
- fn getDebugType(llvm: *LLVM, unit: *Compilation.Unit, context: *const Compilation.Context, sema_type_index: Compilation.Type.Index) !*LLVM.DebugInfo.Type {
- if (false) {
- const gop = try llvm.debug_type_map.getOrput(context.my_allocator, sema_type_index);
- if (gop.found_existing) {
- const result = gop.value_ptr.*;
- assert(@intFromPtr(result) != 0xaaaa_aaaa_aaaa_aaaa);
- return result;
- } else {
- const name = try llvm.renderTypeName(unit, context, sema_type_index);
- const sema_type = unit.types.get(sema_type_index);
- const result = switch (sema_type.*) {
- .integer => |integer| b: {
- const dwarf_encoding: LLVM.DebugInfo.AttributeType = switch (integer.signedness) {
- .unsigned => .unsigned,
- .signed => .signed,
- };
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
- const integer_type = llvm.debug_info_builder.createBasicType(name.ptr, name.len, integer.bit_count, dwarf_encoding, flags) orelse unreachable;
- break :b integer_type;
- },
- .pointer => |pointer| b: {
- const element_type = try llvm.getDebugType(unit, context, pointer.type);
- const pointer_width = @bitSizeOf(usize);
- const alignment = 3;
- const pointer_type = llvm.debug_info_builder.createPointerType(element_type, pointer_width, alignment, name.ptr, name.len) orelse unreachable;
- break :b pointer_type.toType();
- },
- .bool => b: {
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
- const boolean_type = llvm.debug_info_builder.createBasicType("bool", "bool".len, 1, .boolean, flags) orelse unreachable;
- break :b boolean_type;
- },
- .@"struct" => |struct_index| b: {
- const sema_struct_type = unit.structs.get(struct_index);
- const file = try llvm.getDebugInfoFile(unit, context, sema_struct_type.scope.scope.file);
- const line = 0;
+ fn getDebugStructType(llvm: *LLVM, unit: *Compilation.Unit, context: *const Compilation.Context, sema_type_index: Compilation.Type.Index, scope: *const Compilation.Debug.Scope, fields: []const Compilation.Struct.Field.Index, name: []const u8) !*LLVM.DebugInfo.Type {
+ const file = try llvm.getDebugInfoFile(unit, context, scope.file);
+ const line = 0;
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
+ const flags = LLVM.DebugInfo.Node.Flags{
+ .visibility = .none,
+ .forward_declaration = false,
+ .apple_block = false,
+ .block_by_ref_struct = false,
+ .virtual = false,
+ .artificial = false,
+ .explicit = false,
+ .prototyped = false,
+ .objective_c_class_complete = false,
+ .object_pointer = false,
+ .vector = false,
+ .static_member = false,
+ .lvalue_reference = false,
+ .rvalue_reference = false,
+ .reserved = false,
+ .inheritance = .none,
+ .introduced_virtual = false,
+ .bit_field = false,
+ .no_return = false,
+ .type_pass_by_value = false,
+ .type_pass_by_reference = false,
+ .enum_class = false,
+ .thunk = false,
+ .non_trivial = false,
+ .big_endian = false,
+ .little_endian = false,
+ .all_calls_described = false,
+ };
- var bit_size: u32 = 0;
- for (sema_struct_type.fields.items) |struct_field_index| {
- const struct_field = unit.struct_fields.get(struct_field_index);
- const struct_field_type = unit.types.get(struct_field.type);
- const struct_field_bit_size = struct_field_type.getBitSize(unit);
- bit_size += struct_field_bit_size;
- }
+ var bit_size: u32 = 0;
+ for (fields) |struct_field_index| {
+ const struct_field = unit.struct_fields.get(struct_field_index);
+ const struct_field_type = unit.types.get(struct_field.type);
+ const struct_field_bit_size = struct_field_type.getBitSize(unit);
+ bit_size += struct_field_bit_size;
+ }
- const struct_type = llvm.createDebugStructType(.{
- .scope = null,
- .name = name,
- .file = file,
- .line = line,
- .bitsize = bit_size,
- .alignment = 0,
- .field_types = &.{},
- .forward_declaration = null,
- });
- gop.value_ptr.* = struct_type.toType();
- var field_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.allocator, sema_struct_type.fields.items.len);
- bit_size = 0;
- for (sema_struct_type.fields.items) |struct_field_index| {
- const struct_field = unit.struct_fields.get(struct_field_index);
- const struct_field_type = unit.types.get(struct_field.type);
- const struct_field_bit_size = struct_field_type.getBitSize(unit);
- const field_type = try llvm.getDebugType(unit, context, struct_field.type);
- //TODO: fix
- const alignment = struct_field_bit_size;
- const member_type = llvm.debug_info_builder.createMemberType(null, "", "".len, file, 0, struct_field_bit_size, alignment, bit_size, flags, field_type).toType();
- field_types.append_with_capacity(member_type);
- bit_size += struct_field_bit_size;
- }
+ const struct_type = llvm.createDebugStructType(.{
+ .scope = null,
+ .name = name,
+ .file = file,
+ .line = line,
+ .bitsize = bit_size,
+ .alignment = 0,
+ .field_types = &.{},
+ .forward_declaration = null,
+ });
+ try llvm.debug_type_map.put_no_clobber(context.my_allocator, sema_type_index, struct_type.toType());
+ var field_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.my_allocator, @intCast(fields.len));
+ bit_size = 0;
+ for (fields) |struct_field_index| {
+ const struct_field = unit.struct_fields.get(struct_field_index);
+ const struct_field_type = unit.types.get(struct_field.type);
+ const struct_field_bit_size = struct_field_type.getBitSize(unit);
+ const field_type = try llvm.getDebugType(unit, context, struct_field.type);
+ //TODO: fix
+ const alignment = struct_field_bit_size;
+ const member_type = llvm.debug_info_builder.createMemberType(null, "", "".len, file, 0, struct_field_bit_size, alignment, bit_size, flags, field_type).toType();
+ field_types.append_with_capacity(member_type);
+ bit_size += struct_field_bit_size;
+ }
- llvm.debug_info_builder.replaceCompositeTypes(struct_type, field_types.items.ptr, field_types.items.len);
- break :b struct_type.toType();
- },
- .@"enum" => |enum_index| b: {
- const enum_type = unit.enums.get(enum_index);
- var enumerators = try UnpinnedArray(*LLVM.DebugInfo.Type.Enumerator).initialize_with_capacity(context.allocator, enum_type.fields.items.len);
- for (enum_type.fields.items) |enum_field_index| {
- const enum_field = unit.enum_fields.get(enum_field_index);
- const enum_field_name = unit.getIdentifier(enum_field.name);
+ llvm.debug_info_builder.replaceCompositeTypes(struct_type, field_types.pointer, field_types.length);
+ return struct_type.toType();
+ }
- const is_unsigned = true;
- const enumerator = llvm.debug_info_builder.createEnumerator(enum_field_name.ptr, enum_field_name.len, enum_field.value, is_unsigned) orelse unreachable;
- enumerators.append_with_capacity(enumerator);
- }
-
- const type_declaration = unit.type_declarations.get(sema_type_index).?;
- const file = try llvm.getDebugInfoFile(unit, context, type_declaration.declaration.scope.file);
- const bit_size = unit.types.get(enum_type.backing_type).integer.bit_count;
- const backing_type = try llvm.getDebugType(unit, context, enum_type.backing_type);
- const alignment = 0;
- const line = type_declaration.declaration.line + 1;
- const scope = try llvm.getScope(unit, context, enum_type.scope.scope.parent.?);
- const enumeration_type = llvm.debug_info_builder.createEnumerationType(scope, name.ptr, name.len, file, line, bit_size, alignment, enumerators.items.ptr, enumerators.items.len, backing_type) orelse unreachable;
- break :b enumeration_type.toType();
- },
- .slice => |slice| b: {
- const pointer_type = try llvm.getDebugType(unit, context, slice.child_pointer_type);
- const len_type = try llvm.getDebugType(unit, context, .usize);
- const scope = null;
- const file = null;
- const line = 1;
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
-
- const types = [2]*LLVM.DebugInfo.Type{ pointer_type, len_type };
- const member_types = [2]*LLVM.DebugInfo.Type{
- llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 0, flags, types[0]).toType(),
- llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 64, flags, types[1]).toType(),
- };
- const struct_type = llvm.createDebugStructType(.{
- .scope = scope,
- .name = name,
- .file = file,
- .line = line,
- .bitsize = 2 * @bitSizeOf(usize),
- .alignment = @alignOf(usize),
- .field_types = &member_types,
- .forward_declaration = null,
- });
- break :b struct_type.toType();
- },
- .array => |array| b: {
- // TODO: compute
- const byte_size = 1; // array.count * unit.types.get(array.element_type).getSize();
- const bit_size = byte_size * 8;
- const element_type = try llvm.getDebugType(unit, context, array.type);
- const array_type = llvm.debug_info_builder.createArrayType(bit_size, 1, element_type, array.count) orelse unreachable;
- break :b array_type.toType();
- },
-
- .function => |function_prototype_index| b: {
- const function_prototype = unit.function_prototypes.get(function_prototype_index);
- var parameter_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.allocator, function_prototype.argument_types.len);
- for (function_prototype.argument_types) |argument_type_index| {
- const argument_type = try llvm.getDebugType(unit, context, argument_type_index);
- parameter_types.append_with_capacity(argument_type);
- }
- const subroutine_type_flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
- const subroutine_type_calling_convention = LLVM.DebugInfo.CallingConvention.none;
- const subroutine_type = llvm.debug_info_builder.createSubroutineType(parameter_types.items.ptr, parameter_types.items.len, subroutine_type_flags, subroutine_type_calling_convention) orelse unreachable;
- break :b subroutine_type.toType();
- },
- else => |t| @panic(@tagName(t)),
- };
-
- try llvm.debug_type_map.put(context.my_allocator, sema_type_index, result);
-
- assert(@intFromPtr(result) != 0xaaaa_aaaa_aaaa_aaaa);
- return result;
- }
+ fn getDebugType(llvm: *LLVM, unit: *Compilation.Unit, context: *const Compilation.Context, sema_type_index: Compilation.Type.Index) anyerror!*LLVM.DebugInfo.Type {
+ if (llvm.debug_type_map.get(sema_type_index)) |result| {
+ return result;
} else {
- if (llvm.debug_type_map.get(sema_type_index)) |result| {
- return result;
- } else {
- const name = try llvm.renderTypeName(unit, context, sema_type_index);
- const sema_type = unit.types.get(sema_type_index);
- const result = switch (sema_type.*) {
- .integer => |integer| b: {
+ const name = try llvm.renderTypeName(unit, context, sema_type_index);
+ const sema_type = unit.types.get(sema_type_index);
+ const result = switch (sema_type.*) {
+ .integer => |*integer| switch (integer.kind) {
+ .bitfield => |*bitfield| try llvm.getDebugStructType(unit, context, sema_type_index, &bitfield.scope.scope, bitfield.fields.slice(), name),
+ .materialized_int => b: {
const dwarf_encoding: LLVM.DebugInfo.AttributeType = switch (integer.signedness) {
.unsigned => .unsigned,
.signed => .signed,
@@ -1789,13 +1538,6 @@ pub const LLVM = struct {
const integer_type = llvm.debug_info_builder.createBasicType(name.ptr, name.len, integer.bit_count, dwarf_encoding, flags) orelse unreachable;
break :b integer_type;
},
- .pointer => |pointer| b: {
- const element_type = try llvm.getDebugType(unit, context, pointer.type);
- const pointer_width = @bitSizeOf(usize);
- const alignment = 3;
- const pointer_type = llvm.debug_info_builder.createPointerType(element_type, pointer_width, alignment, name.ptr, name.len) orelse unreachable;
- break :b pointer_type.toType();
- },
.bool => b: {
const flags = LLVM.DebugInfo.Node.Flags{
.visibility = .none,
@@ -1829,79 +1571,7 @@ pub const LLVM = struct {
const boolean_type = llvm.debug_info_builder.createBasicType("bool", "bool".len, 1, .boolean, flags) orelse unreachable;
break :b boolean_type;
},
- .@"struct" => |struct_index| b: {
- const sema_struct_type = unit.structs.get(struct_index);
- const file = try llvm.getDebugInfoFile(unit, context, sema_struct_type.scope.scope.file);
- const line = 0;
-
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
-
- var bit_size: u32 = 0;
- for (sema_struct_type.fields.slice()) |struct_field_index| {
- const struct_field = unit.struct_fields.get(struct_field_index);
- const struct_field_type = unit.types.get(struct_field.type);
- const struct_field_bit_size = struct_field_type.getBitSize(unit);
- bit_size += struct_field_bit_size;
- }
-
- const struct_type = llvm.createDebugStructType(.{
- .scope = null,
- .name = name,
- .file = file,
- .line = line,
- .bitsize = bit_size,
- .alignment = 0,
- .field_types = &.{},
- .forward_declaration = null,
- });
- try llvm.debug_type_map.put_no_clobber(context.my_allocator, sema_type_index, struct_type.toType());
- var field_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.my_allocator, sema_struct_type.fields.length);
- bit_size = 0;
- for (sema_struct_type.fields.slice()) |struct_field_index| {
- const struct_field = unit.struct_fields.get(struct_field_index);
- const struct_field_type = unit.types.get(struct_field.type);
- const struct_field_bit_size = struct_field_type.getBitSize(unit);
- const field_type = try llvm.getDebugType(unit, context, struct_field.type);
- //TODO: fix
- const alignment = struct_field_bit_size;
- const member_type = llvm.debug_info_builder.createMemberType(null, "", "".len, file, 0, struct_field_bit_size, alignment, bit_size, flags, field_type).toType();
- field_types.append_with_capacity(member_type);
- bit_size += struct_field_bit_size;
- }
-
- llvm.debug_info_builder.replaceCompositeTypes(struct_type, field_types.pointer, field_types.length);
- break :b struct_type.toType();
- },
- .@"enum" => |enum_index| b: {
- const enum_type = unit.enums.get(enum_index);
+ .@"enum" => |*enum_type| b: {
var enumerators = try UnpinnedArray(*LLVM.DebugInfo.Type.Enumerator).initialize_with_capacity(context.my_allocator, enum_type.fields.length);
for (enum_type.fields.slice()) |enum_field_index| {
const enum_field = unit.enum_fields.get(enum_field_index);
@@ -1914,124 +1584,166 @@ pub const LLVM = struct {
const type_declaration = unit.type_declarations.get(sema_type_index).?;
const file = try llvm.getDebugInfoFile(unit, context, type_declaration.declaration.scope.file);
- const bit_size = unit.types.get(enum_type.backing_type).integer.bit_count;
- const backing_type = try llvm.getDebugType(unit, context, enum_type.backing_type);
+ const bit_size = integer.bit_count;
+ const sema_backing_type = try unit.getIntegerType(context, .{
+ .kind = .materialized_int,
+ .bit_count = integer.bit_count,
+ .signedness = integer.signedness,
+ });
+ const backing_type = try llvm.getDebugType(unit, context, sema_backing_type);
const alignment = 0;
const line = type_declaration.declaration.line + 1;
const scope = try llvm.getScope(unit, context, enum_type.scope.scope.parent.?);
const enumeration_type = llvm.debug_info_builder.createEnumerationType(scope, name.ptr, name.len, file, line, bit_size, alignment, enumerators.pointer, enumerators.length, backing_type) orelse unreachable;
break :b enumeration_type.toType();
},
- .slice => |slice| b: {
- const pointer_type = try llvm.getDebugType(unit, context, slice.child_pointer_type);
- const len_type = try llvm.getDebugType(unit, context, .usize);
- const scope = null;
- const file = null;
- const line = 1;
- const flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
+ .@"error" => |*error_type| b: {
+ var enumerators = try UnpinnedArray(*LLVM.DebugInfo.Type.Enumerator).initialize_with_capacity(context.my_allocator, error_type.fields.length);
+ for (error_type.fields.slice()) |error_field_index| {
+ const error_field = unit.error_fields.get(error_field_index);
+ const error_field_name = unit.getIdentifier(error_field.name);
- const types = [2]*LLVM.DebugInfo.Type{ pointer_type, len_type };
- const member_types = [2]*LLVM.DebugInfo.Type{
- llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 0, flags, types[0]).toType(),
- llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 64, flags, types[1]).toType(),
- };
- const struct_type = llvm.createDebugStructType(.{
- .scope = scope,
- .name = name,
- .file = file,
- .line = line,
- .bitsize = 2 * @bitSizeOf(usize),
- .alignment = @alignOf(usize),
- .field_types = &member_types,
- .forward_declaration = null,
- });
- break :b struct_type.toType();
- },
- .array => |array| b: {
- // TODO: compute
- const byte_size = 1; // array.count * unit.types.get(array.element_type).getSize();
- const bit_size = byte_size * 8;
- const element_type = try llvm.getDebugType(unit, context, array.type);
- const array_type = llvm.debug_info_builder.createArrayType(bit_size, 1, element_type, array.count) orelse unreachable;
- break :b array_type.toType();
- },
-
- .function => |function_prototype_index| b: {
- const function_prototype = unit.function_prototypes.get(function_prototype_index);
- var parameter_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.my_allocator, @intCast(function_prototype.argument_types.len));
- for (function_prototype.argument_types) |argument_type_index| {
- const argument_type = try llvm.getDebugType(unit, context, argument_type_index);
- parameter_types.append_with_capacity(argument_type);
+ const is_unsigned = true;
+ const enumerator = llvm.debug_info_builder.createEnumerator(error_field_name.ptr, error_field_name.len, error_field.value, is_unsigned) orelse unreachable;
+ enumerators.append_with_capacity(enumerator);
}
- const subroutine_type_flags = LLVM.DebugInfo.Node.Flags{
- .visibility = .none,
- .forward_declaration = false,
- .apple_block = false,
- .block_by_ref_struct = false,
- .virtual = false,
- .artificial = false,
- .explicit = false,
- .prototyped = false,
- .objective_c_class_complete = false,
- .object_pointer = false,
- .vector = false,
- .static_member = false,
- .lvalue_reference = false,
- .rvalue_reference = false,
- .reserved = false,
- .inheritance = .none,
- .introduced_virtual = false,
- .bit_field = false,
- .no_return = false,
- .type_pass_by_value = false,
- .type_pass_by_reference = false,
- .enum_class = false,
- .thunk = false,
- .non_trivial = false,
- .big_endian = false,
- .little_endian = false,
- .all_calls_described = false,
- };
- const subroutine_type_calling_convention = LLVM.DebugInfo.CallingConvention.none;
- const subroutine_type = llvm.debug_info_builder.createSubroutineType(parameter_types.pointer, parameter_types.length, subroutine_type_flags, subroutine_type_calling_convention) orelse unreachable;
- break :b subroutine_type.toType();
+
+ const type_declaration = unit.type_declarations.get(sema_type_index).?;
+ const file = try llvm.getDebugInfoFile(unit, context, type_declaration.declaration.scope.file);
+ const bit_size = integer.bit_count;
+ const sema_backing_type = try unit.getIntegerType(context, .{
+ .kind = .materialized_int,
+ .bit_count = integer.bit_count,
+ .signedness = integer.signedness,
+ });
+ const backing_type = try llvm.getDebugType(unit, context, sema_backing_type);
+ const alignment = 0;
+ const line = type_declaration.declaration.line + 1;
+ const scope = try llvm.getScope(unit, context, error_type.scope.scope.parent.?);
+ const enumeration_type = llvm.debug_info_builder.createEnumerationType(scope, name.ptr, name.len, file, line, bit_size, alignment, enumerators.pointer, enumerators.length, backing_type) orelse unreachable;
+ break :b enumeration_type.toType();
},
else => |t| @panic(@tagName(t)),
- };
+ },
+ .@"struct" => |struct_index| switch (unit.structs.get(struct_index).kind) {
+ .@"struct" => |*sema_struct_type| try llvm.getDebugStructType(unit, context, sema_type_index, &sema_struct_type.scope.scope, sema_struct_type.fields.slice(), name),
+ else => |t| @panic(@tagName(t)),
+ },
+ .pointer => |pointer| b: {
+ const element_type = try llvm.getDebugType(unit, context, pointer.type);
+ const pointer_width = @bitSizeOf(usize);
+ const alignment = 3;
+ const pointer_type = llvm.debug_info_builder.createPointerType(element_type, pointer_width, alignment, name.ptr, name.len) orelse unreachable;
+ break :b pointer_type.toType();
+ },
+ .slice => |slice| b: {
+ const pointer_type = try llvm.getDebugType(unit, context, slice.child_pointer_type);
+ const len_type = try llvm.getDebugType(unit, context, .usize);
+ const scope = null;
+ const file = null;
+ const line = 1;
+ const flags = LLVM.DebugInfo.Node.Flags{
+ .visibility = .none,
+ .forward_declaration = false,
+ .apple_block = false,
+ .block_by_ref_struct = false,
+ .virtual = false,
+ .artificial = false,
+ .explicit = false,
+ .prototyped = false,
+ .objective_c_class_complete = false,
+ .object_pointer = false,
+ .vector = false,
+ .static_member = false,
+ .lvalue_reference = false,
+ .rvalue_reference = false,
+ .reserved = false,
+ .inheritance = .none,
+ .introduced_virtual = false,
+ .bit_field = false,
+ .no_return = false,
+ .type_pass_by_value = false,
+ .type_pass_by_reference = false,
+ .enum_class = false,
+ .thunk = false,
+ .non_trivial = false,
+ .big_endian = false,
+ .little_endian = false,
+ .all_calls_described = false,
+ };
- try llvm.debug_type_map.put(context.my_allocator, sema_type_index, result);
+ const types = [2]*LLVM.DebugInfo.Type{ pointer_type, len_type };
+ const member_types = [2]*LLVM.DebugInfo.Type{
+ llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 0, flags, types[0]).toType(),
+ llvm.debug_info_builder.createMemberType(null, "", "".len, null, 0, 64, 3, 64, flags, types[1]).toType(),
+ };
+ const struct_type = llvm.createDebugStructType(.{
+ .scope = scope,
+ .name = name,
+ .file = file,
+ .line = line,
+ .bitsize = 2 * @bitSizeOf(usize),
+ .alignment = @alignOf(usize),
+ .field_types = &member_types,
+ .forward_declaration = null,
+ });
+ break :b struct_type.toType();
+ },
+ .array => |array| b: {
+ // TODO: compute
+ const byte_size = 1; // array.count * unit.types.get(array.element_type).getSize();
+ const bit_size = byte_size * 8;
+ const element_type = try llvm.getDebugType(unit, context, array.type);
+ const array_type = llvm.debug_info_builder.createArrayType(bit_size, 1, element_type, array.count) orelse unreachable;
+ break :b array_type.toType();
+ },
+ .function => |function_prototype_index| b: {
+ const function_prototype = unit.function_prototypes.get(function_prototype_index);
+ var parameter_types = try UnpinnedArray(*LLVM.DebugInfo.Type).initialize_with_capacity(context.my_allocator, @intCast(function_prototype.argument_types.len));
+ for (function_prototype.argument_types) |argument_type_index| {
+ const argument_type = try llvm.getDebugType(unit, context, argument_type_index);
+ parameter_types.append_with_capacity(argument_type);
+ }
+ const subroutine_type_flags = LLVM.DebugInfo.Node.Flags{
+ .visibility = .none,
+ .forward_declaration = false,
+ .apple_block = false,
+ .block_by_ref_struct = false,
+ .virtual = false,
+ .artificial = false,
+ .explicit = false,
+ .prototyped = false,
+ .objective_c_class_complete = false,
+ .object_pointer = false,
+ .vector = false,
+ .static_member = false,
+ .lvalue_reference = false,
+ .rvalue_reference = false,
+ .reserved = false,
+ .inheritance = .none,
+ .introduced_virtual = false,
+ .bit_field = false,
+ .no_return = false,
+ .type_pass_by_value = false,
+ .type_pass_by_reference = false,
+ .enum_class = false,
+ .thunk = false,
+ .non_trivial = false,
+ .big_endian = false,
+ .little_endian = false,
+ .all_calls_described = false,
+ };
+ const subroutine_type_calling_convention = LLVM.DebugInfo.CallingConvention.none;
+ const subroutine_type = llvm.debug_info_builder.createSubroutineType(parameter_types.pointer, parameter_types.length, subroutine_type_flags, subroutine_type_calling_convention) orelse unreachable;
+ break :b subroutine_type.toType();
+ },
+ else => |t| @panic(@tagName(t)),
+ };
- assert(@intFromPtr(result) != 0xaaaa_aaaa_aaaa_aaaa);
- return result;
- }
+ try llvm.debug_type_map.put(context.my_allocator, sema_type_index, result);
+
+ assert(@intFromPtr(result) != 0xaaaa_aaaa_aaaa_aaaa);
+ return result;
}
}
@@ -2083,13 +1795,16 @@ pub const LLVM = struct {
.constant_int => |integer| {
const integer_type = unit.types.get(type_index);
switch (integer_type.*) {
- .integer => |integer_t| {
- const signed = switch (integer_t.signedness) {
- .signed => true,
- .unsigned => false,
- };
- const constant_int = llvm.context.getConstantInt(integer_t.bit_count, integer.value, signed) orelse unreachable;
- return constant_int.toConstant();
+ .integer => |integer_t| switch (integer_t.kind) {
+ .materialized_int, .bitfield => {
+ const signed = switch (integer_t.signedness) {
+ .signed => true,
+ .unsigned => false,
+ };
+ const constant_int = llvm.context.getConstantInt(integer_t.bit_count, integer.value, signed) orelse unreachable;
+ return constant_int.toConstant();
+ },
+ else => |t| @panic(@tagName(t)),
},
else => |t| @panic(@tagName(t)),
}
@@ -2097,37 +1812,37 @@ pub const LLVM = struct {
.comptime_int => |integer| {
const integer_type = unit.types.get(type_index);
switch (integer_type.*) {
- .integer => |integer_t| {
- const signed = switch (integer_t.signedness) {
- .signed => true,
- .unsigned => false,
- };
- const constant_int = llvm.context.getConstantInt(integer_t.bit_count, integer.value, signed) orelse unreachable;
- return constant_int.toConstant();
+ .integer => |integer_t| switch (integer_t.kind) {
+ else => |t| @panic(@tagName(t)),
+ .materialized_int => {
+ const signed = switch (integer_t.signedness) {
+ .signed => true,
+ .unsigned => false,
+ };
+ const constant_int = llvm.context.getConstantInt(integer_t.bit_count, integer.value, signed) orelse unreachable;
+ return constant_int.toConstant();
+ },
},
else => |t| @panic(@tagName(t)),
}
},
.enum_value => |enum_field_index| {
const enum_field = unit.enum_fields.get(enum_field_index);
- const enum_type = unit.enums.get(unit.types.get(enum_field.parent).@"enum");
- const backing_integer_type = unit.types.get(enum_type.backing_type).integer;
- const signed = switch (backing_integer_type.signedness) {
+ const integer = unit.types.get(enum_field.parent).integer;
+ const signed = switch (integer.signedness) {
.signed => true,
.unsigned => false,
};
- const constant_int = llvm.context.getConstantInt(backing_integer_type.bit_count, enum_field.value, signed) orelse unreachable;
+ const constant_int = llvm.context.getConstantInt(integer.bit_count, enum_field.value, signed) orelse unreachable;
return constant_int.toConstant();
},
- .constant_backed_struct => |value| {
- const struct_index = unit.types.get(type_index).@"struct";
- const struct_type = unit.structs.get(struct_index);
- const backing_integer_type = unit.types.get(struct_type.backing_type).integer;
- const signed = switch (backing_integer_type.signedness) {
+ .constant_bitfield => |value| {
+ const integer = unit.types.get(type_index).integer;
+ const signed = switch (integer.signedness) {
.signed => true,
.unsigned => false,
};
- const constant_int = llvm.context.getConstantInt(backing_integer_type.bit_count, value, signed) orelse unreachable;
+ const constant_int = llvm.context.getConstantInt(integer.bit_count, value, signed) orelse unreachable;
return constant_int.toConstant();
},
.constant_struct => |constant_struct_index| return try llvm.getConstantStruct(unit, context, constant_struct_index),
@@ -2165,8 +1880,13 @@ pub const LLVM = struct {
},
.error_value => |error_field_index| {
const error_field = unit.error_fields.get(error_field_index);
- const signed = false;
- const bit_count = 31;
+ const error_type_index = error_field.type;
+ const integer = unit.types.get(error_type_index).integer;
+ const bit_count = integer.bit_count;
+ const signed = switch (integer.signedness) {
+ .unsigned => false,
+ .signed => true,
+ };
const constant_int = llvm.context.getConstantInt(bit_count, error_field.value, signed) orelse unreachable;
return constant_int.toConstant();
},
@@ -2204,12 +1924,12 @@ pub const LLVM = struct {
},
.file_container => {
if (llvm.scope_map.get(sema_scope)) |scope| {
+ if (true) unreachable;
return scope;
} else {
- const global_scope = @fieldParentPtr(Compilation.Debug.Scope.Global, "scope", sema_scope);
- const struct_type = @fieldParentPtr(Compilation.Struct, "scope", global_scope);
- const struct_t = try llvm.getDebugType(unit, context, struct_type.type);
- return struct_t.toScope();
+ const sema_struct_type = unit.scope_container_map.get(sema_scope).?;
+ const struct_type = try llvm.getDebugType(unit, context, sema_struct_type);
+ return struct_type.toScope();
}
},
else => |t| @panic(@tagName(t)),
@@ -2277,17 +1997,23 @@ pub const LLVM = struct {
fn getConstantStruct(llvm: *LLVM, unit: *Compilation.Unit, context: *const Compilation.Context, constant_struct_index: Compilation.V.Comptime.ConstantStruct.Index) !*LLVM.Value.Constant {
const constant_struct = unit.constant_structs.get(constant_struct_index);
var field_values = try UnpinnedArray(*LLVM.Value.Constant).initialize_with_capacity(context.my_allocator, @intCast(constant_struct.fields.len));
- const sema_struct_type = unit.structs.get(unit.types.get(constant_struct.type).@"struct");
- for (constant_struct.fields, sema_struct_type.fields.slice()) |field_value, field_index| {
- const field = unit.struct_fields.get(field_index);
- const constant = try llvm.emitComptimeRightValue(unit, context, field_value, field.type);
- field_values.append_with_capacity(constant);
- }
+ const sema_struct_index = unit.types.get(constant_struct.type).@"struct";
+ const sema_struct = unit.structs.get(sema_struct_index);
+ switch (sema_struct.kind) {
+ .@"struct" => |*sema_struct_type| {
+ for (constant_struct.fields, sema_struct_type.fields.slice()) |field_value, field_index| {
+ const field = unit.struct_fields.get(field_index);
+ const constant = try llvm.emitComptimeRightValue(unit, context, field_value, field.type);
+ field_values.append_with_capacity(constant);
+ }
- const llvm_type = try llvm.getType(unit, context, constant_struct.type);
- const struct_type = llvm_type.toStruct() orelse unreachable;
- const const_struct = struct_type.getConstant(field_values.pointer, field_values.length) orelse unreachable;
- return const_struct;
+ const llvm_type = try llvm.getType(unit, context, constant_struct.type);
+ const struct_type = llvm_type.toStruct() orelse unreachable;
+ const const_struct = struct_type.getConstant(field_values.pointer, field_values.length) orelse unreachable;
+ return const_struct;
+ },
+ else => |t| @panic(@tagName(t)),
+ }
}
fn callIntrinsic(llvm: *LLVM, intrinsic_name: []const u8, intrinsic_parameter_types: []const *LLVM.Type, intrinsic_arguments: []const *LLVM.Value) !*LLVM.Value {
@@ -2574,7 +2300,10 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
const basic_block = llvm.llvm_block_map.get(basic_block_index).?;
llvm.builder.setInsertPoint(basic_block);
+ var last_block = block_node;
+
for (sema_basic_block.instructions.slice()) |instruction_index| {
+ //if (@intFromEnum(instruction_index) == 474) @breakpoint();
const sema_instruction = unit.instructions.get(instruction_index);
switch (sema_instruction.*) {
@@ -2640,7 +2369,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
var buffer: [65]u8 = undefined;
const number_literal = data_structures.format_int(&buffer, literal, 16, false);
const slice_ptr = number_literal.ptr - 4;
- const literal_slice = slice_ptr[0..number_literal.len + 4];
+ const literal_slice = slice_ptr[0 .. number_literal.len + 4];
literal_slice[0] = '$';
literal_slice[1] = '$';
literal_slice[2] = '0';
@@ -2656,7 +2385,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
var buffer: [65]u8 = undefined;
const operand_number = data_structures.format_int(&buffer, operand_values.length, 16, false);
const slice_ptr = operand_number.ptr - 2;
- const operand_slice = slice_ptr[0..operand_number.len + 2];
+ const operand_slice = slice_ptr[0 .. operand_number.len + 2];
operand_slice[0] = '$';
operand_slice[1] = '{';
var new_buffer: [65]u8 = undefined;
@@ -2664,7 +2393,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
new_buffer[operand_slice.len] = ':';
new_buffer[operand_slice.len + 1] = 'P';
new_buffer[operand_slice.len + 2] = '}';
- const new_slice = try context.my_allocator.duplicate_bytes(new_buffer[0..operand_slice.len + 3]);
+ const new_slice = try context.my_allocator.duplicate_bytes(new_buffer[0 .. operand_slice.len + 3]);
try assembly_statements.append_slice(context.my_allocator, new_slice);
try operand_values.append(context.my_allocator, value);
const value_type = value.getType();
@@ -2701,13 +2430,6 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
try llvm.llvm_instruction_map.put_no_clobber(context.my_allocator, instruction_index, call.toValue());
},
.stack_slot => |stack_slot| {
- switch (unit.types.get(stack_slot.type).*) {
- .void, .noreturn, .type => unreachable,
- .comptime_int => unreachable,
- .function => unreachable,
- else => {},
- }
-
const declaration_type = try llvm.getType(unit, context, stack_slot.type);
const alloca_array_size = null;
const declaration_alloca = llvm.builder.createAlloca(declaration_type, address_space, alloca_array_size, "", "".len) orelse return LLVM.Value.Instruction.Error.alloca;
@@ -2765,6 +2487,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
const truncate = llvm.builder.createCast(.truncate, value, dest_type, "truncate", "truncate".len) orelse return LLVM.Value.Instruction.Error.cast;
try llvm.llvm_instruction_map.put_no_clobber(context.my_allocator, instruction_index, truncate);
},
+ .error_union_type_int_to_pointer, .error_union_type_upcast, .error_union_type_downcast => unreachable,
}
},
.load => |load| {
@@ -2831,8 +2554,6 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
.@"comptime" => |ct| switch (ct) {
.global => |call_function_declaration| {
const call_function_type = call_function_declaration.declaration.type;
- // const call_function_definition_index = call_function_declaration.getFunctionDefinitionIndex();
- // const callee = llvm.function_definition_map.get(call_function_declaration).?;
const call_function_prototype = unit.function_prototypes.get(unit.types.get(call_function_type).function);
assert(call_function_type == call.function_type);
@@ -2952,12 +2673,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
const name = unit.getIdentifier(argument_declaration.declaration.name);
argument.toValue().setName(name.ptr, name.len);
const argument_type_index = argument_declaration.declaration.type;
- switch (unit.types.get(argument_type_index).*) {
- .void, .noreturn, .type => unreachable,
- .comptime_int => unreachable,
- .function => unreachable,
- else => {},
- }
+ _ = argument_type_index; // autofix
const argument_type = argument.toValue().getType();
const alloca_array_size: ?*LLVM.Value = null;
const argument_value = argument.toValue();
@@ -3098,7 +2814,8 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
.jump => |jump| {
const target_block = if (llvm.llvm_block_map.get(jump.to)) |target_block| target_block else blk: {
const jump_target_block_node = try llvm.createBasicBlock(context, jump.to, "jmp_target");
- block_command_list.append(jump_target_block_node);
+ block_command_list.insertAfter(last_block, jump_target_block_node);
+ last_block = jump_target_block_node;
// TODO: make this efficient
break :blk llvm.llvm_block_map.get(jump_target_block_node.data).?;
@@ -3110,10 +2827,9 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
.branch => |branch| {
const taken_node = try llvm.createBasicBlock(context, branch.taken, "taken_block");
const not_taken_node = try llvm.createBasicBlock(context, branch.not_taken, "not_taken_block");
- block_command_list.insertAfter(block_node, taken_node);
+ block_command_list.insertAfter(last_block, taken_node);
block_command_list.insertAfter(taken_node, not_taken_node);
- // block_command_list.append(taken_node);
- // block_command_list.append(taken_node);
+ last_block = not_taken_node;
// TODO: make this fast
const taken_block = llvm.llvm_block_map.get(taken_node.data).?;
@@ -3162,6 +2878,36 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
const intrinsic_call = try llvm.callIntrinsic("llvm.sadd.with.overflow", ¶meter_types, &arguments);
try llvm.llvm_instruction_map.put_no_clobber(context.my_allocator, instruction_index, intrinsic_call);
},
+ .@"switch" => |switch_expression| {
+ const condition = try llvm.emitRightValue(unit, context, switch_expression.condition);
+ const else_block: ?*LLVM.Value.BasicBlock = if (switch_expression.else_block != .null) b: {
+ const else_block_node = try llvm.createBasicBlock(context, switch_expression.else_block, "switch_else");
+ const bb = llvm.llvm_block_map.get(switch_expression.else_block).?;
+ block_command_list.insertAfter(last_block, else_block_node);
+ last_block = else_block_node;
+ break :b bb;
+ } else null;
+ var basic_block_array = try UnpinnedArray(*LLVM.Value.BasicBlock).initialize_with_capacity(context.my_allocator, switch_expression.cases.length);
+ var condition_array = try UnpinnedArray(*LLVM.Value.Constant.Int).initialize_with_capacity(context.my_allocator, switch_expression.cases.length);
+ for (switch_expression.cases.pointer[0..switch_expression.cases.length]) |case| {
+ const constant_value = try llvm.emitComptimeRightValue(unit, context, case.condition, switch_expression.condition.type);
+ const constant_int = constant_value.toInt() orelse unreachable;
+ const block = if (llvm.llvm_block_map.get(case.basic_block)) |bb| bb else b: {
+ const switch_block_node = try llvm.createBasicBlock(context, case.basic_block, "case_block");
+ block_command_list.insertAfter(last_block, switch_block_node);
+ last_block = switch_block_node;
+ const block = llvm.llvm_block_map.get(case.basic_block).?;
+ break :b block;
+ };
+ condition_array.append_with_capacity(constant_int);
+ basic_block_array.append_with_capacity(block);
+ }
+
+ const branch_weights = null;
+ const unpredictable = null;
+ const switch_instruction = llvm.builder.createSwitch(condition, else_block, condition_array.pointer, basic_block_array.pointer, condition_array.length, branch_weights, unpredictable);
+ try llvm.llvm_instruction_map.put_no_clobber(context.my_allocator, instruction_index, switch_instruction.toValue());
+ },
else => |t| @panic(@tagName(t)),
}
}
@@ -3171,7 +2917,9 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
for (phis.keys(), phis.values()) |instruction_index, phi| {
const instruction = unit.instructions.get(instruction_index);
- for (instruction.phi.values.slice(), instruction.phi.basic_blocks.slice()) |sema_value, sema_block| {
+ const sema_phi = &instruction.phi;
+ for (sema_phi.values.slice(), sema_phi.basic_blocks.slice()) |sema_value, sema_block| {
+ assert(sema_value.type == sema_phi.type);
const value_basic_block = llvm.llvm_block_map.get(sema_block).?;
const value = llvm.llvm_value_map.get(sema_value) orelse try llvm.emitRightValue(unit, context, sema_value);
phi.addIncoming(value, value_basic_block);
@@ -3182,7 +2930,7 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
var message_len: usize = 0;
const function_str = llvm.function.toString(&message_len);
const function_dump = function_str[0..message_len];
- try std.io.getStdOut().writeAll(function_dump);
+ try write(.panic, function_dump);
@panic("Function block with no termination");
}
@@ -3196,15 +2944,12 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
var function_len: usize = 0;
const function_ptr = llvm.function.toString(&function_len);
const function_ir = function_ptr[0..function_len];
- _ = function_ir; // autofix
var message_ptr: [*]const u8 = undefined;
var message_len: usize = 0;
const result = llvm.function.verify(&message_ptr, &message_len);
if (!result) {
- const error_message = message_ptr[0..message_len];
- _ = error_message; // autofix
// std.debug.print("PANIC: Failed to verify function:\n{s}\n", .{error_message});
var module_len: usize = 0;
@@ -3212,6 +2957,9 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
const module_dump = module_ptr[0..module_len];
_ = module_dump; // autofix
+ try write(.llvm, function_ir);
+ const error_message = message_ptr[0..message_len];
+ try write(.panic, error_message);
// std.debug.print("\nLLVM verification for function inside module failed:\nFull module: {s}\n```\n{s}\n```\n{s}\n", .{ module_dump, function_ir, error_message });
@panic("LLVM function verification failed");
}
@@ -3231,10 +2979,10 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
var message_len: usize = 0;
const result = llvm.module.verify(&message_ptr, &message_len);
if (!result) {
- try std.io.getStdOut().writeAll("Module: \n");
- try std.io.getStdOut().writeAll(module_string);
- try std.io.getStdOut().writeAll("\n");
- try std.io.getStdOut().writeAll(message_ptr[0..message_len]);
+ try write(.llvm, "Module: \n");
+ try write(.llvm, module_string);
+ try write(.llvm, "\n");
+ try write(.llvm, message_ptr[0..message_len]);
@panic("\nLLVM module verification failed");
}
}
@@ -3268,14 +3016,14 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
slice[file_path.len] = '.';
slice[file_path.len + 1] = 'o';
slice[file_path.len + 2] = 0;
- const object_file_path = slice[0..slice.len - 1:0];
+ const object_file_path = slice[0 .. slice.len - 1 :0];
break :blk object_file_path;
};
const destination_file_path = blk: {
const slice = try context.allocator.alloc(u8, file_path.len + 1); // try std.mem.concatWithSentinel(context.allocator, &.{file_path});
@memcpy(slice[0..file_path.len], file_path);
slice[slice.len - 1] = 0;
- const destination_file_path = slice[0..file_path.len:0];
+ const destination_file_path = slice[0..file_path.len :0];
break :blk destination_file_path;
};
const disable_verify = false;
@@ -3372,10 +3120,10 @@ pub fn codegen(unit: *Compilation.Unit, context: *const Compilation.Context) !vo
if (!linking_result) {
for (arguments.slice()) |argument| {
const arg = data_structures.span(argument);
- try std.io.getStdOut().writeAll(arg);
- try std.io.getStdOut().writeAll(" ");
+ try write(.llvm, arg);
+ try write(.llvm, " ");
}
- try std.io.getStdOut().writeAll("\n");
+ try write(.llvm, "\n");
@panic("Above linker invokation failed");
}
diff --git a/bootstrap/backend/llvm_bindings.zig b/bootstrap/backend/llvm_bindings.zig
index 9481be4..9c0e11e 100644
--- a/bootstrap/backend/llvm_bindings.zig
+++ b/bootstrap/backend/llvm_bindings.zig
@@ -59,6 +59,7 @@ pub extern fn NativityLLVMContextGetConstantInt(context: *LLVM.Context, bit_coun
pub extern fn NativityLLVMContextGetConstantString(context: *LLVM.Context, name_ptr: [*]const u8, name_len: usize, null_terminate: bool) ?*LLVM.Value.Constant;
pub extern fn NativityLLVMGetConstantArray(array_type: *LLVM.Type.Array, value_ptr: [*]const *LLVM.Value.Constant, value_count: usize) ?*LLVM.Value.Constant;
pub extern fn NativityLLVMGetConstantStruct(struct_type: *LLVM.Type.Struct, constant_ptr: [*]const *LLVM.Value.Constant, constant_len: usize) ?*LLVM.Value.Constant;
+pub extern fn NativityLLVMConstantToInt(constant: *LLVM.Value.Constant) ?*LLVM.Value.Constant.Int;
pub extern fn NativityLLVMBuilderCreateICmp(builder: *LLVM.Builder, integer_comparison: LLVM.Value.Instruction.ICmp.Kind, left: *LLVM.Value, right: *LLVM.Value, name_ptr: [*]const u8, name_len: usize) ?*LLVM.Value;
pub extern fn NativityLLVMBuilderCreateLoad(builder: *LLVM.Builder, type: *LLVM.Type, value: *LLVM.Value, is_volatile: bool, name_ptr: [*]const u8, name_len: usize) ?*LLVM.Value.Instruction.Load;
pub extern fn NativityLLVMBuilderCreateRet(builder: *LLVM.Builder, value: ?*LLVM.Value) ?*LLVM.Value.Instruction.Ret;
@@ -89,6 +90,7 @@ pub extern fn NativityLLVMBuilderCreateGEP(builder: *LLVM.Builder, type: *LLVM.T
pub extern fn NativityLLVMBuilderCreateStructGEP(builder: *LLVM.Builder, type: *LLVM.Type, pointer: *LLVM.Value, index: c_uint, name_ptr: [*]const u8, name_len: usize) ?*LLVM.Value;
pub extern fn NativityLLVMBuilderCreateBranch(builder: *LLVM.Builder, basic_block: *LLVM.Value.BasicBlock) ?*LLVM.Value.Instruction.Branch;
pub extern fn NativityLLVMBuilderCreateConditionalBranch(builder: *LLVM.Builder, condition: *LLVM.Value, true_block: *LLVM.Value.BasicBlock, false_block: *LLVM.Value.BasicBlock, branch_weights: ?*LLVM.Metadata.Node, unpredictable: ?*LLVM.Metadata.Node) ?*LLVM.Value.Instruction.Branch;
+pub extern fn NativityLLVMBuilderCreateSwitch(builder: *LLVM.Builder, condition: *LLVM.Value, default_block: ?*LLVM.Value.BasicBlock, case_ptr: [*]const *LLVM.Value.Constant.Int, case_block_ptr: [*]const *LLVM.Value.BasicBlock, case_count: c_uint, branch_weights: ?*LLVM.Metadata.Node, unpredictable: ?*LLVM.Metadata.Node) *LLVM.Value.Instruction.Switch;
pub extern fn NativityLLVMVerifyFunction(function: *LLVM.Value.Constant.Function, message_ptr: *[*]const u8, message_len: *usize) bool;
pub extern fn NativityLLVMVerifyModule(module: *LLVM.Module, message_ptr: *[*]const u8, message_len: *usize) bool;
diff --git a/bootstrap/frontend/lexer.zig b/bootstrap/frontend/lexer.zig
index 19bf2d9..a968e22 100644
--- a/bootstrap/frontend/lexer.zig
+++ b/bootstrap/frontend/lexer.zig
@@ -6,6 +6,7 @@ const log = std.log;
const data_structures = @import("../library.zig");
const enumFromString = data_structures.enumFromString;
const MyAllocator = data_structures.MyAllocator;
+const UnpinnedArray = data_structures.UnpinnedArray;
const Compilation = @import("../Compilation.zig");
const File = Compilation.File;
@@ -109,7 +110,7 @@ pub fn analyze(allocator: *MyAllocator, text: []const u8, token_buffer: *Token.B
const string = text[start_index..][0 .. index - start_index];
break :blk if (enumFromString(Compilation.FixedKeyword, string)) |fixed_keyword| switch (fixed_keyword) {
inline else => |comptime_fixed_keyword| @field(Token.Id, "fixed_keyword_" ++ @tagName(comptime_fixed_keyword)),
- } else if (data_structures.byte_equal( string, "_")) .discard else .identifier;
+ } else if (data_structures.byte_equal(string, "_")) .discard else .identifier;
},
'0'...'9' => blk: {
// Detect other non-decimal literals
@@ -333,6 +334,13 @@ pub fn analyze(allocator: *MyAllocator, text: []const u8, token_buffer: *Token.B
index += 1;
break :b .operator_div_assign;
},
+ '/' => {
+ while (text[index] != '\n') {
+ index += 1;
+ }
+
+ continue;
+ },
else => .operator_div,
};
@@ -396,6 +404,124 @@ pub fn analyze(allocator: *MyAllocator, text: []const u8, token_buffer: *Token.B
break :blk .operator_dollar;
},
+ // Asm statement (special treatment)
+ '`' => {
+ token_buffer.append_with_capacity(.{
+ .id = .operator_backtick,
+ .line = line_index,
+ .offset = start_index,
+ .length = 1,
+ });
+
+ index += 1;
+
+ while (text[index] != '`') {
+ const start_i = index;
+ const start_ch = text[start_i];
+
+ switch (start_ch) {
+ '\n' => {
+ index += 1;
+ line_index += 1;
+ },
+ ' ' => index += 1,
+ 'A'...'Z', 'a'...'z' => {
+ while (true) {
+ switch (text[index]) {
+ 'A'...'Z', 'a'...'z' => index += 1,
+ else => break,
+ }
+ }
+
+ token_buffer.append_with_capacity(.{
+ .id = .identifier,
+ .offset = start_i,
+ .length = index - start_i,
+ .line = line_index,
+ });
+ },
+ ',' => {
+ token_buffer.append_with_capacity(.{
+ .id = .operator_comma,
+ .line = line_index,
+ .offset = start_i,
+ .length = 1,
+ });
+ index += 1;
+ },
+ ';' => {
+ token_buffer.append_with_capacity(.{
+ .id = .operator_semicolon,
+ .line = line_index,
+ .offset = start_i,
+ .length = 1,
+ });
+ index += 1;
+ },
+ '{' => {
+ token_buffer.append_with_capacity(.{
+ .id = .operator_left_brace,
+ .line = line_index,
+ .offset = start_i,
+ .length = 1,
+ });
+ index += 1;
+ },
+ '}' => {
+ token_buffer.append_with_capacity(.{
+ .id = .operator_right_brace,
+ .line = line_index,
+ .offset = start_i,
+ .length = 1,
+ });
+ index += 1;
+ },
+ '0' => {
+ index += 1;
+ const Representation = enum {
+ hex,
+ bin,
+ octal,
+ };
+ const representation: Representation = switch (text[index]) {
+ 'x' => .hex,
+ else => unreachable,
+ };
+ index += 1;
+ switch (representation) {
+ .hex => {
+ while (true) {
+ switch (text[index]) {
+ 'a'...'f', 'A'...'F', '0'...'9' => index += 1,
+ else => break,
+ }
+ }
+
+ token_buffer.append_with_capacity(.{
+ .id = .number_literal,
+ .line = line_index,
+ .offset = start_i,
+ .length = index - start_i,
+ });
+ },
+ else => unreachable,
+ }
+ },
+ else => unreachable,
+ }
+ }
+
+ token_buffer.append_with_capacity(.{
+ .id = .operator_backtick,
+ .line = line_index,
+ .length = 1,
+ .offset = index,
+ });
+
+ index += 1;
+
+ continue;
+ },
else => |ch| {
const ch_arr = [1]u8{ch};
@panic(&ch_arr);
diff --git a/bootstrap/frontend/parser.zig b/bootstrap/frontend/parser.zig
index 7003d15..c98616e 100644
--- a/bootstrap/frontend/parser.zig
+++ b/bootstrap/frontend/parser.zig
@@ -10,7 +10,7 @@ const enumFromString = data_structures.enumFromString;
const lexer = @import("lexer.zig");
const Compilation = @import("../Compilation.zig");
-// const log = Compilation.log;
+const write = Compilation.write;
const logln = Compilation.logln;
const Token = Compilation.Token;
@@ -104,7 +104,7 @@ pub const Node = struct {
void_type,
call,
pointer_type,
- enum_literal,
+ dot_literal,
address_of,
pointer_dereference,
keyword_false,
@@ -187,6 +187,15 @@ pub const Node = struct {
catch_expression,
try_expression,
error_type,
+ error_field,
+ assembly_code_expression,
+ assembly_instruction,
+ assembly_code_block,
+ bool_and,
+ bool_or,
+ payload,
+ catch_payload,
+ bitfield_type,
};
};
@@ -216,8 +225,16 @@ const Analyzer = struct {
const result = token_i;
return result;
} else {
- // const file_offset = analyzer.getTokenOffset(token_i);
- // const file_chunk = analyzer.source_file[file_offset..];
+ const file_offset = analyzer.getTokenOffset(token_i);
+ const file_chunk = analyzer.source_file[file_offset..];
+ try write(.panic, "Unexpected token ");
+ try write(.panic, @tagName(token_id));
+ try write(.panic, " when expected ");
+ try write(.panic, @tagName(expected_token_id));
+ try write(.panic, "\n");
+ try write(.panic, "File chunk:\n\n```\n");
+ try write(.panic, file_chunk);
+ try write(.panic, "\n```\n");
// std.debug.print("Unexpected token {s} when expected {s}\n| |\n v \n```\n{s}\n```", .{ @tagName(token_id), @tagName(expected_token_id), file_chunk });
@breakpoint();
return error.unexpected_token;
@@ -233,7 +250,7 @@ const Analyzer = struct {
fn peekTokenAhead(analyzer: *Analyzer, ahead_offset: u32) Token.Id {
const token_index = Token.addInt(analyzer.token_i, ahead_offset);
- const index =Token.unwrap(token_index);
+ const index = Token.unwrap(token_index);
assert(index < analyzer.token_buffer.length);
const token = analyzer.token_buffer.ids[index];
return token;
@@ -485,16 +502,6 @@ const Analyzer = struct {
// logln(.parser, .block, "First statement token: {s}", .{@tagName(first_statement_token)});
const statement_index = switch (first_statement_token) {
else => try analyzer.assignExpressionStatement(),
- // .identifier => switch (analyzer.peekTokenAhead(1)) {
- // .operator_colon => {
- // unreachable;
- // },
- // else => try analyzer.assignExpressionStatement(),
- // },
- // .fixed_keyword_unreachable,
- // .fixed_keyword_return,
- // .discard,
- // => try analyzer.assignExpressionStatement(),
.fixed_keyword_while => try analyzer.whileExpression(),
.fixed_keyword_switch => try analyzer.switchExpression(),
@@ -503,17 +510,8 @@ const Analyzer = struct {
.fixed_keyword_const,
.fixed_keyword_var,
=> try analyzer.symbolDeclaration(),
- // .intrinsic => blk: {
- // const intrinsic = try analyzer.compilerIntrinsic();
- // _ = try analyzer.expectToken(.operator_semicolon);
- // break :blk intrinsic;
- // },
- // else => |t| @panic(@tagName(t)),
};
- // const node = analyzer.nodes.get(statement_index);
- // logln(.parser, .block, "Adding statement: {s}", .{@tagName(node.id)});
-
try list.append(analyzer.my_allocator, statement_index);
}
@@ -614,6 +612,26 @@ const Analyzer = struct {
});
}
+ fn parsePayload(analyzer: *Analyzer) !Node.Index {
+ _ = try analyzer.expectToken(.operator_bar);
+ const main_token = analyzer.token_i;
+ switch (analyzer.peekToken()) {
+ .identifier,
+ .discard,
+ => analyzer.consumeToken(),
+ else => |t| @panic(@tagName(t)),
+ }
+
+ _ = try analyzer.expectToken(.operator_bar);
+
+ return try analyzer.addNode(.{
+ .id = .payload,
+ .token = main_token,
+ .left = .null,
+ .right = .null,
+ });
+ }
+
fn ifExpression(analyzer: *Analyzer) anyerror!Node.Index {
const if_token = analyzer.token_i;
analyzer.consumeToken();
@@ -622,16 +640,7 @@ const Analyzer = struct {
const if_condition = try analyzer.expression();
_ = try analyzer.expectToken(.operator_right_parenthesis);
- const payload = if (analyzer.peekToken() == .operator_bar) blk: {
- analyzer.consumeToken();
- const payload_node = switch (analyzer.peekToken()) {
- .identifier => try analyzer.identifierNode(),
- .discard => try analyzer.discardNode(),
- else => unreachable,
- };
- _ = try analyzer.expectToken(.operator_bar);
- break :blk payload_node;
- } else Node.Index.null;
+ const payload = if (analyzer.peekToken() == .operator_bar) try analyzer.parsePayload() else Node.Index.null;
const if_taken_expression = try analyzer.expression();
@@ -811,32 +820,6 @@ const Analyzer = struct {
// logln(.parser, .assign, "assign:\nleft: {}.\nright: {}", .{ node.left, node.right });
return try analyzer.addNode(node);
- // .operator_equal => .operator_assign,
- // .operator_add => switch (analyzer.peekTokenAhead(1)) {
- // .operator_equal => blk: {
- // analyzer.consumeToken();
- // break :blk .operator_add_assign;
- // },
- // else => |t| @panic(@tagName(t)),
- // },
- // .operator_sub => switch (analyzer.peekTokenAhead(1)) {
- // .equal => blk: {
- // analyzer.consumeToken();
- // break :blk .operator_sub_assign;
- // },
- // else => |t| @panic(@tagName(t)),
- // },
- // .operator_div => switch (analyzer.peekTokenAhead(1)) {
- // .operator_equal => blk: {
- // analyzer.consumeToken();
- // break :blk .operator_div_assign;
- // },
- // else => |t| @panic(@tagName(t)),
- // },
- // else => |t| @panic(@tagName(t)),
- // };
- //
- //
}
fn parseAsmOperand(analyzer: *Analyzer) !Node.Index {
@@ -885,34 +868,89 @@ const Analyzer = struct {
var list = UnpinnedArray(Node.Index){};
if (intrinsic_id == .@"asm") {
- _ = try analyzer.expectToken(.operator_left_brace);
+ const backtick = try analyzer.expectToken(.operator_backtick);
+ var instruction_list = UnpinnedArray(Node.Index){};
+
+ while (analyzer.peekToken() != .operator_backtick) {
+ const instruction_token = analyzer.token_i;
+ const instruction_name = try analyzer.identifierNode();
- while (analyzer.peekToken() != .operator_right_brace) {
- const instruction_token = try analyzer.expectToken(.identifier);
var operand_list = UnpinnedArray(Node.Index){};
-
while (analyzer.peekToken() != .operator_semicolon) {
- const asm_operand = try analyzer.parseAsmOperand();
+ const node = switch (analyzer.peekToken()) {
+ .identifier => try analyzer.addNode(.{
+ .id = .assembly_register,
+ .token = b: {
+ const t = analyzer.token_i;
+ analyzer.consumeToken();
+ break :b t;
+ },
+ .left = .null,
+ .right = .null,
+ }),
+ .number_literal => try analyzer.addNode(.{
+ .id = .number_literal,
+ .token = b: {
+ const t = analyzer.token_i;
+ analyzer.consumeToken();
+ break :b t;
+ },
+ .left = Node.Index.null,
+ .right = Node.Index.null,
+ }),
+ .operator_left_brace => b: {
+ const left_brace = try analyzer.expectToken(.operator_left_brace);
+ const code_expression = try analyzer.expression();
+ _ = try analyzer.expectToken(.operator_right_brace);
+
+ break :b try analyzer.addNode(.{
+ .id = .assembly_code_expression,
+ .token = left_brace,
+ .left = code_expression,
+ .right = .null,
+ });
+ },
+ else => |t| @panic(@tagName(t)),
+ };
switch (analyzer.peekToken()) {
- .operator_semicolon => {},
.operator_comma => analyzer.consumeToken(),
+ .operator_semicolon => {},
else => |t| @panic(@tagName(t)),
}
- try operand_list.append(analyzer.my_allocator, asm_operand);
+ try operand_list.append(analyzer.my_allocator, node);
}
- _ = try analyzer.expectToken(.operator_semicolon);
+ analyzer.consumeToken();
- try list.append(analyzer.my_allocator, try analyzer.addNode(.{
- .id = .assembly_statement,
+ const instruction = try analyzer.addNode(.{
+ .id = .assembly_instruction,
.token = instruction_token,
- .left = try analyzer.nodeList(operand_list),
- .right = Node.Index.null,
- }));
+ .left = instruction_name,
+ .right = try analyzer.nodeList(operand_list),
+ });
+
+ try instruction_list.append(analyzer.my_allocator, instruction);
}
- _ = try analyzer.expectToken(.operator_right_brace);
+ _ = try analyzer.expectToken(.operator_backtick);
_ = try analyzer.expectToken(.operator_right_parenthesis);
+
+ const assembly_block = try analyzer.addNode(.{
+ .id = .assembly_code_block,
+ .token = backtick,
+ .left = try analyzer.nodeList(instruction_list),
+ .right = .null,
+ });
+ try list.append(analyzer.my_allocator, assembly_block);
+
+ const intrinsic = try analyzer.addNode(.{
+ .id = .intrinsic,
+ .token = intrinsic_token,
+ .left = try analyzer.nodeList(list),
+ .right = @enumFromInt(@intFromEnum(intrinsic_id)),
+ });
+
+ return intrinsic;
} else {
while (analyzer.peekToken() != .operator_right_parenthesis) {
const parameter = try analyzer.expression();
@@ -956,6 +994,8 @@ const Analyzer = struct {
bit_and,
bit_xor,
bit_or,
+ bool_and,
+ bool_or,
shift_left,
shift_right,
@"catch",
@@ -976,6 +1016,8 @@ const Analyzer = struct {
.bit_and = 40,
.bit_xor = 40,
.bit_or = 40,
+ .bool_or = 10,
+ .bool_and = 20,
.shift_left = 50,
.shift_right = 50,
.@"catch" = 40,
@@ -993,6 +1035,8 @@ const Analyzer = struct {
.bit_and = .left,
.bit_xor = .left,
.bit_or = .left,
+ .bool_and = .left,
+ .bool_or = .left,
.mul = .left,
.div = .left,
.mod = .left,
@@ -1013,6 +1057,8 @@ const Analyzer = struct {
.bit_and = .bit_and,
.bit_xor = .bit_xor,
.bit_or = .bit_or,
+ .bool_and = .bool_and,
+ .bool_or = .bool_or,
.mul = .mul,
.div = .div,
.mod = .mod,
@@ -1025,8 +1071,8 @@ const Analyzer = struct {
assert(minimum_precedence >= 0);
var result = try analyzer.prefixExpression();
// if (result != .null) {
- // const prefix_node = analyzer.nodes.get(result);
- // logln(.parser, .precedence, "Prefix: {s}", .{@tagName(prefix_node.id)});
+ // const prefix_node = analyzer.nodes.get(result);
+ // logln(.parser, .precedence, "Prefix: {s}", .{@tagName(prefix_node.id)});
// }
var banned_precedence: i32 = -1;
@@ -1071,6 +1117,8 @@ const Analyzer = struct {
.operator_ampersand => .bit_and,
.operator_bar => .bit_or,
.operator_xor => .bit_xor,
+ .fixed_keyword_and => .bool_and,
+ .fixed_keyword_or => .bool_or,
.operator_shift_left => .shift_left,
.operator_shift_right => .shift_right,
.fixed_keyword_catch => .@"catch",
@@ -1085,17 +1133,23 @@ const Analyzer = struct {
break;
}
- if (precedence < banned_precedence) {
- // logln(.parser, .precedence, "Breaking for banned_precedence", .{});
- break;
+ if (precedence == banned_precedence) {
+ unreachable;
}
const operator_token = analyzer.token_i;
analyzer.consumeToken();
- // TODO: fix this
- // logln(.parser, .precedence, "Going for right in expressionPrecedence with operator {s}", .{@tagName(operator)});
- const right = try analyzer.expressionPrecedence(precedence + 1);
+ const right = if (token == .fixed_keyword_catch and analyzer.peekToken() == .operator_bar) b: {
+ const payload = try analyzer.parsePayload();
+ const r_node = try analyzer.expressionPrecedence(precedence + 1);
+ break :b try analyzer.addNode(.{
+ .id = .catch_payload,
+ .token = operator_token,
+ .left = payload,
+ .right = r_node,
+ });
+ } else try analyzer.expressionPrecedence(precedence + 1);
const node_id = operator_node_id.get(operator);
@@ -1187,8 +1241,8 @@ const Analyzer = struct {
// todo:?
.operator_left_brace => try analyzer.block(),
.fixed_keyword_if => try analyzer.ifExpression(),
+ .fixed_keyword_bitfield => try analyzer.processContainerType(.fixed_keyword_bitfield),
else => |id| @panic(@tagName(id)),
- //else => |id| std.debug.panic("WARN: By default, calling curlySuffixExpression with {s}", .{@tagName(id)}),
};
return result;
@@ -1358,8 +1412,8 @@ const Analyzer = struct {
// logln(.parser, .pointer_like_type_expression, "ARRAY START\n===========", .{});
// for (list.slice()) |ni| {
- // const n = analyzer.nodes.get(ni);
- // logln(.parser, .pointer_like_type_expression, "{s} node element: {s}", .{ @tagName(expression_type), @tagName(n.id) });
+ // const n = analyzer.nodes.get(ni);
+ // logln(.parser, .pointer_like_type_expression, "{s} node element: {s}", .{ @tagName(expression_type), @tagName(n.id) });
// }
// logln(.parser, .pointer_like_type_expression, "ARRAY END\n=========", .{});
@@ -1629,12 +1683,14 @@ const Analyzer = struct {
const container_type: Compilation.ContainerType = switch (token_id) {
.fixed_keyword_struct => .@"struct",
.fixed_keyword_enum => .@"enum",
+ .fixed_keyword_bitfield => .bitfield,
else => unreachable,
};
const node_id: Node.Id = switch (token_id) {
.fixed_keyword_struct => .struct_type,
.fixed_keyword_enum => .enum_type,
+ .fixed_keyword_bitfield => .bitfield_type,
else => unreachable,
};
@@ -1671,7 +1727,9 @@ const Analyzer = struct {
analyzer.consumeToken();
switch (container_type) {
- .@"struct" => {
+ .@"struct",
+ .bitfield,
+ => {
_ = try analyzer.expectToken(.operator_colon);
const field_type = try analyzer.typeExpression();
@@ -1899,30 +1957,51 @@ const Analyzer = struct {
},
.fixed_keyword_error => blk: {
analyzer.consumeToken();
- if (analyzer.peekToken() == .operator_left_brace) {
+ const backing_type: Node.Index = if (analyzer.peekToken() == .operator_left_parenthesis) b: {
analyzer.consumeToken();
- var list = UnpinnedArray(Node.Index){};
+ const type_node = try analyzer.typeExpression();
+ _ = try analyzer.expectToken(.operator_right_parenthesis);
+ break :b type_node;
+ } else Node.Index.null;
- while (analyzer.peekToken() != .operator_right_brace) {
- const identifier = try analyzer.identifierNode();
- try list.append(analyzer.my_allocator, identifier);
- const comma = try analyzer.expectToken(.operator_comma);
- _ = comma; // autofix
- }
+ _ = try analyzer.expectToken(.operator_left_brace);
+ var list = UnpinnedArray(Node.Index){};
- analyzer.consumeToken();
+ while (analyzer.peekToken() != .operator_right_brace) {
+ const tok_i = analyzer.token_i;
+ const t_id = analyzer.peekToken();
+ const identifier = switch (t_id) {
+ .identifier => try analyzer.identifierNode(),
+ else => |t| @panic(@tagName(t)),
+ };
- break :blk try analyzer.addNode(.{
- .id = .error_type,
- .token = token_i,
- .left = try analyzer.nodeList(list),
- .right = .null,
+ const value_associated = switch (analyzer.peekToken()) {
+ .operator_comma => Node.Index.null,
+ else => value: {
+ analyzer.consumeToken();
+ break :value try analyzer.expression();
+ },
+ };
+ _ = try analyzer.expectToken(.operator_comma);
+
+ const error_field_node = try analyzer.addNode(.{
+ .id = .error_field,
+ .token = tok_i,
+ .left = identifier,
+ .right = value_associated,
});
- } else {
- const t = analyzer.peekToken();
- _ = t; // autofix
- unreachable;
+
+ try list.append(analyzer.my_allocator, error_field_node);
}
+
+ analyzer.consumeToken();
+
+ break :blk try analyzer.addNode(.{
+ .id = .error_type,
+ .token = token_i,
+ .left = try analyzer.nodeList(list),
+ .right = backing_type,
+ });
},
else => |t| switch (t) {
.identifier => @panic(analyzer.bytes(token_i)),
@@ -1936,7 +2015,7 @@ const Analyzer = struct {
_ = try analyzer.expectToken(.operator_dot);
return switch (analyzer.peekToken()) {
.identifier => try analyzer.addNode(.{
- .id = .enum_literal,
+ .id = .dot_literal,
.token = blk: {
analyzer.consumeToken();
break :blk token_i;
@@ -2083,7 +2162,8 @@ const Analyzer = struct {
fn identifierNode(analyzer: *Analyzer) !Node.Index {
const identifier_token = analyzer.token_i;
- assert(analyzer.peekToken() == .identifier);
+ const t = analyzer.peekToken();
+ assert(t == .identifier);
analyzer.consumeToken();
return try analyzer.addNode(.{
.id = .identifier,
diff --git a/bootstrap/library.zig b/bootstrap/library.zig
index bb97642..ac245ac 100644
--- a/bootstrap/library.zig
+++ b/bootstrap/library.zig
@@ -210,7 +210,7 @@ pub fn byte_equal_terminated(a: [*:0]const u8, b: [*:0]const u8) bool {
return byte_equal(a_slice, b_slice);
}
-const MapResult = struct{
+const MapResult = struct {
key_pointer: *anyopaque,
value_pointer: *anyopaque,
capacity: IndexType,
@@ -223,8 +223,8 @@ fn ensure_capacity_hashmap(allocator: *MyAllocator, current_capacity: IndexType,
}
if (new_capacity > current_capacity) {
- const old_key_slice = key_pointer[0..length * key_size];
- const old_value_slice = value_pointer[0..length * value_size];
+ const old_key_slice = key_pointer[0 .. length * key_size];
+ const old_value_slice = value_pointer[0 .. length * value_size];
const new_key_slice = try allocator.reallocate(old_key_slice, new_capacity * key_size, key_alignment);
const new_value_slice = try allocator.reallocate(old_value_slice, new_capacity * value_size, value_alignment);
@@ -308,11 +308,11 @@ pub fn MyHashMap(comptime K: type, comptime V: type) type {
map.value_pointer = @ptrCast(@alignCast(result.value_pointer));
}
- pub fn keys(map: *@This()) []K{
+ pub fn keys(map: *@This()) []K {
return map.key_pointer[0..map.length];
}
- pub fn values(map: *@This()) []V{
+ pub fn values(map: *@This()) []V {
return map.value_pointer[0..map.length];
}
};
@@ -372,7 +372,7 @@ pub fn allocate_virtual_memory(size: usize, flags: packed struct {
};
}
-pub fn free_virtual_memory(slice: []const align(0x1000) u8) void {
+pub fn free_virtual_memory(slice: []align(0x1000) const u8) void {
switch (os) {
.windows => {
std.os.windows.VirtualFree(slice.ptr, slice.len, std.os.windows.MEM_RELEASE);
@@ -383,8 +383,8 @@ pub fn free_virtual_memory(slice: []const align(0x1000) u8) void {
}
}
-pub const MyAllocator = struct{
- handler: *const fn(allocator: *MyAllocator, old_ptr: ?[*]u8, old_size: usize, new_size: usize, alignment: u16) Error![*]u8,
+pub const MyAllocator = struct {
+ handler: *const fn (allocator: *MyAllocator, old_ptr: ?[*]u8, old_size: usize, new_size: usize, alignment: u16) Error![*]u8,
pub fn allocate_one(allocator: *MyAllocator, comptime T: type) !*T {
const slice = try allocator.allocate(@sizeOf(T), @alignOf(T));
@@ -417,7 +417,7 @@ pub const MyAllocator = struct{
};
};
-pub const PageAllocator = struct{
+pub const PageAllocator = struct {
allocator: MyAllocator = .{ .handler = handler },
fn handler(allocator: *MyAllocator, maybe_old_ptr: ?[*]u8, old_size: usize, new_size: usize, alignment: u16) MyAllocator.Error![*]u8 {
@@ -442,7 +442,7 @@ pub const PageAllocator = struct{
pub const IndexType = if (@sizeOf(usize) >= 8) u32 else usize;
-const ArrayCapacity = struct{
+const ArrayCapacity = struct {
pointer: *anyopaque,
capacity: IndexType,
};
@@ -453,7 +453,7 @@ fn ensure_capacity_array(allocator: *MyAllocator, current_capacity: IndexType, d
new_capacity *= factor;
}
if (new_capacity > current_capacity) {
- const old_byte_slice = pointer[0..length * element_size];
+ const old_byte_slice = pointer[0 .. length * element_size];
const new_byte_capacity = new_capacity * element_size;
const new_slice = try allocator.reallocate(old_byte_slice, new_byte_capacity, element_alignment);
return .{
@@ -472,14 +472,13 @@ const initial_item_count = 16;
const factor = 2;
pub fn UnpinnedArray(comptime T: type) type {
-
return struct {
pointer: [*]T = undefined,
length: IndexType = 0,
capacity: IndexType = 0,
pub fn initialize_with_capacity(allocator: *MyAllocator, item_count: IndexType) !@This() {
- var array = @This() {};
+ var array = @This(){};
try array.ensure_capacity(allocator, item_count);
return array;
}
@@ -515,15 +514,15 @@ pub fn UnpinnedArray(comptime T: type) type {
assert(index < array.length);
if (array.length + 1 >= array.capacity) {
const after_count = array.length - index;
- copy_backwards(T, array.pointer[index + 1..][0..after_count], array.pointer[index..][0..after_count]);
+ copy_backwards(T, array.pointer[index + 1 ..][0..after_count], array.pointer[index..][0..after_count]);
} else {
const new_capacity = array.capacity * 2;
const new_slice = try allocator.allocate(new_capacity * @sizeOf(T), @alignOf(T));
const new_typed_slice: []T = @as([*]T, @ptrCast(@alignCast(new_slice.ptr)))[0..new_capacity];
@memcpy(new_typed_slice[0..index], array.pointer[0..index]);
const after_count = array.length - index;
- @memcpy(new_typed_slice[index + 1..][0..after_count], array.pointer[index..][0..after_count]);
- try allocator.free(@as([*]u8, @ptrCast(@alignCast(array.slice().ptr)))[0.. array.capacity * @sizeOf(T)]);
+ @memcpy(new_typed_slice[index + 1 ..][0..after_count], array.pointer[index..][0..after_count]);
+ try allocator.free(@as([*]u8, @ptrCast(@alignCast(array.slice().ptr)))[0 .. array.capacity * @sizeOf(T)]);
array.pointer = new_typed_slice.ptr;
array.capacity = new_capacity;
}
@@ -722,5 +721,5 @@ pub fn span(ptr: [*:0]const u8) [:0]const u8 {
while (ptr[len] != 0) {
len += 1;
}
- return ptr[0..len:0];
+ return ptr[0..len :0];
}
diff --git a/bootstrap/main.zig b/bootstrap/main.zig
index 8f71173..72d6b3d 100644
--- a/bootstrap/main.zig
+++ b/bootstrap/main.zig
@@ -30,9 +30,9 @@ pub export fn main(c_argc: c_int, c_argv: [*][*:0]c_char, c_envp: [*:null]?[*:0]
return 0;
} else |err| {
const error_name: []const u8 = @errorName(err);
- std.io.getStdOut().writeAll("Error: ") catch {};
- std.io.getStdOut().writeAll(error_name) catch {};
- std.io.getStdOut().writeAll("\n") catch {};
+ Compilation.write(.panic, "Error: ") catch {};
+ Compilation.write(.panic, error_name) catch {};
+ Compilation.write(.panic, "\n") catch {};
return 1;
}
}
@@ -81,4 +81,3 @@ pub fn entry_point(arguments: [][*:0]u8) !void {
todo();
}
}
-
diff --git a/build.zig b/build.zig
index 5a471f5..ad9578a 100644
--- a/build.zig
+++ b/build.zig
@@ -409,6 +409,7 @@ pub fn build(b: *std.Build) !void {
.optimize = optimization,
.single_threaded = true,
});
+ b.default_step.dependOn(&test_runner.step);
const test_command = b.addRunArtifact(test_runner);
test_command.step.dependOn(&compiler.step);
diff --git a/lib/libc/darwin/SDKSettings.json b/lib/libc/darwin/SDKSettings.json
deleted file mode 100644
index 79599d4..0000000
--- a/lib/libc/darwin/SDKSettings.json
+++ /dev/null
@@ -1 +0,0 @@
-{"MinimalDisplayName":"14.0"}
diff --git a/lib/libc/darwin/libSystem.tbd b/lib/libc/darwin/libSystem.tbd
deleted file mode 100644
index 09df081..0000000
--- a/lib/libc/darwin/libSystem.tbd
+++ /dev/null
@@ -1,3657 +0,0 @@
---- !tapi-tbd
-tbd-version: 4
-targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/libSystem.B.dylib'
-current-version: 1336
-reexported-libraries:
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- libraries: [ '/usr/lib/system/libsystem_kernel.dylib', '/usr/lib/system/libsystem_platform.dylib',
- '/usr/lib/system/libsystem_pthread.dylib' ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- libraries: [ '/usr/lib/system/libcache.dylib', '/usr/lib/system/libcommonCrypto.dylib',
- '/usr/lib/system/libcompiler_rt.dylib', '/usr/lib/system/libcopyfile.dylib',
- '/usr/lib/system/libcorecrypto.dylib', '/usr/lib/system/libdispatch.dylib',
- '/usr/lib/system/libdyld.dylib', '/usr/lib/system/libkeymgr.dylib',
- '/usr/lib/system/libmacho.dylib', '/usr/lib/system/libquarantine.dylib',
- '/usr/lib/system/libremovefile.dylib', '/usr/lib/system/libsystem_asl.dylib',
- '/usr/lib/system/libsystem_blocks.dylib', '/usr/lib/system/libsystem_c.dylib',
- '/usr/lib/system/libsystem_collections.dylib', '/usr/lib/system/libsystem_configuration.dylib',
- '/usr/lib/system/libsystem_containermanager.dylib', '/usr/lib/system/libsystem_coreservices.dylib',
- '/usr/lib/system/libsystem_darwin.dylib', '/usr/lib/system/libsystem_darwindirectory.dylib',
- '/usr/lib/system/libsystem_dnssd.dylib', '/usr/lib/system/libsystem_featureflags.dylib',
- '/usr/lib/system/libsystem_info.dylib', '/usr/lib/system/libsystem_m.dylib',
- '/usr/lib/system/libsystem_malloc.dylib', '/usr/lib/system/libsystem_networkextension.dylib',
- '/usr/lib/system/libsystem_notify.dylib', '/usr/lib/system/libsystem_sandbox.dylib',
- '/usr/lib/system/libsystem_secinit.dylib', '/usr/lib/system/libsystem_symptoms.dylib',
- '/usr/lib/system/libsystem_trace.dylib', '/usr/lib/system/libunwind.dylib',
- '/usr/lib/system/libxpc.dylib' ]
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ 'R8289209$_close', 'R8289209$_fork', 'R8289209$_fsync', 'R8289209$_getattrlist',
- 'R8289209$_getrlimit', 'R8289209$_getxattr', 'R8289209$_open',
- 'R8289209$_pthread_attr_destroy', 'R8289209$_pthread_attr_init',
- 'R8289209$_pthread_attr_setdetachstate', 'R8289209$_pthread_create',
- 'R8289209$_pthread_mutex_lock', 'R8289209$_pthread_mutex_unlock',
- 'R8289209$_pthread_self', 'R8289209$_ptrace', 'R8289209$_read',
- 'R8289209$_setattrlist', 'R8289209$_setrlimit', 'R8289209$_sigaction',
- 'R8289209$_stat', 'R8289209$_sysctl', 'R8289209$_time', 'R8289209$_unlink',
- 'R8289209$_write' ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___crashreporter_info__, _libSystem_init_after_boot_tasks_4launchd,
- _mach_init_routine ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libcache.dylib'
-current-version: 92
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _cache_create, _cache_destroy, _cache_get, _cache_get_and_retain,
- _cache_get_cost_hint, _cache_get_count_hint, _cache_get_info,
- _cache_get_info_for_key, _cache_get_info_for_keys, _cache_get_minimum_values_hint,
- _cache_get_name, _cache_hash_byte_string, _cache_invoke, _cache_key_hash_cb_cstring,
- _cache_key_hash_cb_integer, _cache_key_is_equal_cb_cstring,
- _cache_key_is_equal_cb_integer, _cache_print, _cache_print_stats,
- _cache_release, _cache_release_cb_free, _cache_release_value,
- _cache_remove, _cache_remove_all, _cache_remove_with_block,
- _cache_retain, _cache_set_and_retain, _cache_set_cost_hint,
- _cache_set_count_hint, _cache_set_minimum_values_hint, _cache_set_name,
- _cache_simulate_memory_warning_event, _cache_value_make_nonpurgeable_cb,
- _cache_value_make_purgeable_cb ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libcommonCrypto.dylib'
-current-version: 65535
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _CCAESCmac, _CCAESCmacCreate, _CCAESCmacDestroy, _CCAESCmacFinal,
- _CCAESCmacOutputSizeFromContext, _CCAESCmacUpdate, _CCBigNumAdd,
- _CCBigNumAddI, _CCBigNumBitCount, _CCBigNumByteCount, _CCBigNumClear,
- _CCBigNumCompare, _CCBigNumCompareI, _CCBigNumCopy, _CCBigNumCreateRandom,
- _CCBigNumDiv, _CCBigNumFree, _CCBigNumFromData, _CCBigNumFromDecimalString,
- _CCBigNumFromHexString, _CCBigNumGetI, _CCBigNumIsNegative,
- _CCBigNumIsPrime, _CCBigNumIsZero, _CCBigNumLeftShift, _CCBigNumMod,
- _CCBigNumModExp, _CCBigNumModI, _CCBigNumMul, _CCBigNumMulI,
- _CCBigNumMulMod, _CCBigNumRightShift, _CCBigNumSetI, _CCBigNumSetNegative,
- _CCBigNumSub, _CCBigNumSubI, _CCBigNumToData, _CCBigNumToDecimalString,
- _CCBigNumToHexString, _CCBigNumZeroLSBCount, _CCCKGContributorCommit,
- _CCCKGContributorCreate, _CCCKGContributorDestroy, _CCCKGContributorFinish,
- _CCCKGGetCommitmentSize, _CCCKGGetOpeningSize, _CCCKGGetShareSize,
- _CCCKGOwnerCreate, _CCCKGOwnerDestroy, _CCCKGOwnerFinish,
- _CCCKGOwnerGenerateShare, _CCCalibratePBKDF, _CCCreateBigNum,
- _CCCrypt, _CCCryptorAddParameter, _CCCryptorChaCha20, _CCCryptorChaCha20Poly1305OneshotDecrypt,
- _CCCryptorChaCha20Poly1305OneshotEncrypt, _CCCryptorCreate,
- _CCCryptorCreateFromData, _CCCryptorCreateFromDataWithMode,
- _CCCryptorCreateWithMode, _CCCryptorDecryptDataBlock, _CCCryptorEncryptDataBlock,
- _CCCryptorFinal, _CCCryptorGCM, _CCCryptorGCMAddAAD, _CCCryptorGCMAddADD,
- _CCCryptorGCMAddIV, _CCCryptorGCMDecrypt, _CCCryptorGCMEncrypt,
- _CCCryptorGCMFinal, _CCCryptorGCMFinalize, _CCCryptorGCMOneshotDecrypt,
- _CCCryptorGCMOneshotEncrypt, _CCCryptorGCMReset, _CCCryptorGCMSetIV,
- _CCCryptorGCMaddAAD, _CCCryptorGetIV, _CCCryptorGetOutputLength,
- _CCCryptorGetParameter, _CCCryptorRelease, _CCCryptorReset,
- _CCCryptorReset_binary_compatibility, _CCCryptorUpdate, _CCDHComputeKey,
- _CCDHCreate, _CCDHGenerateKey, _CCDHRelease, _CCDeriveKey,
- _CCDesCBCCksum, _CCDesIsWeakKey, _CCDesSetOddParity, _CCDigest,
- _CCDigestBlockSize, _CCDigestCreate, _CCDigestCreateByOID,
- _CCDigestDestroy, _CCDigestFinal, _CCDigestGetBlockSize, _CCDigestGetBlockSizeFromRef,
- _CCDigestGetOutputSize, _CCDigestGetOutputSizeFromRef, _CCDigestInit,
- _CCDigestOID, _CCDigestOIDLen, _CCDigestOutputSize, _CCDigestReset,
- _CCDigestUpdate, _CCECCryptorBlind, _CCECCryptorBlindingKeysRelease,
- _CCECCryptorComputeSharedSecret, _CCECCryptorCreateFromData,
- _CCECCryptorExportKey, _CCECCryptorExportPublicKey, _CCECCryptorGenerateBlindingKeys,
- _CCECCryptorGeneratePair, _CCECCryptorGetKeyComponents, _CCECCryptorGetPublicKeyFromPrivateKey,
- _CCECCryptorH2C, _CCECCryptorImportKey, _CCECCryptorImportPublicKey,
- _CCECCryptorRelease, _CCECCryptorSignHash, _CCECCryptorTwinDiversifyEntropySize,
- _CCECCryptorTwinDiversifyKey, _CCECCryptorUnblind, _CCECCryptorUnwrapKey,
- _CCECCryptorVerifyHash, _CCECCryptorWrapKey, _CCECGetKeySize,
- _CCECGetKeyType, _CCHKDFExpand, _CCHKDFExtract, _CCHmac, _CCHmacClone,
- _CCHmacCreate, _CCHmacDestroy, _CCHmacFinal, _CCHmacInit,
- _CCHmacOneShot, _CCHmacOutputSize, _CCHmacOutputSizeFromRef,
- _CCHmacUpdate, _CCKDFParametersCreateAnsiX963, _CCKDFParametersCreateCtrHmac,
- _CCKDFParametersCreateCtrHmacFixed, _CCKDFParametersCreateHkdf,
- _CCKDFParametersCreatePbkdf2, _CCKDFParametersDestroy, _CCKeyDerivationHMac,
- _CCKeyDerivationPBKDF, _CCRSACryptorCreateFromData, _CCRSACryptorCreatePublicKeyFromPrivateKey,
- _CCRSACryptorCrypt, _CCRSACryptorDecrypt, _CCRSACryptorEncrypt,
- _CCRSACryptorExport, _CCRSACryptorGeneratePair, _CCRSACryptorGetPublicKeyFromPrivateKey,
- _CCRSACryptorImport, _CCRSACryptorRecoverPrivateKey, _CCRSACryptorRelease,
- _CCRSACryptorSign, _CCRSACryptorVerify, _CCRSAGetCRTComponents,
- _CCRSAGetCRTComponentsSizes, _CCRSAGetKeyComponents, _CCRSAGetKeySize,
- _CCRSAGetKeyType, _CCRandomCopyBytes, _CCRandomGenerateBytes,
- _CCRandomUniform, _CCSymmetricKeyUnwrap, _CCSymmetricKeyWrap,
- _CCSymmetricUnwrappedSize, _CCSymmetricWrappedSize, _CC_MD2,
- _CC_MD2_Final, _CC_MD2_Init, _CC_MD2_Update, _CC_MD4, _CC_MD4_Final,
- _CC_MD4_Init, _CC_MD4_Update, _CC_MD5, _CC_MD5_Final, _CC_MD5_Init,
- _CC_MD5_Update, _CC_SHA1, _CC_SHA1_Final, _CC_SHA1_Init, _CC_SHA1_Update,
- _CC_SHA224, _CC_SHA224_Final, _CC_SHA224_Init, _CC_SHA224_Update,
- _CC_SHA256, _CC_SHA256_Final, _CC_SHA256_Init, _CC_SHA256_Update,
- _CC_SHA384, _CC_SHA384_Final, _CC_SHA384_Init, _CC_SHA384_Update,
- _CC_SHA512, _CC_SHA512_Final, _CC_SHA512_Init, _CC_SHA512_Update,
- _CCrfc3394_iv, _CCrfc3394_ivLen, _CNCRC, _CNCRCDumpTable,
- _CNCRCFinal, _CNCRCInit, _CNCRCRelease, _CNCRCUpdate, _CNCRCWeakTest,
- _CNEncode, _CNEncoderBlocksize, _CNEncoderBlocksizeFromRef,
- _CNEncoderCreate, _CNEncoderCreateCustom, _CNEncoderFinal,
- _CNEncoderGetOutputLength, _CNEncoderGetOutputLengthFromEncoding,
- _CNEncoderRelease, _CNEncoderUpdate, _MD5Final, _ccDRBGGetRngState,
- _ccDevRandomGetRngState, _kCCRandomDefault, _kCCRandomDevRandom ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
-install-name: '/usr/lib/system/libcompiler_rt.dylib'
-current-version: 103.1
-parent-umbrella:
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos ]
- symbols: [ '$ld$hide$os10.4$___absvti2', '$ld$hide$os10.4$___addvti3',
- '$ld$hide$os10.4$___ashlti3', '$ld$hide$os10.4$___ashrti3',
- '$ld$hide$os10.4$___cmpti2', '$ld$hide$os10.4$___ctzti2',
- '$ld$hide$os10.4$___ffsti2', '$ld$hide$os10.4$___fixunsxfti',
- '$ld$hide$os10.4$___fixxfti', '$ld$hide$os10.4$___floattixf',
- '$ld$hide$os10.4$___floatuntixf', '$ld$hide$os10.4$___lshrti3',
- '$ld$hide$os10.4$___multi3', '$ld$hide$os10.4$___mulvti3',
- '$ld$hide$os10.4$___negti2', '$ld$hide$os10.4$___negvti2',
- '$ld$hide$os10.4$___parityti2', '$ld$hide$os10.4$___popcountti2',
- '$ld$hide$os10.4$___subvti3', '$ld$hide$os10.4$___ucmpti2',
- '$ld$hide$os10.5$___absvti2', '$ld$hide$os10.5$___addvti3',
- '$ld$hide$os10.5$___ashlti3', '$ld$hide$os10.5$___ashrti3',
- '$ld$hide$os10.5$___cmpti2', '$ld$hide$os10.5$___ctzti2',
- '$ld$hide$os10.5$___ffsti2', '$ld$hide$os10.5$___fixunsxfti',
- '$ld$hide$os10.5$___fixxfti', '$ld$hide$os10.5$___floattixf',
- '$ld$hide$os10.5$___floatuntixf', '$ld$hide$os10.5$___lshrti3',
- '$ld$hide$os10.5$___multi3', '$ld$hide$os10.5$___mulvti3',
- '$ld$hide$os10.5$___negti2', '$ld$hide$os10.5$___negvti2',
- '$ld$hide$os10.5$___parityti2', '$ld$hide$os10.5$___popcountti2',
- '$ld$hide$os10.5$___subvti3', '$ld$hide$os10.5$___ucmpti2',
- ___absvdi2, ___absvsi2, ___absvti2, ___addvdi3, ___addvsi3,
- ___addvti3, ___ashldi3, ___ashlti3, ___ashrdi3, ___ashrti3,
- ___clzdi2, ___clzsi2, ___cmpdi2, ___cmpti2, ___ctzdi2, ___ctzsi2,
- ___ctzti2, ___divdc3, ___divdi3, ___divsc3, ___divxc3, ___ffsdi2,
- ___ffsti2, ___fixdfdi, ___fixsfdi, ___fixunsdfdi, ___fixunsdfsi,
- ___fixunssfdi, ___fixunssfsi, ___fixunsxfdi, ___fixunsxfsi,
- ___fixunsxfti, ___fixxfdi, ___fixxfti, ___floatdidf, ___floatdisf,
- ___floatdixf, ___floattixf, ___floatundidf, ___floatundisf,
- ___floatundixf, ___floatuntixf, ___lshrdi3, ___lshrti3, ___moddi3,
- ___muldi3, ___mulodi4, ___mulosi4, ___muloti4, ___multi3,
- ___mulvdi3, ___mulvsi3, ___mulvti3, ___mulxc3, ___negdi2,
- ___negti2, ___negvdi2, ___negvsi2, ___negvti2, ___paritydi2,
- ___paritysi2, ___parityti2, ___popcountdi2, ___popcountsi2,
- ___popcountti2, ___powixf2, ___subvdi3, ___subvsi3, ___subvti3,
- ___ucmpdi2, ___ucmpti2, ___udivdi3, ___udivmoddi4, ___umoddi3 ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ '$ld$hide$os10.10$___chkstk_darwin', '$ld$hide$os10.10$___extendhfsf2',
- '$ld$hide$os10.10$___truncdfhf2', '$ld$hide$os10.10$___truncsfhf2',
- '$ld$hide$os10.10$_atomic_flag_clear', '$ld$hide$os10.10$_atomic_flag_clear_explicit',
- '$ld$hide$os10.10$_atomic_flag_test_and_set', '$ld$hide$os10.10$_atomic_flag_test_and_set_explicit',
- '$ld$hide$os10.10$_atomic_signal_fence', '$ld$hide$os10.10$_atomic_thread_fence',
- '$ld$hide$os10.11$___chkstk_darwin', '$ld$hide$os10.12$___chkstk_darwin',
- '$ld$hide$os10.13$___chkstk_darwin', '$ld$hide$os10.14$___chkstk_darwin',
- '$ld$hide$os10.4$___absvdi2', '$ld$hide$os10.4$___absvsi2',
- '$ld$hide$os10.4$___addvdi3', '$ld$hide$os10.4$___addvsi3',
- '$ld$hide$os10.4$___ashldi3', '$ld$hide$os10.4$___ashrdi3',
- '$ld$hide$os10.4$___clear_cache', '$ld$hide$os10.4$___clzdi2',
- '$ld$hide$os10.4$___clzsi2', '$ld$hide$os10.4$___clzti2',
- '$ld$hide$os10.4$___cmpdi2', '$ld$hide$os10.4$___ctzdi2',
- '$ld$hide$os10.4$___ctzsi2', '$ld$hide$os10.4$___divdc3',
- '$ld$hide$os10.4$___divdi3', '$ld$hide$os10.4$___divsc3',
- '$ld$hide$os10.4$___divti3', '$ld$hide$os10.4$___divxc3',
- '$ld$hide$os10.4$___enable_execute_stack', '$ld$hide$os10.4$___ffsdi2',
- '$ld$hide$os10.4$___fixdfdi', '$ld$hide$os10.4$___fixdfti',
- '$ld$hide$os10.4$___fixsfdi', '$ld$hide$os10.4$___fixsfti',
- '$ld$hide$os10.4$___fixunsdfdi', '$ld$hide$os10.4$___fixunsdfsi',
- '$ld$hide$os10.4$___fixunsdfti', '$ld$hide$os10.4$___fixunssfdi',
- '$ld$hide$os10.4$___fixunssfsi', '$ld$hide$os10.4$___fixunssfti',
- '$ld$hide$os10.4$___fixunsxfdi', '$ld$hide$os10.4$___fixunsxfsi',
- '$ld$hide$os10.4$___fixxfdi', '$ld$hide$os10.4$___floatdidf',
- '$ld$hide$os10.4$___floatdisf', '$ld$hide$os10.4$___floatdixf',
- '$ld$hide$os10.4$___floattidf', '$ld$hide$os10.4$___floattisf',
- '$ld$hide$os10.4$___floatundidf', '$ld$hide$os10.4$___floatundisf',
- '$ld$hide$os10.4$___floatundixf', '$ld$hide$os10.4$___floatuntidf',
- '$ld$hide$os10.4$___floatuntisf', '$ld$hide$os10.4$___gcc_personality_v0',
- '$ld$hide$os10.4$___lshrdi3', '$ld$hide$os10.4$___moddi3',
- '$ld$hide$os10.4$___modti3', '$ld$hide$os10.4$___muldc3',
- '$ld$hide$os10.4$___muldi3', '$ld$hide$os10.4$___mulsc3',
- '$ld$hide$os10.4$___mulvdi3', '$ld$hide$os10.4$___mulvsi3',
- '$ld$hide$os10.4$___mulxc3', '$ld$hide$os10.4$___negdi2',
- '$ld$hide$os10.4$___negvdi2', '$ld$hide$os10.4$___negvsi2',
- '$ld$hide$os10.4$___paritydi2', '$ld$hide$os10.4$___paritysi2',
- '$ld$hide$os10.4$___popcountdi2', '$ld$hide$os10.4$___popcountsi2',
- '$ld$hide$os10.4$___powidf2', '$ld$hide$os10.4$___powisf2',
- '$ld$hide$os10.4$___powixf2', '$ld$hide$os10.4$___subvdi3',
- '$ld$hide$os10.4$___subvsi3', '$ld$hide$os10.4$___ucmpdi2',
- '$ld$hide$os10.4$___udivdi3', '$ld$hide$os10.4$___udivmoddi4',
- '$ld$hide$os10.4$___udivmodti4', '$ld$hide$os10.4$___udivti3',
- '$ld$hide$os10.4$___umoddi3', '$ld$hide$os10.4$___umodti3',
- '$ld$hide$os10.5$___absvdi2', '$ld$hide$os10.5$___absvsi2',
- '$ld$hide$os10.5$___addvdi3', '$ld$hide$os10.5$___addvsi3',
- '$ld$hide$os10.5$___ashldi3', '$ld$hide$os10.5$___ashrdi3',
- '$ld$hide$os10.5$___clear_cache', '$ld$hide$os10.5$___clzdi2',
- '$ld$hide$os10.5$___clzsi2', '$ld$hide$os10.5$___clzti2',
- '$ld$hide$os10.5$___cmpdi2', '$ld$hide$os10.5$___ctzdi2',
- '$ld$hide$os10.5$___ctzsi2', '$ld$hide$os10.5$___divdc3',
- '$ld$hide$os10.5$___divdi3', '$ld$hide$os10.5$___divsc3',
- '$ld$hide$os10.5$___divti3', '$ld$hide$os10.5$___divxc3',
- '$ld$hide$os10.5$___enable_execute_stack', '$ld$hide$os10.5$___ffsdi2',
- '$ld$hide$os10.5$___fixdfdi', '$ld$hide$os10.5$___fixdfti',
- '$ld$hide$os10.5$___fixsfdi', '$ld$hide$os10.5$___fixsfti',
- '$ld$hide$os10.5$___fixunsdfdi', '$ld$hide$os10.5$___fixunsdfsi',
- '$ld$hide$os10.5$___fixunsdfti', '$ld$hide$os10.5$___fixunssfdi',
- '$ld$hide$os10.5$___fixunssfsi', '$ld$hide$os10.5$___fixunssfti',
- '$ld$hide$os10.5$___fixunsxfdi', '$ld$hide$os10.5$___fixunsxfsi',
- '$ld$hide$os10.5$___fixxfdi', '$ld$hide$os10.5$___floatdidf',
- '$ld$hide$os10.5$___floatdisf', '$ld$hide$os10.5$___floatdixf',
- '$ld$hide$os10.5$___floattidf', '$ld$hide$os10.5$___floattisf',
- '$ld$hide$os10.5$___floatundidf', '$ld$hide$os10.5$___floatundisf',
- '$ld$hide$os10.5$___floatundixf', '$ld$hide$os10.5$___floatuntidf',
- '$ld$hide$os10.5$___floatuntisf', '$ld$hide$os10.5$___gcc_personality_v0',
- '$ld$hide$os10.5$___lshrdi3', '$ld$hide$os10.5$___moddi3',
- '$ld$hide$os10.5$___modti3', '$ld$hide$os10.5$___muldc3',
- '$ld$hide$os10.5$___muldi3', '$ld$hide$os10.5$___mulsc3',
- '$ld$hide$os10.5$___mulvdi3', '$ld$hide$os10.5$___mulvsi3',
- '$ld$hide$os10.5$___mulxc3', '$ld$hide$os10.5$___negdi2',
- '$ld$hide$os10.5$___negvdi2', '$ld$hide$os10.5$___negvsi2',
- '$ld$hide$os10.5$___paritydi2', '$ld$hide$os10.5$___paritysi2',
- '$ld$hide$os10.5$___popcountdi2', '$ld$hide$os10.5$___popcountsi2',
- '$ld$hide$os10.5$___powidf2', '$ld$hide$os10.5$___powisf2',
- '$ld$hide$os10.5$___powixf2', '$ld$hide$os10.5$___subvdi3',
- '$ld$hide$os10.5$___subvsi3', '$ld$hide$os10.5$___ucmpdi2',
- '$ld$hide$os10.5$___udivdi3', '$ld$hide$os10.5$___udivmoddi4',
- '$ld$hide$os10.5$___udivmodti4', '$ld$hide$os10.5$___udivti3',
- '$ld$hide$os10.5$___umoddi3', '$ld$hide$os10.5$___umodti3',
- '$ld$hide$os10.6$___atomic_compare_exchange', '$ld$hide$os10.6$___atomic_compare_exchange_1',
- '$ld$hide$os10.6$___atomic_compare_exchange_2', '$ld$hide$os10.6$___atomic_compare_exchange_4',
- '$ld$hide$os10.6$___atomic_compare_exchange_8', '$ld$hide$os10.6$___atomic_exchange',
- '$ld$hide$os10.6$___atomic_exchange_1', '$ld$hide$os10.6$___atomic_exchange_2',
- '$ld$hide$os10.6$___atomic_exchange_4', '$ld$hide$os10.6$___atomic_exchange_8',
- '$ld$hide$os10.6$___atomic_fetch_add_1', '$ld$hide$os10.6$___atomic_fetch_add_2',
- '$ld$hide$os10.6$___atomic_fetch_add_4', '$ld$hide$os10.6$___atomic_fetch_add_8',
- '$ld$hide$os10.6$___atomic_fetch_and_1', '$ld$hide$os10.6$___atomic_fetch_and_2',
- '$ld$hide$os10.6$___atomic_fetch_and_4', '$ld$hide$os10.6$___atomic_fetch_and_8',
- '$ld$hide$os10.6$___atomic_fetch_or_1', '$ld$hide$os10.6$___atomic_fetch_or_2',
- '$ld$hide$os10.6$___atomic_fetch_or_4', '$ld$hide$os10.6$___atomic_fetch_or_8',
- '$ld$hide$os10.6$___atomic_fetch_sub_1', '$ld$hide$os10.6$___atomic_fetch_sub_2',
- '$ld$hide$os10.6$___atomic_fetch_sub_4', '$ld$hide$os10.6$___atomic_fetch_sub_8',
- '$ld$hide$os10.6$___atomic_fetch_xor_1', '$ld$hide$os10.6$___atomic_fetch_xor_2',
- '$ld$hide$os10.6$___atomic_fetch_xor_4', '$ld$hide$os10.6$___atomic_fetch_xor_8',
- '$ld$hide$os10.6$___atomic_load', '$ld$hide$os10.6$___atomic_load_1',
- '$ld$hide$os10.6$___atomic_load_2', '$ld$hide$os10.6$___atomic_load_4',
- '$ld$hide$os10.6$___atomic_load_8', '$ld$hide$os10.6$___atomic_store',
- '$ld$hide$os10.6$___atomic_store_1', '$ld$hide$os10.6$___atomic_store_2',
- '$ld$hide$os10.6$___atomic_store_4', '$ld$hide$os10.6$___atomic_store_8',
- '$ld$hide$os10.6$___chkstk_darwin', '$ld$hide$os10.6$___extendhfsf2',
- '$ld$hide$os10.6$___truncdfhf2', '$ld$hide$os10.6$___truncsfhf2',
- '$ld$hide$os10.6$_atomic_flag_clear', '$ld$hide$os10.6$_atomic_flag_clear_explicit',
- '$ld$hide$os10.6$_atomic_flag_test_and_set', '$ld$hide$os10.6$_atomic_flag_test_and_set_explicit',
- '$ld$hide$os10.6$_atomic_signal_fence', '$ld$hide$os10.6$_atomic_thread_fence',
- '$ld$hide$os10.7$___atomic_compare_exchange', '$ld$hide$os10.7$___atomic_compare_exchange_1',
- '$ld$hide$os10.7$___atomic_compare_exchange_2', '$ld$hide$os10.7$___atomic_compare_exchange_4',
- '$ld$hide$os10.7$___atomic_compare_exchange_8', '$ld$hide$os10.7$___atomic_exchange',
- '$ld$hide$os10.7$___atomic_exchange_1', '$ld$hide$os10.7$___atomic_exchange_2',
- '$ld$hide$os10.7$___atomic_exchange_4', '$ld$hide$os10.7$___atomic_exchange_8',
- '$ld$hide$os10.7$___atomic_fetch_add_1', '$ld$hide$os10.7$___atomic_fetch_add_2',
- '$ld$hide$os10.7$___atomic_fetch_add_4', '$ld$hide$os10.7$___atomic_fetch_add_8',
- '$ld$hide$os10.7$___atomic_fetch_and_1', '$ld$hide$os10.7$___atomic_fetch_and_2',
- '$ld$hide$os10.7$___atomic_fetch_and_4', '$ld$hide$os10.7$___atomic_fetch_and_8',
- '$ld$hide$os10.7$___atomic_fetch_or_1', '$ld$hide$os10.7$___atomic_fetch_or_2',
- '$ld$hide$os10.7$___atomic_fetch_or_4', '$ld$hide$os10.7$___atomic_fetch_or_8',
- '$ld$hide$os10.7$___atomic_fetch_sub_1', '$ld$hide$os10.7$___atomic_fetch_sub_2',
- '$ld$hide$os10.7$___atomic_fetch_sub_4', '$ld$hide$os10.7$___atomic_fetch_sub_8',
- '$ld$hide$os10.7$___atomic_fetch_xor_1', '$ld$hide$os10.7$___atomic_fetch_xor_2',
- '$ld$hide$os10.7$___atomic_fetch_xor_4', '$ld$hide$os10.7$___atomic_fetch_xor_8',
- '$ld$hide$os10.7$___atomic_load', '$ld$hide$os10.7$___atomic_load_1',
- '$ld$hide$os10.7$___atomic_load_2', '$ld$hide$os10.7$___atomic_load_4',
- '$ld$hide$os10.7$___atomic_load_8', '$ld$hide$os10.7$___atomic_store',
- '$ld$hide$os10.7$___atomic_store_1', '$ld$hide$os10.7$___atomic_store_2',
- '$ld$hide$os10.7$___atomic_store_4', '$ld$hide$os10.7$___atomic_store_8',
- '$ld$hide$os10.7$___chkstk_darwin', '$ld$hide$os10.7$___extendhfsf2',
- '$ld$hide$os10.7$___truncdfhf2', '$ld$hide$os10.7$___truncsfhf2',
- '$ld$hide$os10.7$_atomic_flag_clear', '$ld$hide$os10.7$_atomic_flag_clear_explicit',
- '$ld$hide$os10.7$_atomic_flag_test_and_set', '$ld$hide$os10.7$_atomic_flag_test_and_set_explicit',
- '$ld$hide$os10.7$_atomic_signal_fence', '$ld$hide$os10.7$_atomic_thread_fence',
- '$ld$hide$os10.8$___atomic_compare_exchange', '$ld$hide$os10.8$___atomic_compare_exchange_1',
- '$ld$hide$os10.8$___atomic_compare_exchange_2', '$ld$hide$os10.8$___atomic_compare_exchange_4',
- '$ld$hide$os10.8$___atomic_compare_exchange_8', '$ld$hide$os10.8$___atomic_exchange',
- '$ld$hide$os10.8$___atomic_exchange_1', '$ld$hide$os10.8$___atomic_exchange_2',
- '$ld$hide$os10.8$___atomic_exchange_4', '$ld$hide$os10.8$___atomic_exchange_8',
- '$ld$hide$os10.8$___atomic_fetch_add_1', '$ld$hide$os10.8$___atomic_fetch_add_2',
- '$ld$hide$os10.8$___atomic_fetch_add_4', '$ld$hide$os10.8$___atomic_fetch_add_8',
- '$ld$hide$os10.8$___atomic_fetch_and_1', '$ld$hide$os10.8$___atomic_fetch_and_2',
- '$ld$hide$os10.8$___atomic_fetch_and_4', '$ld$hide$os10.8$___atomic_fetch_and_8',
- '$ld$hide$os10.8$___atomic_fetch_or_1', '$ld$hide$os10.8$___atomic_fetch_or_2',
- '$ld$hide$os10.8$___atomic_fetch_or_4', '$ld$hide$os10.8$___atomic_fetch_or_8',
- '$ld$hide$os10.8$___atomic_fetch_sub_1', '$ld$hide$os10.8$___atomic_fetch_sub_2',
- '$ld$hide$os10.8$___atomic_fetch_sub_4', '$ld$hide$os10.8$___atomic_fetch_sub_8',
- '$ld$hide$os10.8$___atomic_fetch_xor_1', '$ld$hide$os10.8$___atomic_fetch_xor_2',
- '$ld$hide$os10.8$___atomic_fetch_xor_4', '$ld$hide$os10.8$___atomic_fetch_xor_8',
- '$ld$hide$os10.8$___atomic_load', '$ld$hide$os10.8$___atomic_load_1',
- '$ld$hide$os10.8$___atomic_load_2', '$ld$hide$os10.8$___atomic_load_4',
- '$ld$hide$os10.8$___atomic_load_8', '$ld$hide$os10.8$___atomic_store',
- '$ld$hide$os10.8$___atomic_store_1', '$ld$hide$os10.8$___atomic_store_2',
- '$ld$hide$os10.8$___atomic_store_4', '$ld$hide$os10.8$___atomic_store_8',
- '$ld$hide$os10.8$___chkstk_darwin', '$ld$hide$os10.8$___extendhfsf2',
- '$ld$hide$os10.8$___truncdfhf2', '$ld$hide$os10.8$___truncsfhf2',
- '$ld$hide$os10.8$_atomic_flag_clear', '$ld$hide$os10.8$_atomic_flag_clear_explicit',
- '$ld$hide$os10.8$_atomic_flag_test_and_set', '$ld$hide$os10.8$_atomic_flag_test_and_set_explicit',
- '$ld$hide$os10.8$_atomic_signal_fence', '$ld$hide$os10.8$_atomic_thread_fence',
- '$ld$hide$os10.9$___chkstk_darwin', '$ld$hide$os10.9$___extendhfsf2',
- '$ld$hide$os10.9$___truncdfhf2', '$ld$hide$os10.9$___truncsfhf2',
- '$ld$hide$os10.9$_atomic_flag_clear', '$ld$hide$os10.9$_atomic_flag_clear_explicit',
- '$ld$hide$os10.9$_atomic_flag_test_and_set', '$ld$hide$os10.9$_atomic_flag_test_and_set_explicit',
- '$ld$hide$os10.9$_atomic_signal_fence', '$ld$hide$os10.9$_atomic_thread_fence',
- ___atomic_compare_exchange, ___atomic_compare_exchange_1,
- ___atomic_compare_exchange_2, ___atomic_compare_exchange_4,
- ___atomic_compare_exchange_8, ___atomic_exchange, ___atomic_exchange_1,
- ___atomic_exchange_2, ___atomic_exchange_4, ___atomic_exchange_8,
- ___atomic_fetch_add_1, ___atomic_fetch_add_2, ___atomic_fetch_add_4,
- ___atomic_fetch_add_8, ___atomic_fetch_and_1, ___atomic_fetch_and_2,
- ___atomic_fetch_and_4, ___atomic_fetch_and_8, ___atomic_fetch_or_1,
- ___atomic_fetch_or_2, ___atomic_fetch_or_4, ___atomic_fetch_or_8,
- ___atomic_fetch_sub_1, ___atomic_fetch_sub_2, ___atomic_fetch_sub_4,
- ___atomic_fetch_sub_8, ___atomic_fetch_xor_1, ___atomic_fetch_xor_2,
- ___atomic_fetch_xor_4, ___atomic_fetch_xor_8, ___atomic_is_lock_free,
- ___atomic_load, ___atomic_load_1, ___atomic_load_2, ___atomic_load_4,
- ___atomic_load_8, ___atomic_store, ___atomic_store_1, ___atomic_store_2,
- ___atomic_store_4, ___atomic_store_8, ___chkstk_darwin, ___clear_cache,
- ___clzti2, ___divti3, ___enable_execute_stack, ___extendhfsf2,
- ___fixdfti, ___fixsfti, ___fixunsdfti, ___fixunssfti, ___floattidf,
- ___floattisf, ___floatuntidf, ___floatuntisf, ___gcc_personality_v0,
- ___gnu_f2h_ieee, ___gnu_h2f_ieee, ___modti3, ___muldc3, ___mulsc3,
- ___powidf2, ___powisf2, ___truncdfhf2, ___truncsfhf2, ___udivmodti4,
- ___udivti3, ___umodti3, _atomic_flag_clear, _atomic_flag_clear_explicit,
- _atomic_flag_test_and_set, _atomic_flag_test_and_set_explicit,
- _atomic_signal_fence, _atomic_thread_fence ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libcopyfile.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _copyfile, _copyfile_state_alloc, _copyfile_state_free, _copyfile_state_get,
- _copyfile_state_set, _fcopyfile, _xattr_flags_from_name, _xattr_intent_with_flags,
- _xattr_name_with_flags, _xattr_name_without_flags, _xattr_preserve_for_intent ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libcorecrypto.dylib'
-current-version: 1608.0.18
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ _ccaes_intel_cbc_decrypt_aesni_mode, _ccaes_intel_cbc_decrypt_opt_mode,
- _ccaes_intel_cbc_encrypt_aesni_mode, _ccaes_intel_cbc_encrypt_opt_mode,
- _ccaes_intel_ecb_decrypt_aesni_mode, _ccaes_intel_ecb_decrypt_opt_mode,
- _ccaes_intel_ecb_encrypt_aesni_mode, _ccaes_intel_ecb_encrypt_opt_mode,
- _ccaes_intel_xts_decrypt_aesni_mode, _ccaes_intel_xts_decrypt_opt_mode,
- _ccaes_intel_xts_encrypt_aesni_mode, _ccaes_intel_xts_encrypt_opt_mode,
- _ccsha1_vng_intel_SupplementalSSE3_di, _ccsha224_vng_intel_SupplementalSSE3_di,
- _ccsha256_vng_intel_SupplementalSSE3_di ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _CCEC_FAULT_CANARY, _CCRSA_PKCS1_FAULT_CANARY, _CCRSA_PSS_FAULT_CANARY,
- _CCSS_PRIME_P192, _CCSS_PRIME_P224, _CCSS_PRIME_P256, _CCSS_PRIME_P384,
- _CCSS_PRIME_P521, _cc_abort, _cc_atfork_child, _cc_atfork_parent,
- _cc_atfork_prepare, _cc_clear, _cc_cmp_safe, _cc_impl_name,
- _cc_try_abort, _cc_try_abort_if, _ccaes_cbc_decrypt_mode,
- _ccaes_cbc_encrypt_mode, _ccaes_ccm_decrypt_mode, _ccaes_ccm_encrypt_mode,
- _ccaes_cfb8_decrypt_mode, _ccaes_cfb8_encrypt_mode, _ccaes_cfb_decrypt_mode,
- _ccaes_cfb_encrypt_mode, _ccaes_ctr_crypt_mode, _ccaes_ecb_decrypt_mode,
- _ccaes_ecb_encrypt_mode, _ccaes_gcm_decrypt_mode, _ccaes_gcm_encrypt_mode,
- _ccaes_gladman_cbc_decrypt_mode, _ccaes_gladman_cbc_encrypt_mode,
- _ccaes_ltc_ecb_decrypt_mode, _ccaes_ltc_ecb_encrypt_mode,
- _ccaes_ofb_crypt_mode, _ccaes_siv_decrypt_mode, _ccaes_siv_encrypt_mode,
- _ccaes_siv_hmac_sha256_decrypt_mode, _ccaes_siv_hmac_sha256_encrypt_mode,
- _ccaes_unwind, _ccaes_xts_decrypt_mode, _ccaes_xts_encrypt_mode,
- _ccansikdf_x963, _ccapsic_client_check_intersect_response,
- _ccapsic_client_generate_match_response, _ccapsic_client_init,
- _ccapsic_client_state_sizeof, _ccapsic_server_determine_intersection,
- _ccapsic_server_encode_element, _ccapsic_server_init, _ccapsic_server_state_sizeof,
- _ccbfv_bytes_to_coeffs, _ccbfv_ciphertext_apply_galois, _ccbfv_ciphertext_coeff_compose,
- _ccbfv_ciphertext_coeff_dcrt_plaintext_mul, _ccbfv_ciphertext_coeff_decompose,
- _ccbfv_ciphertext_coeff_decompose_nptexts, _ccbfv_ciphertext_coeff_plaintext_mul,
- _ccbfv_ciphertext_eval_dcrt_plaintext_mul, _ccbfv_ciphertext_eval_plaintext_mul,
- _ccbfv_ciphertext_fresh_npolys, _ccbfv_ciphertext_fwd_ntt,
- _ccbfv_ciphertext_galois_elt_rotate_rows_left, _ccbfv_ciphertext_galois_elt_rotate_rows_right,
- _ccbfv_ciphertext_galois_elt_swap_columns, _ccbfv_ciphertext_inv_ntt,
- _ccbfv_ciphertext_plaintext_add, _ccbfv_ciphertext_sizeof,
- _ccbfv_coeffs_to_bytes, _ccbfv_dcrt_plaintext_encode, _ccbfv_dcrt_plaintext_sizeof,
- _ccbfv_decode_poly_uint64, _ccbfv_decode_simd_int64, _ccbfv_decode_simd_uint64,
- _ccbfv_decrypt, _ccbfv_deserialize_ciphertext_coeff, _ccbfv_deserialize_ciphertext_eval,
- _ccbfv_deserialize_seeded_ciphertext_coeff, _ccbfv_deserialize_seeded_ciphertext_eval,
- _ccbfv_encode_poly_uint64, _ccbfv_encode_simd_int64, _ccbfv_encode_simd_uint64,
- _ccbfv_encrypt_symmetric, _ccbfv_encryption_params_coefficient_moduli,
- _ccbfv_encryption_params_coefficient_nmoduli, _ccbfv_encryption_params_plaintext_modulus,
- _ccbfv_encryption_params_polynomial_degree, _ccbfv_galois_key_generate,
- _ccbfv_galois_key_load, _ccbfv_galois_key_save, _ccbfv_galois_key_sizeof,
- _ccbfv_param_ctx_ciphertext_ctx_nmoduli, _ccbfv_param_ctx_init,
- _ccbfv_param_ctx_key_ctx_nmoduli, _ccbfv_param_ctx_key_ctx_poly_nbytes,
- _ccbfv_param_ctx_plaintext_modulus, _ccbfv_param_ctx_plaintext_modulus_inverse,
- _ccbfv_param_ctx_polynomial_degree, _ccbfv_param_ctx_sizeof,
- _ccbfv_param_ctx_supports_simd_encoding, _ccbfv_plaintext_sizeof,
- _ccbfv_relin_key_generate, _ccbfv_relin_key_load, _ccbfv_relin_key_save,
- _ccbfv_relin_key_sizeof, _ccbfv_rng_seed_sizeof, _ccbfv_secret_key_generate,
- _ccbfv_secret_key_generate_from_seed, _ccbfv_secret_key_sizeof,
- _ccbfv_serialize_ciphertext_coeff, _ccbfv_serialize_ciphertext_coeff_nbytes,
- _ccbfv_serialize_ciphertext_eval, _ccbfv_serialize_ciphertext_eval_nbytes,
- _ccbfv_serialize_seeded_ciphertext_coeff, _ccbfv_serialize_seeded_ciphertext_coeff_nbytes,
- _ccbfv_serialize_seeded_ciphertext_eval, _ccbfv_serialize_seeded_ciphertext_eval_nbytes,
- _ccblowfish_cbc_decrypt_mode, _ccblowfish_cbc_encrypt_mode,
- _ccblowfish_cfb8_decrypt_mode, _ccblowfish_cfb8_encrypt_mode,
- _ccblowfish_cfb_decrypt_mode, _ccblowfish_cfb_encrypt_mode,
- _ccblowfish_ctr_crypt_mode, _ccblowfish_ecb_decrypt_mode,
- _ccblowfish_ecb_encrypt_mode, _ccblowfish_ofb_crypt_mode,
- _cccast_cbc_decrypt_mode, _cccast_cbc_encrypt_mode, _cccast_cfb8_decrypt_mode,
- _cccast_cfb8_encrypt_mode, _cccast_cfb_decrypt_mode, _cccast_cfb_encrypt_mode,
- _cccast_ctr_crypt_mode, _cccast_ecb_decrypt_mode, _cccast_ecb_encrypt_mode,
- _cccast_ofb_crypt_mode, _cccbc_block_size, _cccbc_clear_iv,
- _cccbc_context_size, _cccbc_copy_iv, _cccbc_init, _cccbc_one_shot,
- _cccbc_one_shot_explicit, _cccbc_set_iv, _cccbc_update, _ccccm_aad,
- _ccccm_block_size, _ccccm_cbcmac, _ccccm_context_size, _ccccm_decrypt,
- _ccccm_encrypt, _ccccm_finalize, _ccccm_finalize_and_generate_tag,
- _ccccm_finalize_and_verify_tag, _ccccm_init, _ccccm_one_shot,
- _ccccm_one_shot_decrypt, _ccccm_one_shot_encrypt, _ccccm_reset,
- _ccccm_set_iv, _ccccm_update, _cccfb8_block_size, _cccfb8_context_size,
- _cccfb8_init, _cccfb8_one_shot, _cccfb8_update, _cccfb_block_size,
- _cccfb_context_size, _cccfb_init, _cccfb_one_shot, _cccfb_update,
- _ccchacha20, _ccchacha20_final, _ccchacha20_init, _ccchacha20_reset,
- _ccchacha20_setcounter, _ccchacha20_setnonce, _ccchacha20_update,
- _ccchacha20poly1305_aad, _ccchacha20poly1305_decrypt, _ccchacha20poly1305_decrypt_oneshot,
- _ccchacha20poly1305_encrypt, _ccchacha20poly1305_encrypt_oneshot,
- _ccchacha20poly1305_finalize, _ccchacha20poly1305_incnonce,
- _ccchacha20poly1305_info, _ccchacha20poly1305_init, _ccchacha20poly1305_reset,
- _ccchacha20poly1305_setnonce, _ccchacha20poly1305_verify,
- _ccckg_contributor_commit, _ccckg_contributor_finish, _ccckg_init,
- _ccckg_owner_finish, _ccckg_owner_generate_share, _ccckg_sizeof_commitment,
- _ccckg_sizeof_ctx, _ccckg_sizeof_opening, _ccckg_sizeof_share,
- _cccmac_final_generate, _cccmac_final_verify, _cccmac_init,
- _cccmac_one_shot_generate, _cccmac_one_shot_verify, _cccmac_update,
- _ccctr_block_size, _ccctr_context_size, _ccctr_init, _ccctr_one_shot,
- _ccctr_update, _cccurve25519, _cccurve25519_make_key_pair,
- _cccurve25519_make_priv, _cccurve25519_make_pub, _cccurve25519_make_pub_with_rng,
- _cccurve25519_with_rng, _cccurve448, _cccurve448_make_key_pair,
- _cccurve448_make_priv, _cccurve448_make_pub, _ccder_blob_decode_bitstring,
- _ccder_blob_decode_eckey, _ccder_blob_decode_len, _ccder_blob_decode_len_strict,
- _ccder_blob_decode_oid, _ccder_blob_decode_range, _ccder_blob_decode_range_strict,
- _ccder_blob_decode_seqii, _ccder_blob_decode_seqii_strict,
- _ccder_blob_decode_sequence_tl, _ccder_blob_decode_sequence_tl_strict,
- _ccder_blob_decode_tag, _ccder_blob_decode_tl, _ccder_blob_decode_tl_strict,
- _ccder_blob_decode_uint, _ccder_blob_decode_uint64, _ccder_blob_decode_uint_n,
- _ccder_blob_decode_uint_strict, _ccder_blob_encode_body, _ccder_blob_encode_body_tl,
- _ccder_blob_encode_eckey, _ccder_blob_encode_implicit_integer,
- _ccder_blob_encode_implicit_octet_string, _ccder_blob_encode_implicit_raw_octet_string,
- _ccder_blob_encode_implicit_uint64, _ccder_blob_encode_integer,
- _ccder_blob_encode_len, _ccder_blob_encode_octet_string, _ccder_blob_encode_oid,
- _ccder_blob_encode_raw_octet_string, _ccder_blob_encode_tag,
- _ccder_blob_encode_tl, _ccder_blob_encode_uint64, _ccder_blob_reserve,
- _ccder_blob_reserve_tl, _ccder_decode_bitstring, _ccder_decode_constructed_tl,
- _ccder_decode_constructed_tl_strict, _ccder_decode_dhparam_n,
- _ccder_decode_dhparams, _ccder_decode_eckey, _ccder_decode_len,
- _ccder_decode_len_strict, _ccder_decode_oid, _ccder_decode_rsa_priv,
- _ccder_decode_rsa_priv_n, _ccder_decode_rsa_pub, _ccder_decode_rsa_pub_n,
- _ccder_decode_rsa_pub_x509, _ccder_decode_rsa_pub_x509_n,
- _ccder_decode_seqii, _ccder_decode_seqii_strict, _ccder_decode_sequence_tl,
- _ccder_decode_sequence_tl_strict, _ccder_decode_tag, _ccder_decode_tl,
- _ccder_decode_tl_strict, _ccder_decode_uint, _ccder_decode_uint64,
- _ccder_decode_uint_n, _ccder_decode_uint_strict, _ccder_encode_body,
- _ccder_encode_body_nocopy, _ccder_encode_constructed_tl, _ccder_encode_dhparams,
- _ccder_encode_dhparams_size, _ccder_encode_eckey, _ccder_encode_eckey_size,
- _ccder_encode_implicit_integer, _ccder_encode_implicit_octet_string,
- _ccder_encode_implicit_raw_octet_string, _ccder_encode_implicit_uint64,
- _ccder_encode_integer, _ccder_encode_len, _ccder_encode_octet_string,
- _ccder_encode_oid, _ccder_encode_raw_octet_string, _ccder_encode_rsa_priv,
- _ccder_encode_rsa_priv_size, _ccder_encode_rsa_pub, _ccder_encode_rsa_pub_size,
- _ccder_encode_tag, _ccder_encode_tl, _ccder_encode_uint64,
- _ccder_sizeof, _ccder_sizeof_eckey, _ccder_sizeof_implicit_integer,
- _ccder_sizeof_implicit_octet_string, _ccder_sizeof_implicit_raw_octet_string,
- _ccder_sizeof_implicit_raw_octet_string_overflow, _ccder_sizeof_implicit_uint64,
- _ccder_sizeof_integer, _ccder_sizeof_len, _ccder_sizeof_octet_string,
- _ccder_sizeof_oid, _ccder_sizeof_overflow, _ccder_sizeof_raw_octet_string,
- _ccder_sizeof_tag, _ccder_sizeof_uint64, _ccdes3_cbc_decrypt_mode,
- _ccdes3_cbc_encrypt_mode, _ccdes3_cfb8_decrypt_mode, _ccdes3_cfb8_encrypt_mode,
- _ccdes3_cfb_decrypt_mode, _ccdes3_cfb_encrypt_mode, _ccdes3_ctr_crypt_mode,
- _ccdes3_ecb_decrypt_mode, _ccdes3_ecb_encrypt_mode, _ccdes3_ltc_ecb_decrypt_mode,
- _ccdes3_ltc_ecb_encrypt_mode, _ccdes3_ofb_crypt_mode, _ccdes_cbc_cksum,
- _ccdes_cbc_decrypt_mode, _ccdes_cbc_encrypt_mode, _ccdes_cfb8_decrypt_mode,
- _ccdes_cfb8_encrypt_mode, _ccdes_cfb_decrypt_mode, _ccdes_cfb_encrypt_mode,
- _ccdes_ctr_crypt_mode, _ccdes_ecb_decrypt_mode, _ccdes_ecb_encrypt_mode,
- _ccdes_key_is_weak, _ccdes_key_set_odd_parity, _ccdes_ofb_crypt_mode,
- _ccdh_ccn_size, _ccdh_compute_shared_secret, _ccdh_ctx_init,
- _ccdh_ctx_public, _ccdh_export_pub, _ccdh_export_pub_size,
- _ccdh_generate_key, _ccdh_gp_apple768, _ccdh_gp_g, _ccdh_gp_l,
- _ccdh_gp_n, _ccdh_gp_order, _ccdh_gp_order_bitlen, _ccdh_gp_prime,
- _ccdh_gp_rfc2409group02, _ccdh_gp_rfc3526group05, _ccdh_gp_rfc3526group14,
- _ccdh_gp_rfc3526group15, _ccdh_gp_rfc3526group16, _ccdh_gp_rfc3526group17,
- _ccdh_gp_rfc3526group18, _ccdh_gp_rfc5114_MODP_1024_160, _ccdh_gp_rfc5114_MODP_2048_224,
- _ccdh_gp_rfc5114_MODP_2048_256, _ccdh_gp_size, _ccdh_import_full,
- _ccdh_import_priv, _ccdh_import_pub, _ccdh_init_gp_from_bytes,
- _ccdigest, _ccdigest_init, _ccdigest_oid_lookup, _ccdigest_update,
- _ccdrbg_context_size, _ccdrbg_df_bc_init, _ccdrbg_done, _ccdrbg_factory_nistctr,
- _ccdrbg_factory_nisthmac, _ccdrbg_generate, _ccdrbg_init,
- _ccdrbg_must_reseed, _ccdrbg_reseed, _ccec_affinify, _ccec_blind,
- _ccec_compact_export, _ccec_compact_export_pub, _ccec_compact_generate_key,
- _ccec_compact_generate_key_init, _ccec_compact_generate_key_step,
- _ccec_compact_import_priv, _ccec_compact_import_priv_size,
- _ccec_compact_import_pub, _ccec_compact_import_pub_size, _ccec_compact_transform_key,
- _ccec_compressed_x962_export_pub, _ccec_compressed_x962_export_pub_size,
- _ccec_compressed_x962_import_pub, _ccec_compute_key, _ccec_cp_192,
- _ccec_cp_224, _ccec_cp_256, _ccec_cp_384, _ccec_cp_521, _ccec_curve_for_length_lookup,
- _ccec_der_export_diversified_pub, _ccec_der_export_diversified_pub_size,
- _ccec_der_export_priv, _ccec_der_export_priv_size, _ccec_der_import_diversified_pub,
- _ccec_der_import_priv, _ccec_der_import_priv_keytype, _ccec_diversify_min_entropy_len,
- _ccec_diversify_priv_twin, _ccec_diversify_pub, _ccec_diversify_pub_twin,
- _ccec_export_affine_point, _ccec_export_affine_point_size,
- _ccec_export_pub, _ccec_extract_rs, _ccec_full_add, _ccec_generate_blinding_keys,
- _ccec_generate_key, _ccec_generate_key_deterministic, _ccec_generate_key_fips,
- _ccec_generate_key_legacy, _ccec_generate_scalar_fips_retry,
- _ccec_get_cp, _ccec_get_fullkey_components, _ccec_get_pubkey_components,
- _ccec_import_affine_point, _ccec_import_pub, _ccec_is_compactable_pub,
- _ccec_keysize_is_supported, _ccec_make_priv, _ccec_make_pub,
- _ccec_mult_blinded, _ccec_pairwise_consistency_check, _ccec_print_full_key,
- _ccec_print_public_key, _ccec_projectify, _ccec_raw_import_priv_only,
- _ccec_raw_import_pub, _ccec_rfc6637_dh_curve_p256, _ccec_rfc6637_dh_curve_p521,
- _ccec_rfc6637_unwrap_key, _ccec_rfc6637_unwrap_sha256_kek_aes128,
- _ccec_rfc6637_unwrap_sha512_kek_aes256, _ccec_rfc6637_wrap_key,
- _ccec_rfc6637_wrap_key_diversified, _ccec_rfc6637_wrap_key_size,
- _ccec_rfc6637_wrap_sha256_kek_aes128, _ccec_rfc6637_wrap_sha512_kek_aes256,
- _ccec_sign, _ccec_sign_composite, _ccec_sign_composite_msg,
- _ccec_sign_msg, _ccec_signature_r_s_size, _ccec_unblind, _ccec_validate_pub,
- _ccec_verify, _ccec_verify_composite, _ccec_verify_composite_digest,
- _ccec_verify_composite_msg, _ccec_verify_digest, _ccec_verify_msg,
- _ccec_x963_export, _ccec_x963_import_priv, _ccec_x963_import_priv_size,
- _ccec_x963_import_pub, _ccec_x963_import_pub_size, _ccecb_block_size,
- _ccecb_context_size, _ccecb_init, _ccecb_one_shot, _ccecb_one_shot_explicit,
- _ccecb_update, _ccecdh_compute_shared_secret, _ccecdh_generate_key,
- _ccecies_decrypt_gcm, _ccecies_decrypt_gcm_composite, _ccecies_decrypt_gcm_from_shared_secret,
- _ccecies_decrypt_gcm_plaintext_size, _ccecies_decrypt_gcm_plaintext_size_cp,
- _ccecies_decrypt_gcm_setup, _ccecies_encrypt_gcm, _ccecies_encrypt_gcm_ciphertext_size,
- _ccecies_encrypt_gcm_composite, _ccecies_encrypt_gcm_from_shared_secret,
- _ccecies_encrypt_gcm_setup, _ccecies_import_eph_pub, _ccecies_pub_key_size,
- _ccecies_pub_key_size_cp, _cced25519_make_key_pair, _cced25519_make_pub,
- _cced25519_make_pub_with_rng, _cced25519_sign, _cced25519_sign_with_rng,
- _cced25519_verify, _cced448_make_key_pair, _cced448_make_pub,
- _cced448_sign, _cced448_verify, _ccentropy_add_entropy, _ccentropy_digest_init,
- _ccentropy_get_seed, _ccentropy_rng_init, _ccgcm_aad, _ccgcm_block_size,
- _ccgcm_context_size, _ccgcm_finalize, _ccgcm_gmac, _ccgcm_inc_iv,
- _ccgcm_init, _ccgcm_init_with_iv, _ccgcm_one_shot, _ccgcm_one_shot_legacy,
- _ccgcm_reset, _ccgcm_set_iv, _ccgcm_set_iv_legacy, _ccgcm_update,
- _cch2c, _cch2c_name, _cch2c_p256_sha256_sae_compat_info, _cch2c_p256_sha256_sswu_ro_info,
- _cch2c_p384_sha384_sae_compat_info, _cch2c_p384_sha512_sswu_ro_info,
- _cch2c_p521_sha512_sswu_ro_info, _cchkdf, _cchkdf_expand,
- _cchkdf_extract, _cchmac, _cchmac_final, _cchmac_init, _cchmac_update,
- _cchpke_initiator_encrypt, _cchpke_initiator_export, _cchpke_initiator_seal,
- _cchpke_initiator_setup, _cchpke_kem_generate_key_pair, _cchpke_params_sizeof_aead_key,
- _cchpke_params_sizeof_aead_nonce, _cchpke_params_sizeof_aead_tag,
- _cchpke_params_sizeof_kdf_hash, _cchpke_params_sizeof_kem_enc,
- _cchpke_params_sizeof_kem_pk, _cchpke_params_sizeof_kem_pk_marshalled,
- _cchpke_params_sizeof_kem_shared_secret, _cchpke_params_sizeof_kem_sk,
- _cchpke_params_x25519_AESGCM128_HKDF_SHA256, _cchpke_responder_decrypt,
- _cchpke_responder_export, _cchpke_responder_open, _cchpke_responder_setup,
- _cckem_decapsulate, _cckem_encapsulate, _cckem_encapsulated_key_nbytes_ctx,
- _cckem_encapsulated_key_nbytes_info, _cckem_export_privkey,
- _cckem_export_pubkey, _cckem_full_ctx_init, _cckem_generate_key,
- _cckem_import_privkey, _cckem_import_pubkey, _cckem_kyber768,
- _cckem_privkey_nbytes_ctx, _cckem_privkey_nbytes_info, _cckem_pub_ctx_init,
- _cckem_pubkey_nbytes_ctx, _cckem_pubkey_nbytes_info, _cckem_public_ctx,
- _cckem_shared_key_nbytes_ctx, _cckem_shared_key_nbytes_info,
- _cckem_sizeof_full_ctx, _cckem_sizeof_pub_ctx, _cclr_aes_init,
- _cclr_block_nbytes, _cclr_decrypt_block, _cclr_encrypt_block,
- _ccmd2_ltc_di, _ccmd4_ltc_di, _ccmd5_di, _ccmd5_ltc_di, _ccmgf,
- _ccmode_factory_cbc_decrypt, _ccmode_factory_cbc_encrypt,
- _ccmode_factory_ccm_decrypt, _ccmode_factory_ccm_encrypt,
- _ccmode_factory_cfb8_decrypt, _ccmode_factory_cfb8_encrypt,
- _ccmode_factory_cfb_decrypt, _ccmode_factory_cfb_encrypt,
- _ccmode_factory_ctr_crypt, _ccmode_factory_gcm_decrypt, _ccmode_factory_gcm_encrypt,
- _ccmode_factory_ofb_crypt, _ccmode_factory_omac_decrypt, _ccmode_factory_omac_encrypt,
- _ccmode_factory_siv_decrypt, _ccmode_factory_siv_encrypt,
- _ccmode_factory_xts_decrypt, _ccmode_factory_xts_encrypt,
- _ccn_add, _ccn_add1, _ccn_bitlen, _ccn_cmp, _ccn_cmpn, _ccn_lprint,
- _ccn_print, _ccn_read_uint, _ccn_set_bit, _ccn_seti, _ccn_sub,
- _ccn_swap, _ccn_write_int, _ccn_write_int_size, _ccn_write_uint,
- _ccn_write_uint_padded, _ccn_write_uint_padded_ct, _ccn_write_uint_size,
- _ccn_xor, _ccn_zero, _ccnistkdf_ctr_cmac, _ccnistkdf_ctr_cmac_fixed,
- _ccnistkdf_ctr_hmac, _ccnistkdf_ctr_hmac_fixed, _ccofb_block_size,
- _ccofb_context_size, _ccofb_init, _ccofb_one_shot, _ccofb_update,
- _ccoid_equal, _ccoid_payload, _ccoid_size, _ccomac_block_size,
- _ccomac_context_size, _ccomac_init, _ccomac_one_shot, _ccomac_update,
- _ccpad_cts1_decrypt, _ccpad_cts1_encrypt, _ccpad_cts2_decrypt,
- _ccpad_cts2_encrypt, _ccpad_cts3_decrypt, _ccpad_cts3_encrypt,
- _ccpad_pkcs7_decode, _ccpad_pkcs7_decrypt, _ccpad_pkcs7_ecb_decrypt,
- _ccpad_pkcs7_ecb_encrypt, _ccpad_pkcs7_encrypt, _ccpad_xts_decrypt,
- _ccpad_xts_encrypt, _ccpbkdf2_hmac, _ccpoly1305, _ccpoly1305_final,
- _ccpoly1305_init, _ccpoly1305_update, _ccrc2_cbc_decrypt_mode,
- _ccrc2_cbc_encrypt_mode, _ccrc2_cfb8_decrypt_mode, _ccrc2_cfb8_encrypt_mode,
- _ccrc2_cfb_decrypt_mode, _ccrc2_cfb_encrypt_mode, _ccrc2_ctr_crypt_mode,
- _ccrc2_ecb_decrypt_mode, _ccrc2_ecb_encrypt_mode, _ccrc2_ofb_crypt_mode,
- _ccrc4, _ccrc4_eay, _ccrmd160_ltc_di, _ccrng, _ccrng_drbg_done,
- _ccrng_drbg_init, _ccrng_drbg_init_withdrbg, _ccrng_drbg_reseed,
- _ccrng_ecfips_test_init, _ccrng_pbkdf2_prng_init, _ccrng_prng,
- _ccrng_rsafips_test_init, _ccrng_rsafips_test_set_next, _ccrng_sequence_init,
- _ccrng_system_done, _ccrng_system_init, _ccrng_test_done,
- _ccrng_test_init, _ccrng_trng, _ccrng_uniform, _ccrsa_block_size,
- _ccrsa_block_start, _ccrsa_ctx_private_zp, _ccrsa_ctx_public,
- _ccrsa_decrypt_eme_pkcs1v15, _ccrsa_decrypt_oaep, _ccrsa_dump_full_key,
- _ccrsa_dump_public_key, _ccrsa_eme_pkcs1v15_decode, _ccrsa_eme_pkcs1v15_encode,
- _ccrsa_emsa_pkcs1v15_encode, _ccrsa_emsa_pkcs1v15_verify,
- _ccrsa_emsa_pss_decode, _ccrsa_emsa_pss_encode, _ccrsa_encrypt_eme_pkcs1v15,
- _ccrsa_encrypt_oaep, _ccrsa_export_priv, _ccrsa_export_priv_size,
- _ccrsa_export_pub, _ccrsa_export_pub_size, _ccrsa_generate_fips186_key,
- _ccrsa_generate_key, _ccrsa_generate_key_deterministic, _ccrsa_get_fullkey_components,
- _ccrsa_get_pubkey_components, _ccrsa_import_priv, _ccrsa_import_priv_n,
- _ccrsa_import_pub, _ccrsa_import_pub_n, _ccrsa_init_pub, _ccrsa_make_priv,
- _ccrsa_make_pub, _ccrsa_n_from_size, _ccrsa_oaep_decode, _ccrsa_oaep_decode_parameter,
- _ccrsa_oaep_encode, _ccrsa_oaep_encode_parameter, _ccrsa_priv_crypt,
- _ccrsa_pub_crypt, _ccrsa_pubkeylength, _ccrsa_recover_priv,
- _ccrsa_sign_pkcs1v15, _ccrsa_sign_pkcs1v15_msg, _ccrsa_sign_pss,
- _ccrsa_sign_pss_msg, _ccrsa_sizeof_n_from_size, _ccrsa_verify_pkcs1v15,
- _ccrsa_verify_pkcs1v15_allowshortsigs, _ccrsa_verify_pkcs1v15_digest,
- _ccrsa_verify_pkcs1v15_msg, _ccrsa_verify_pss_digest, _ccrsa_verify_pss_msg,
- _ccrsabssa_blind_message, _ccrsabssa_ciphersuite_rsa2048_sha384,
- _ccrsabssa_ciphersuite_rsa3072_sha384, _ccrsabssa_ciphersuite_rsa4096_sha384,
- _ccrsabssa_sign_blinded_message, _ccrsabssa_unblind_signature,
- _ccsae_generate_commitment, _ccsae_generate_commitment_finalize,
- _ccsae_generate_commitment_init, _ccsae_generate_commitment_partial,
- _ccsae_generate_confirmation, _ccsae_generate_h2c_commit,
- _ccsae_generate_h2c_commit_finalize, _ccsae_generate_h2c_commit_init,
- _ccsae_generate_h2c_pt, _ccsae_get_keys, _ccsae_init, _ccsae_init_p256_sha256,
- _ccsae_init_p384_sha384, _ccsae_lexographic_order_key, _ccsae_sizeof_commitment,
- _ccsae_sizeof_confirmation, _ccsae_sizeof_ctx, _ccsae_sizeof_kck,
- _ccsae_sizeof_kck_h2c, _ccsae_sizeof_pt, _ccsae_verify_commitment,
- _ccsae_verify_confirmation, _ccscrypt, _ccscrypt_storage_size,
- _ccsha1_di, _ccsha1_eay_di, _ccsha1_ltc_di, _ccsha224_di,
- _ccsha224_ltc_di, _ccsha256_di, _ccsha256_ltc_di, _ccsha384_di,
- _ccsha384_ltc_di, _ccsha3_224_di, _ccsha3_256_di, _ccsha3_384_di,
- _ccsha3_512_di, _ccsha512_256_di, _ccsha512_256_ltc_di, _ccsha512_di,
- _ccsha512_ltc_di, _ccsigma_clear, _ccsigma_clear_key, _ccsigma_compute_mac,
- _ccsigma_derive_session_keys, _ccsigma_export_key_share, _ccsigma_import_peer_key_share,
- _ccsigma_import_peer_verification_key, _ccsigma_import_signing_key,
- _ccsigma_init, _ccsigma_kex_init_ctx, _ccsigma_kex_resp_ctx,
- _ccsigma_mfi_info, _ccsigma_mfi_nvm_info, _ccsigma_open, _ccsigma_peer_role,
- _ccsigma_seal, _ccsigma_set_signing_function, _ccsigma_sign,
- _ccsigma_verify, _ccsiv_aad, _ccsiv_block_size, _ccsiv_ciphertext_size,
- _ccsiv_context_size, _ccsiv_crypt, _ccsiv_hmac_aad, _ccsiv_hmac_block_size,
- _ccsiv_hmac_ciphertext_size, _ccsiv_hmac_context_size, _ccsiv_hmac_crypt,
- _ccsiv_hmac_init, _ccsiv_hmac_one_shot, _ccsiv_hmac_plaintext_size,
- _ccsiv_hmac_reset, _ccsiv_hmac_set_nonce, _ccsiv_init, _ccsiv_one_shot,
- _ccsiv_plaintext_size, _ccsiv_reset, _ccsiv_set_nonce, _ccspake_cp_256,
- _ccspake_cp_256_rfc, _ccspake_cp_384, _ccspake_cp_384_rfc,
- _ccspake_cp_521, _ccspake_cp_521_rfc, _ccspake_generate_L,
- _ccspake_kex_generate, _ccspake_kex_process, _ccspake_mac_compute,
- _ccspake_mac_hkdf_cmac_aes128_sha256, _ccspake_mac_hkdf_hmac_sha256,
- _ccspake_mac_hkdf_hmac_sha512, _ccspake_mac_verify_and_get_session_key,
- _ccspake_prover_init, _ccspake_prover_initialize, _ccspake_reduce_w,
- _ccspake_sizeof_ctx, _ccspake_sizeof_point, _ccspake_sizeof_w,
- _ccspake_verifier_init, _ccspake_verifier_initialize, _ccsrp_client_process_challenge,
- _ccsrp_client_set_noUsernameInX, _ccsrp_client_start_authentication,
- _ccsrp_client_verify_session, _ccsrp_ctx_init, _ccsrp_ctx_init_option,
- _ccsrp_ctx_init_with_size_option, _ccsrp_exchange_size, _ccsrp_generate_salt_and_verification,
- _ccsrp_generate_verifier, _ccsrp_get_premaster_secret, _ccsrp_get_session_key,
- _ccsrp_get_session_key_length, _ccsrp_gp_rfc5054_1024, _ccsrp_gp_rfc5054_2048,
- _ccsrp_gp_rfc5054_3072, _ccsrp_gp_rfc5054_4096, _ccsrp_gp_rfc5054_8192,
- _ccsrp_is_authenticated, _ccsrp_server_compute_session, _ccsrp_server_generate_public_key,
- _ccsrp_server_start_authentication, _ccsrp_server_verify_session,
- _ccsrp_session_size, _ccsrp_sizeof_M_HAMK, _ccsrp_sizeof_public_key,
- _ccsrp_sizeof_session_key, _ccsrp_sizeof_verifier, _ccss_shamir_parameters_init,
- _ccss_shamir_parameters_maximum_secret_length, _ccss_shamir_share_bag_add_share,
- _ccss_shamir_share_bag_init, _ccss_shamir_share_bag_recover_secret,
- _ccss_shamir_share_export, _ccss_shamir_share_generator_deserialize,
- _ccss_shamir_share_generator_generate_share, _ccss_shamir_share_generator_init,
- _ccss_shamir_share_generator_init_with_secrets_less_than_prime,
- _ccss_shamir_share_generator_serialize, _ccss_shamir_share_import,
- _ccss_shamir_share_init, _ccss_shamir_share_sizeof_y, _ccss_sizeof_generator,
- _ccss_sizeof_parameters, _ccss_sizeof_shamir_share_generator_serialization,
- _ccss_sizeof_share, _ccss_sizeof_share_bag, _ccvrf_derive_public_key,
- _ccvrf_factory_irtfdraft03, _ccvrf_factory_irtfdraft03_default,
- _ccvrf_proof_to_hash, _ccvrf_prove, _ccvrf_sizeof_hash, _ccvrf_sizeof_proof,
- _ccvrf_sizeof_public_key, _ccvrf_sizeof_secret_key, _ccvrf_verify,
- _ccwrap_auth_decrypt, _ccwrap_auth_decrypt_withiv, _ccwrap_auth_encrypt,
- _ccwrap_auth_encrypt_withiv, _ccwrap_unwrapped_size, _ccwrap_wrapped_size,
- _ccxts_block_size, _ccxts_context_size, _ccxts_init, _ccxts_one_shot,
- _ccxts_set_tweak, _ccxts_update, _ccz_add, _ccz_addi, _ccz_bit,
- _ccz_bitlen, _ccz_capacity, _ccz_cmp, _ccz_cmpi, _ccz_divmod,
- _ccz_expmod, _ccz_free, _ccz_init, _ccz_is_negative, _ccz_is_one,
- _ccz_is_prime, _ccz_is_zero, _ccz_lsl, _ccz_lsr, _ccz_mod,
- _ccz_mul, _ccz_muli, _ccz_mulmod, _ccz_n, _ccz_neg, _ccz_random_bits,
- _ccz_read_radix, _ccz_read_uint, _ccz_set, _ccz_set_bit, _ccz_set_capacity,
- _ccz_set_n, _ccz_set_sign, _ccz_seti, _ccz_sign, _ccz_size,
- _ccz_sub, _ccz_subi, _ccz_trailing_zeros, _ccz_write_int,
- _ccz_write_int_size, _ccz_write_radix, _ccz_write_radix_size,
- _ccz_write_uint, _ccz_write_uint_size, _ccz_zero, _cczp_add,
- _cczp_bitlen, _cczp_inv, _cczp_mod, _cczp_mul, _cczp_n, _cczp_prime,
- _cczp_sub, _csss_shamir_share_bag_can_recover_secret, _fipspost_post,
- _fipspost_trace_vtable, _map_to_curve_sswu ]
- - targets: [ arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _ccaes_arm_cbc_decrypt_mode, _ccaes_arm_cbc_encrypt_mode,
- _ccaes_arm_cfb_decrypt_mode, _ccaes_arm_cfb_encrypt_mode,
- _ccaes_arm_ecb_decrypt_mode, _ccaes_arm_ecb_encrypt_mode,
- _ccaes_arm_ofb_crypt_mode, _ccaes_arm_xts_decrypt_mode, _ccaes_arm_xts_encrypt_mode,
- _ccsha1_vng_arm_di, _ccsha224_vng_arm_di, _ccsha256_vng_arm64neon_di,
- _ccsha256_vng_arm_di, _ccsha384_vng_arm_di, _ccsha512_256_vng_arm_di,
- _ccsha512_vng_arm_di ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libdispatch.dylib'
-current-version: 1462.0.4
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ '$ld$hide$os10.12$_dispatch_assert_queue', '$ld$hide$os10.12$_dispatch_assert_queue_not',
- '$ld$hide$os10.12$_dispatch_queue_create_with_target', __dispatch_begin_NSAutoReleasePool,
- __dispatch_bug, __dispatch_data_destructor_free, __dispatch_data_destructor_munmap,
- __dispatch_data_destructor_none, __dispatch_data_destructor_vm_deallocate,
- __dispatch_data_empty, __dispatch_data_format_type_base32,
- __dispatch_data_format_type_base32hex, __dispatch_data_format_type_base64,
- __dispatch_data_format_type_none, __dispatch_data_format_type_utf16be,
- __dispatch_data_format_type_utf16le, __dispatch_data_format_type_utf8,
- __dispatch_data_format_type_utf_any, __dispatch_end_NSAutoReleasePool,
- __dispatch_get_main_queue_handle_4CF, __dispatch_get_main_queue_port_4CF,
- __dispatch_iocntl, __dispatch_is_fork_of_multithreaded_parent,
- __dispatch_is_multithreaded, __dispatch_log, __dispatch_mach_hooks_install_default,
- __dispatch_main_q, __dispatch_main_queue_callback_4CF, __dispatch_poll_for_events_4launchd,
- __dispatch_prohibit_transition_to_multithreaded, __dispatch_pthread_root_queue_create_with_observer_hooks_4IOHID,
- __dispatch_queue_attr_concurrent, __dispatch_queue_is_exclusively_owned_by_current_thread_4IOHID,
- __dispatch_runloop_root_queue_create_4CF, __dispatch_runloop_root_queue_get_port_4CF,
- __dispatch_runloop_root_queue_perform_4CF, __dispatch_runloop_root_queue_wakeup_4CF,
- __dispatch_source_set_runloop_timer_4CF, __dispatch_source_type_data_add,
- __dispatch_source_type_data_or, __dispatch_source_type_data_replace,
- __dispatch_source_type_interval, __dispatch_source_type_mach_recv,
- __dispatch_source_type_mach_send, __dispatch_source_type_memorypressure,
- __dispatch_source_type_memorystatus, __dispatch_source_type_nw_channel,
- __dispatch_source_type_proc, __dispatch_source_type_read,
- __dispatch_source_type_signal, __dispatch_source_type_sock,
- __dispatch_source_type_timer, __dispatch_source_type_vfs,
- __dispatch_source_type_vm, __dispatch_source_type_vnode, __dispatch_source_type_write,
- __dispatch_source_will_reenable_kevent_4NW, __dispatch_wait_for_enqueuer,
- __dispatch_workloop_set_observer_hooks_4IOHID, __dispatch_workloop_should_yield_4NW,
- __firehose_spi_version, __os_object_alloc, __os_object_alloc_realized,
- __os_object_dealloc, __os_object_release, __os_object_release_internal,
- __os_object_release_internal_n, __os_object_release_without_xref_dispose,
- __os_object_retain, __os_object_retain_internal, __os_object_retain_internal_n,
- __os_object_retain_with_resurrect, _dispatch_activate, _dispatch_after,
- _dispatch_after_f, _dispatch_allocator_layout, _dispatch_apply,
- _dispatch_apply_attr_destroy, _dispatch_apply_attr_init, _dispatch_apply_attr_query,
- _dispatch_apply_attr_set_parallelism, _dispatch_apply_f, _dispatch_apply_with_attr,
- _dispatch_apply_with_attr_f, _dispatch_assert_queue, '_dispatch_assert_queue$V2',
- _dispatch_assert_queue_barrier, _dispatch_assert_queue_not,
- '_dispatch_assert_queue_not$V2', _dispatch_async, _dispatch_async_and_wait,
- _dispatch_async_and_wait_f, _dispatch_async_enforce_qos_class_f,
- _dispatch_async_f, _dispatch_async_swift_job, _dispatch_atfork_child,
- _dispatch_atfork_parent, _dispatch_atfork_prepare, _dispatch_barrier_async,
- _dispatch_barrier_async_and_wait, _dispatch_barrier_async_and_wait_f,
- _dispatch_barrier_async_f, _dispatch_barrier_sync, _dispatch_barrier_sync_f,
- _dispatch_benchmark, _dispatch_benchmark_f, _dispatch_block_cancel,
- _dispatch_block_create, _dispatch_block_create_with_qos_class,
- _dispatch_block_create_with_voucher, _dispatch_block_create_with_voucher_and_qos_class,
- _dispatch_block_notify, _dispatch_block_perform, _dispatch_block_testcancel,
- _dispatch_block_wait, _dispatch_channel_async, _dispatch_channel_async_f,
- _dispatch_channel_cancel, _dispatch_channel_create, _dispatch_channel_drain,
- _dispatch_channel_drain_f, _dispatch_channel_enqueue, _dispatch_channel_foreach_work_item_peek,
- _dispatch_channel_foreach_work_item_peek_f, _dispatch_channel_testcancel,
- _dispatch_channel_wakeup, _dispatch_data_apply, _dispatch_data_apply_f,
- _dispatch_data_copy_region, _dispatch_data_create, _dispatch_data_create_alloc,
- _dispatch_data_create_concat, _dispatch_data_create_f, _dispatch_data_create_map,
- _dispatch_data_create_subrange, _dispatch_data_create_with_transform,
- _dispatch_data_get_flattened_bytes_4libxpc, _dispatch_data_get_size,
- _dispatch_data_make_memory_entry, _dispatch_debug, _dispatch_debugv,
- _dispatch_get_context, _dispatch_get_current_queue, _dispatch_get_global_queue,
- _dispatch_get_specific, _dispatch_group_async, _dispatch_group_async_f,
- _dispatch_group_create, _dispatch_group_enter, _dispatch_group_leave,
- _dispatch_group_notify, _dispatch_group_notify_f, _dispatch_group_wait,
- _dispatch_io_barrier, _dispatch_io_barrier_f, _dispatch_io_close,
- _dispatch_io_create, _dispatch_io_create_f, _dispatch_io_create_with_io,
- _dispatch_io_create_with_io_f, _dispatch_io_create_with_path,
- _dispatch_io_create_with_path_f, _dispatch_io_get_descriptor,
- _dispatch_io_read, _dispatch_io_read_f, _dispatch_io_set_high_water,
- _dispatch_io_set_interval, _dispatch_io_set_low_water, _dispatch_io_write,
- _dispatch_io_write_f, _dispatch_lock_override_end, _dispatch_lock_override_start_with_debounce,
- _dispatch_mach_can_handoff_4libxpc, _dispatch_mach_cancel,
- _dispatch_mach_connect, _dispatch_mach_create, _dispatch_mach_create_4libxpc,
- _dispatch_mach_create_f, _dispatch_mach_get_checkin_port,
- _dispatch_mach_handoff_reply, _dispatch_mach_handoff_reply_f,
- _dispatch_mach_hooks_install_4libxpc, _dispatch_mach_mig_demux,
- _dispatch_mach_mig_demux_get_context, _dispatch_mach_msg_create,
- _dispatch_mach_msg_get_context, _dispatch_mach_msg_get_filter_policy_id,
- _dispatch_mach_msg_get_msg, _dispatch_mach_notify_no_senders,
- _dispatch_mach_receive_barrier, _dispatch_mach_receive_barrier_f,
- _dispatch_mach_reconnect, _dispatch_mach_request_no_senders,
- _dispatch_mach_send, _dispatch_mach_send_and_wait_for_reply,
- _dispatch_mach_send_barrier, _dispatch_mach_send_barrier_f,
- _dispatch_mach_send_with_result, _dispatch_mach_send_with_result_and_async_reply_4libxpc,
- _dispatch_mach_send_with_result_and_wait_for_reply, _dispatch_mach_set_flags,
- _dispatch_main, _dispatch_mig_server, _dispatch_once, _dispatch_once_f,
- _dispatch_pthread_root_queue_copy_current, _dispatch_pthread_root_queue_create,
- _dispatch_queue_attr_make_initially_inactive, _dispatch_queue_attr_make_with_autorelease_frequency,
- _dispatch_queue_attr_make_with_overcommit, _dispatch_queue_attr_make_with_qos_class,
- _dispatch_queue_create, _dispatch_queue_create_with_accounting_override_voucher,
- _dispatch_queue_create_with_target, '_dispatch_queue_create_with_target$V2',
- _dispatch_queue_get_label, _dispatch_queue_get_qos_class,
- _dispatch_queue_get_specific, _dispatch_queue_offsets, _dispatch_queue_set_label_nocopy,
- _dispatch_queue_set_specific, _dispatch_queue_set_width, _dispatch_read,
- _dispatch_read_f, _dispatch_release, _dispatch_resume, _dispatch_retain,
- _dispatch_semaphore_create, _dispatch_semaphore_signal, _dispatch_semaphore_wait,
- _dispatch_set_context, _dispatch_set_finalizer_f, _dispatch_set_qos_class,
- _dispatch_set_qos_class_fallback, _dispatch_set_qos_class_floor,
- _dispatch_set_target_queue, _dispatch_source_cancel, _dispatch_source_cancel_and_wait,
- _dispatch_source_create, _dispatch_source_get_data, _dispatch_source_get_extended_data,
- _dispatch_source_get_handle, _dispatch_source_get_mask, _dispatch_source_merge_data,
- _dispatch_source_set_cancel_handler, _dispatch_source_set_cancel_handler_f,
- _dispatch_source_set_event_handler, _dispatch_source_set_event_handler_f,
- _dispatch_source_set_mandatory_cancel_handler, _dispatch_source_set_mandatory_cancel_handler_f,
- _dispatch_source_set_registration_handler, _dispatch_source_set_registration_handler_f,
- _dispatch_source_set_timer, _dispatch_source_testcancel, _dispatch_suspend,
- _dispatch_swift_job_should_yield, _dispatch_sync, _dispatch_sync_f,
- _dispatch_thread_get_current_override_qos_floor, _dispatch_thread_override_self,
- _dispatch_time, _dispatch_time_from_nsec, _dispatch_time_to_nsec,
- _dispatch_time_to_nsecs, _dispatch_tsd_indexes, _dispatch_walltime,
- _dispatch_workloop_copy_current, _dispatch_workloop_create,
- _dispatch_workloop_create_inactive, _dispatch_workloop_is_current,
- _dispatch_workloop_set_autorelease_frequency, _dispatch_workloop_set_cpupercent,
- _dispatch_workloop_set_os_workgroup, _dispatch_workloop_set_qos_class,
- _dispatch_workloop_set_qos_class_floor, _dispatch_workloop_set_scheduler_priority,
- _dispatch_write, _dispatch_write_f, _libdispatch_init, _mach_voucher_persona_for_originator,
- _mach_voucher_persona_self, _os_eventlink_activate, _os_eventlink_associate,
- _os_eventlink_cancel, _os_eventlink_create, _os_eventlink_create_remote_with_eventlink,
- _os_eventlink_create_with_port, _os_eventlink_disassociate,
- _os_eventlink_extract_remote_port, _os_eventlink_signal, _os_eventlink_signal_and_wait,
- _os_eventlink_signal_and_wait_until, _os_eventlink_wait, _os_eventlink_wait_until,
- _os_release, _os_retain, _os_workgroup_attr_set_flags, _os_workgroup_attr_set_interval_type,
- _os_workgroup_attr_set_telemetry_flavor, _os_workgroup_cancel,
- _os_workgroup_copy_port, _os_workgroup_create, _os_workgroup_create_with_port,
- _os_workgroup_create_with_workgroup, _os_workgroup_create_with_workload_id,
- _os_workgroup_create_with_workload_id_and_port, _os_workgroup_create_with_workload_id_and_workgroup,
- _os_workgroup_get_working_arena, _os_workgroup_interval_copy_current_4AudioToolbox,
- _os_workgroup_interval_create, _os_workgroup_interval_create_with_workload_id,
- _os_workgroup_interval_data_set_flags, _os_workgroup_interval_data_set_telemetry,
- _os_workgroup_interval_finish, _os_workgroup_interval_start,
- _os_workgroup_interval_update, _os_workgroup_join, _os_workgroup_join_self,
- _os_workgroup_leave, _os_workgroup_leave_self, _os_workgroup_max_parallel_threads,
- _os_workgroup_parallel_create, _os_workgroup_set_working_arena,
- _os_workgroup_testcancel, _voucher_activity_create_with_data,
- _voucher_activity_create_with_location, _voucher_activity_flush,
- _voucher_activity_get_logging_preferences, _voucher_activity_get_metadata_buffer,
- _voucher_activity_id_allocate, _voucher_activity_initialize_4libtrace,
- _voucher_activity_should_send_strings, _voucher_activity_trace,
- _voucher_activity_trace_v, _voucher_activity_trace_v_2, _voucher_adopt,
- _voucher_copy, _voucher_copy_with_persona_mach_voucher, _voucher_copy_without_importance,
- _voucher_create_with_mach_msg, _voucher_decrement_importance_count4CF,
- _voucher_get_activity_id, _voucher_get_activity_id_and_creator,
- _voucher_get_current_persona, _voucher_get_current_persona_originator_info,
- _voucher_get_current_persona_proximate_info, _voucher_kvoucher_debug,
- _voucher_process_can_use_arbitrary_personas, _voucher_release,
- _voucher_replace_default_voucher, _voucher_retain ]
- objc-classes: [ OS_dispatch_channel, OS_dispatch_data, OS_dispatch_disk, OS_dispatch_group,
- OS_dispatch_io, OS_dispatch_mach, OS_dispatch_mach_msg, OS_dispatch_object,
- OS_dispatch_operation, OS_dispatch_queue, OS_dispatch_queue_attr,
- OS_dispatch_queue_concurrent, OS_dispatch_queue_global, OS_dispatch_queue_main,
- OS_dispatch_queue_serial, OS_dispatch_queue_serial_executor,
- OS_dispatch_semaphore, OS_dispatch_source, OS_dispatch_workloop,
- OS_object, OS_os_eventlink, OS_os_workgroup, OS_os_workgroup_interval,
- OS_os_workgroup_parallel, OS_voucher ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libdyld.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _NSVersionOfLinkTimeLibrary, _NSVersionOfRunTimeLibrary, _NXArgc,
- _NXArgv, __NSGetExecutablePath, ___progname, __dyld_atfork_parent,
- __dyld_atfork_prepare, __dyld_dlopen_atfork_child, __dyld_dlopen_atfork_parent,
- __dyld_dlopen_atfork_prepare, __dyld_find_foreign_type_protocol_conformance,
- __dyld_find_foreign_type_protocol_conformance_on_disk, __dyld_find_protocol_conformance,
- __dyld_find_protocol_conformance_on_disk, __dyld_find_unwind_sections,
- __dyld_for_each_objc_class, __dyld_for_each_objc_protocol,
- __dyld_for_objc_header_opt_ro, __dyld_for_objc_header_opt_rw,
- __dyld_fork_child, __dyld_get_dlopen_image_header, __dyld_get_image_header,
- __dyld_get_image_name, __dyld_get_image_slide, __dyld_get_image_uuid,
- __dyld_get_image_vmaddr_slide, __dyld_get_objc_selector, __dyld_get_prog_image_header,
- __dyld_get_shared_cache_range, __dyld_get_shared_cache_uuid,
- __dyld_has_fix_for_radar, __dyld_has_preoptimized_swift_protocol_conformances,
- __dyld_image_count, __dyld_images_for_addresses, __dyld_initializer,
- __dyld_is_memory_immutable, __dyld_is_objc_constant, __dyld_is_preoptimized_objc_image_loaded,
- __dyld_launch_mode, __dyld_lookup_section_info, __dyld_missing_symbol_abort,
- __dyld_objc_class_count, __dyld_objc_notify_register, __dyld_objc_register_callbacks,
- __dyld_objc_uses_large_shared_cache, __dyld_process_info_create,
- __dyld_process_info_for_each_image, __dyld_process_info_for_each_segment,
- __dyld_process_info_get_aot_cache, __dyld_process_info_get_cache,
- __dyld_process_info_get_platform, __dyld_process_info_get_state,
- __dyld_process_info_notify, __dyld_process_info_notify_main,
- __dyld_process_info_notify_release, __dyld_process_info_notify_retain,
- __dyld_process_info_release, __dyld_process_info_retain, __dyld_pseudodylib_deregister,
- __dyld_pseudodylib_deregister_callbacks, __dyld_pseudodylib_register,
- __dyld_pseudodylib_register_callbacks, __dyld_register_driverkit_main,
- __dyld_register_for_bulk_image_loads, __dyld_register_for_image_loads,
- __dyld_register_func_for_add_image, __dyld_register_func_for_remove_image,
- __dyld_shared_cache_contains_path, __dyld_shared_cache_is_locally_built,
- __dyld_shared_cache_optimized, __dyld_shared_cache_real_path,
- __dyld_swift_optimizations_version, __dyld_visit_objc_classes,
- __tlv_atexit, __tlv_bootstrap, __tlv_exit, _dladdr, _dlclose,
- _dlerror, _dlopen, _dlopen_audited, _dlopen_from, _dlopen_preflight,
- _dlsym, _dyldVersionNumber, _dyldVersionString, _dyld_dynamic_interpose,
- _dyld_for_each_installed_shared_cache, _dyld_for_each_installed_shared_cache_with_system_path,
- _dyld_get_active_platform, _dyld_get_base_platform, _dyld_get_image_versions,
- _dyld_get_min_os_version, _dyld_get_program_min_os_version,
- _dyld_get_program_sdk_version, _dyld_get_sdk_version, _dyld_has_inserted_or_interposing_libraries,
- _dyld_image_content_for_section, _dyld_image_content_for_segment,
- _dyld_image_copy_uuid, _dyld_image_for_each_section_info,
- _dyld_image_for_each_segment_info, _dyld_image_get_file_path,
- _dyld_image_get_installname, _dyld_image_header_containing_address,
- _dyld_image_local_nlist_content_4Symbolication, _dyld_image_path_containing_address,
- _dyld_is_simulator_platform, _dyld_minos_at_least, _dyld_need_closure,
- _dyld_process_create_for_current_task, _dyld_process_create_for_task,
- _dyld_process_dispose, _dyld_process_has_objc_patches, _dyld_process_is_restricted,
- _dyld_process_register_for_event_notification, _dyld_process_register_for_image_notifications,
- _dyld_process_snapshot_create_for_process, _dyld_process_snapshot_create_from_data,
- _dyld_process_snapshot_dispose, _dyld_process_snapshot_for_each_image,
- _dyld_process_snapshot_get_shared_cache, _dyld_process_unregister_for_notification,
- _dyld_program_minos_at_least, _dyld_program_sdk_at_least,
- _dyld_sdk_at_least, _dyld_shared_cache_copy_uuid, _dyld_shared_cache_file_path,
- _dyld_shared_cache_find_iterate_text, _dyld_shared_cache_for_each_file,
- _dyld_shared_cache_for_each_image, _dyld_shared_cache_for_file,
- _dyld_shared_cache_get_base_address, _dyld_shared_cache_get_mapped_size,
- _dyld_shared_cache_is_mapped_private, _dyld_shared_cache_iterate_text,
- _dyld_shared_cache_pin_mapping, _dyld_shared_cache_some_image_overridden,
- _dyld_shared_cache_unpin_mapping, _environ, _macho_arch_name_for_cpu_type,
- _macho_arch_name_for_mach_header, _macho_best_slice, _macho_best_slice_in_fd,
- _macho_cpu_type_for_arch_name, _macho_dylib_install_name,
- _macho_for_each_slice, _macho_for_each_slice_in_fd, dyld_stub_binder ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ _NSAddImage, _NSAddLibrary, _NSAddLibraryWithSearching, _NSAddressOfSymbol,
- _NSCreateObjectFileImageFromFile, _NSCreateObjectFileImageFromMemory,
- _NSDestroyObjectFileImage, _NSGetSectionDataInObjectFileImage,
- _NSInstallLinkEditErrorHandlers, _NSIsSymbolDefinedInObjectFileImage,
- _NSIsSymbolNameDefined, _NSIsSymbolNameDefinedInImage, _NSIsSymbolNameDefinedWithHint,
- _NSLibraryNameForModule, _NSLinkEditError, _NSLinkModule,
- _NSLookupAndBindSymbol, _NSLookupAndBindSymbolWithHint, _NSLookupSymbolInImage,
- _NSLookupSymbolInModule, _NSModuleForSymbol, _NSNameOfModule,
- _NSNameOfSymbol, _NSSymbolDefinitionCountInObjectFileImage,
- _NSSymbolDefinitionNameInObjectFileImage, _NSSymbolReferenceCountInObjectFileImage,
- _NSSymbolReferenceNameInObjectFileImage, _NSUnLinkModule,
- __dyld_all_twolevel_modules_prebound, __dyld_bind_fully_image_containing_address,
- __dyld_get_image_header_containing_address, __dyld_image_containing_address,
- __dyld_launched_prebound, __dyld_lookup_and_bind, __dyld_lookup_and_bind_fully,
- __dyld_lookup_and_bind_with_hint, __dyld_present, __dyld_process_info_for_each_aot_image,
- _dyld_shared_cache_for_each_subcache4Rosetta, _dyld_shared_subcache_get_info4Rosetta ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libkeymgr.dylib'
-current-version: 31
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___keymgr_dwarf2_register_sections, ___keymgr_initializer,
- __keymgr_get_and_lock_processwide_ptr, __keymgr_get_and_lock_processwide_ptr_2,
- __keymgr_get_lock_count_processwide_ptr, __keymgr_get_lockmode_processwide_ptr,
- __keymgr_set_and_unlock_processwide_ptr, __keymgr_set_lockmode_processwide_ptr,
- __keymgr_unlock_processwide_ptr, _keymgrVersionNumber, _keymgrVersionString ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
-install-name: '/usr/lib/system/libmacho.dylib'
-current-version: 1009
-parent-umbrella:
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ _NXCombineCpuSubtypes, _NXFindBestFatArch, _NXFindBestFatArch_64,
- _NXFreeArchInfo, _NXGetAllArchInfos, _NXGetArchInfoFromCpuType,
- _NXGetArchInfoFromName, _NXGetLocalArchInfo, _get_edata, _get_end,
- _get_etext, _getsectbyname, _getsectbynamefromheader, _getsectbynamefromheader_64,
- _getsectbynamefromheaderwithswap, _getsectbynamefromheaderwithswap_64,
- _getsectdata, _getsectdatafromFramework, _getsectdatafromheader,
- _getsectdatafromheader_64, _getsectiondata, _getsegbyname,
- _getsegmentdata, _slot_name, _swap_build_tool_version, _swap_build_version_command,
- _swap_dyld_info_command, _swap_dylib_command, _swap_dylib_module,
- _swap_dylib_module_64, _swap_dylib_reference, _swap_dylib_table_of_contents,
- _swap_dylinker_command, _swap_dysymtab_command, _swap_encryption_command,
- _swap_encryption_command_64, _swap_entry_point_command, _swap_fat_arch,
- _swap_fat_arch_64, _swap_fat_header, _swap_fileset_entry_command,
- _swap_fvmfile_command, _swap_fvmlib_command, _swap_hppa_fp_thread_state,
- _swap_hppa_frame_thread_state, _swap_hppa_integer_thread_state,
- _swap_i386_exception_state, _swap_i386_float_state, _swap_i386_thread_state,
- _swap_i860_thread_state_regs, _swap_ident_command, _swap_indirect_symbols,
- _swap_linkedit_data_command, _swap_linker_option_command,
- _swap_load_command, _swap_m68k_thread_state_68882, _swap_m68k_thread_state_regs,
- _swap_m68k_thread_state_user_reg, _swap_m88110_thread_state_impl_t,
- _swap_m88k_thread_state_grf_t, _swap_m88k_thread_state_user_t,
- _swap_m88k_thread_state_xrf_t, _swap_mach_header, _swap_mach_header_64,
- _swap_nlist, _swap_nlist_64, _swap_note_command, _swap_ppc_exception_state_t,
- _swap_ppc_float_state_t, _swap_ppc_thread_state_t, _swap_prebind_cksum_command,
- _swap_prebound_dylib_command, _swap_ranlib, _swap_ranlib_64,
- _swap_relocation_info, _swap_routines_command, _swap_routines_command_64,
- _swap_rpath_command, _swap_section, _swap_section_64, _swap_segment_command,
- _swap_segment_command_64, _swap_source_version_command, _swap_sparc_thread_state_fpu,
- _swap_sparc_thread_state_regs, _swap_sub_client_command, _swap_sub_framework_command,
- _swap_sub_library_command, _swap_sub_umbrella_command, _swap_symseg_command,
- _swap_symtab_command, _swap_thread_command, _swap_twolevel_hint,
- _swap_twolevel_hints_command, _swap_uuid_command, _swap_version_min_command,
- _swap_x86_debug_state, _swap_x86_debug_state32, _swap_x86_debug_state64,
- _swap_x86_exception_state, _swap_x86_exception_state64, _swap_x86_float_state,
- _swap_x86_float_state64, _swap_x86_state_hdr, _swap_x86_thread_state,
- _swap_x86_thread_state64 ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libquarantine.dylib'
-current-version: 169
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __qtn_error, __qtn_file_alloc, __qtn_file_apply_to_fd, __qtn_file_apply_to_mount_point,
- __qtn_file_apply_to_path, __qtn_file_clone, __qtn_file_free,
- __qtn_file_get_flags, __qtn_file_get_identifier, __qtn_file_get_metadata,
- __qtn_file_get_metadata_size, __qtn_file_get_timestamp, __qtn_file_init,
- __qtn_file_init_with_data, __qtn_file_init_with_fd, __qtn_file_init_with_mount_point,
- __qtn_file_init_with_path, __qtn_file_set_flags, __qtn_file_set_identifier,
- __qtn_file_set_metadata, __qtn_file_set_timestamp, __qtn_file_to_data,
- __qtn_label_name, __qtn_proc_alloc, __qtn_proc_apply_to_pid,
- __qtn_proc_apply_to_self, __qtn_proc_clone, __qtn_proc_free,
- __qtn_proc_get_flags, __qtn_proc_get_identifier, __qtn_proc_get_metadata,
- __qtn_proc_get_metadata_size, __qtn_proc_get_path_exclusion_pattern,
- __qtn_proc_get_tracking_data, __qtn_proc_get_tracking_size,
- __qtn_proc_init, __qtn_proc_init_with_data, __qtn_proc_init_with_self,
- __qtn_proc_set_flags, __qtn_proc_set_identifier, __qtn_proc_set_metadata,
- __qtn_proc_set_path_exclusion_pattern, __qtn_proc_set_tracking_data,
- __qtn_proc_to_data, __qtn_xattr_name, _qtn_proc_init_with_pid,
- _responsibility_get_pid_responsible_for_pid, _responsibility_get_responsible_for_pid,
- _responsibility_get_uniqueid_responsible_for_pid, _responsibility_init,
- _responsibility_set_pid_responsible_for_pid ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ _responsibility_get_attribution_for_audittoken, _responsibility_get_responsible_audit_token_for_audit_token,
- _responsibility_identity_get_binary_entitlement_data, _responsibility_identity_get_binary_is_platform,
- _responsibility_identity_get_binary_offset, _responsibility_identity_get_binary_path,
- _responsibility_identity_get_binary_signing_id, _responsibility_identity_get_binary_team_id,
- _responsibility_identity_get_csflags, _responsibility_identity_get_hosted_path,
- _responsibility_identity_get_hosted_team_id, _responsibility_identity_get_persistent_identifier,
- _responsibility_identity_get_platform, _responsibility_identity_get_sdk,
- _responsibility_identity_get_user_uuid, _responsibility_identity_release,
- _responsibility_set_audittoken_responsible_for_caller, _responsibility_set_audittoken_responsible_for_self,
- _responsibility_set_caller_responsible_for_self, _responsibility_set_hosted_path,
- _responsibility_set_hosted_team_id, _responsibility_spawnattrs_getdisclaim,
- _responsibility_spawnattrs_setdisclaim ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libremovefile.dylib'
-current-version: 70
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___removefile_init_random, ___removefile_random_char, ___removefile_randomize_buffer,
- ___removefile_rename_unlink, ___removefile_sunlink, ___removefile_tree_walker,
- _removefile, _removefile_cancel, _removefile_state_alloc,
- _removefile_state_free, _removefile_state_get, _removefile_state_set,
- _removefileat ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_asl.dylib'
-current-version: 398
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _ASL_LEVEL_TO_STRING, __asl_evaluate_send, __asl_fork_child,
- __asl_lib_log, __asl_log_args_to_xpc, __asl_msg_dump, __asl_mt_shim_fork_child,
- __asl_mt_shim_send_message, __asl_server_cancel_direct_watch,
- __asl_server_control_query, __asl_server_create_aux_link,
- __asl_server_match, __asl_server_message, __asl_server_query_2,
- __asl_server_register_direct_watch, _asl_add_log_file, _asl_add_output,
- _asl_add_output_file, _asl_append, _asl_base_msg, _asl_client_add_output_file,
- _asl_client_get_control, _asl_client_kvdict, _asl_client_match,
- _asl_client_open, _asl_client_open_from_file, _asl_client_release,
- _asl_client_remove_output_file, _asl_client_retain, _asl_client_search,
- _asl_client_send, _asl_client_set_control, _asl_client_set_filter,
- _asl_client_set_output_file_filter, _asl_close, _asl_close_auxiliary_file,
- _asl_core_check_access, _asl_core_decode_buffer, _asl_core_encode_buffer,
- _asl_core_error, _asl_core_get_service_port, _asl_core_htonq,
- _asl_core_level_to_string, _asl_core_new_msg_id, _asl_core_ntohq,
- _asl_core_parse_time, _asl_core_str_match, _asl_core_str_match_c_time,
- _asl_core_str_match_char, _asl_core_str_to_size, _asl_core_str_to_time,
- _asl_core_str_to_uint32, _asl_core_string_hash, _asl_core_time_to_str,
- _asl_count, _asl_create_auxiliary_file, _asl_fetch_key_val_op,
- _asl_file_close, _asl_file_compact, _asl_file_ctime, _asl_file_fetch,
- _asl_file_fetch_next, _asl_file_fetch_previous, _asl_file_filter,
- _asl_file_filter_level, _asl_file_list_add, _asl_file_list_close,
- _asl_file_list_match, _asl_file_list_match_end, _asl_file_list_match_next,
- _asl_file_list_match_start, _asl_file_match, _asl_file_open_read,
- _asl_file_open_write, _asl_file_read_set_position, _asl_file_release,
- _asl_file_retain, _asl_file_save, _asl_file_size, _asl_filesystem_path,
- _asl_format, _asl_format_message, _asl_free, _asl_get, _asl_get_filter,
- _asl_get_index, _asl_get_local_control, _asl_get_type, _asl_get_value_for_key,
- _asl_key, _asl_legacy1_close, _asl_legacy1_fetch, _asl_legacy1_match,
- _asl_legacy1_open, _asl_list_from_string, _asl_log, _asl_log_auxiliary_location,
- _asl_log_descriptor, _asl_log_message, _asl_match, _asl_msg_cmp,
- _asl_msg_cmp_list, _asl_msg_copy, _asl_msg_count, _asl_msg_fetch,
- _asl_msg_from_string, _asl_msg_get_val_for_key, _asl_msg_key,
- _asl_msg_list_append, _asl_msg_list_count, _asl_msg_list_from_string,
- _asl_msg_list_get_index, _asl_msg_list_insert, _asl_msg_list_match,
- _asl_msg_list_new, _asl_msg_list_new_count, _asl_msg_list_next,
- _asl_msg_list_prepend, _asl_msg_list_prev, _asl_msg_list_release,
- _asl_msg_list_remove_index, _asl_msg_list_reset_iteration,
- _asl_msg_list_retain, _asl_msg_list_search, _asl_msg_list_to_asl_string,
- _asl_msg_list_to_string, _asl_msg_lookup, _asl_msg_merge,
- _asl_msg_new, _asl_msg_release, _asl_msg_retain, _asl_msg_set_key_val,
- _asl_msg_set_key_val_op, _asl_msg_to_string, _asl_msg_type,
- _asl_msg_unset, _asl_msg_unset_index, _asl_new, _asl_next,
- _asl_object_append, _asl_object_count, _asl_object_get_key_val_op_at_index,
- _asl_object_get_object_at_index, _asl_object_get_val_op_for_key,
- _asl_object_match, _asl_object_next, _asl_object_prepend,
- _asl_object_prev, _asl_object_remove_object_at_index, _asl_object_search,
- _asl_object_set_iteration_index, _asl_object_set_key_val_op,
- _asl_object_unset_key, _asl_open, _asl_open_from_file, _asl_open_path,
- _asl_parse_time, _asl_prepend, _asl_prev, _asl_release, _asl_remote_notify_name,
- _asl_remove_log_file, _asl_remove_output, _asl_remove_output_file,
- _asl_reset_iteration, _asl_retain, _asl_search, _asl_send,
- _asl_set, _asl_set_filter, _asl_set_key_val_op, _asl_set_local_control,
- _asl_set_output_file_filter, _asl_set_query, _asl_store_close,
- _asl_store_location, _asl_store_match, _asl_store_match_next,
- _asl_store_match_start, _asl_store_match_timeout, _asl_store_max_file_size,
- _asl_store_open_aux, _asl_store_open_read, _asl_store_open_write,
- _asl_store_release, _asl_store_retain, _asl_store_save, _asl_store_set_flags,
- _asl_store_statistics, _asl_store_sweep_file_cache, _asl_string_allocated_size,
- _asl_string_append, _asl_string_append_asl_key, _asl_string_append_asl_msg,
- _asl_string_append_char_no_encoding, _asl_string_append_no_encoding,
- _asl_string_append_no_encoding_len, _asl_string_append_op,
- _asl_string_append_xml_tag, _asl_string_bytes, _asl_string_length,
- _asl_string_new, _asl_string_release, _asl_string_release_return_bytes,
- _asl_string_retain, _asl_syslog_faciliy_name_to_num, _asl_syslog_faciliy_num_to_name,
- _asl_trigger_aslmanager, _asl_unset, _asl_unset_key, _asl_vlog,
- _aslresponse_free, _aslresponse_next, _closelog, _openlog,
- _setlogmask, _syslog, '_syslog$DARWIN_EXTSN', _vsyslog ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_blocks.dylib'
-current-version: 90
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _Block_size, __Block_copy, __Block_extended_layout, __Block_has_signature,
- __Block_isDeallocating, __Block_layout, __Block_object_assign,
- __Block_object_dispose, __Block_release, __Block_signature,
- __Block_tryRetain, __Block_use_RR2, __Block_use_stret, __NSConcreteAutoBlock,
- __NSConcreteFinalizingBlock, __NSConcreteGlobalBlock, __NSConcreteMallocBlock,
- __NSConcreteStackBlock, __NSConcreteWeakBlockVariable ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_c.dylib'
-current-version: 1583.0.14
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ '___opendir2$INODE64', '__readdir_unlocked$INODE64', '__seekdir$INODE64',
- '_alphasort$INODE64', '_daemon$1050', '_fdopendir$INODE64',
- _fstatx64_np, '_fstatx_np$INODE64', '_fts_children$INODE64',
- '_fts_close$INODE64', '_fts_open$INODE64', '_fts_open_b$INODE64',
- '_fts_read$INODE64', '_fts_set$INODE64', '_ftw$INODE64', '_getmntinfo$INODE64',
- _getmntinfo64, '_getmntinfo_r_np$INODE64', '_glob$INODE64',
- '_glob_b$INODE64', _lstatx64_np, '_lstatx_np$INODE64', '_nftw$INODE64',
- '_opendir$INODE64', '_readdir$INODE64', '_readdir_r$INODE64',
- '_rewinddir$INODE64', '_scandir$INODE64', '_scandir_b$INODE64',
- '_seekdir$INODE64', _statx64_np, '_statx_np$INODE64', _strtoencf80_l,
- '_telldir$INODE64', mcount ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ '$ld$weak$os10.11$_basename_r', '$ld$weak$os10.11$_clock_getres',
- '$ld$weak$os10.11$_clock_gettime', '$ld$weak$os10.11$_clock_settime',
- '$ld$weak$os10.11$_dirname_r', '$ld$weak$os10.11$_getentropy',
- '$ld$weak$os10.11$_mkostemp', '$ld$weak$os10.11$_mkostemps',
- '$ld$weak$os10.11$_timingsafe_bcmp', '$ld$weak$os10.12$_utimensat',
- __CurrentRuneLocale, __DefaultRuneLocale, __Exit, __NSGetArgc,
- __NSGetArgv, __NSGetEnviron, __NSGetMachExecuteHeader, __NSGetProgname,
- __PathLocale, __Read_RuneMagi, ___Balloc_D2A, ___Bfree_D2A,
- ____mb_cur_max, ____mb_cur_max_l, ____runetype, ____runetype_l,
- ____tolower, ____tolower_l, ____toupper, ____toupper_l, ___add_ovflpage,
- ___addel, ___any_on_D2A, ___assert_rtn, ___b2d_D2A, ___big_delete,
- ___big_insert, ___big_keydata, ___big_return, ___big_split,
- ___bigtens_D2A, ___bt_close, ___bt_cmp, ___bt_defcmp, ___bt_defpfx,
- ___bt_delete, ___bt_dleaf, ___bt_fd, ___bt_free, ___bt_get,
- ___bt_new, ___bt_open, ___bt_pgin, ___bt_pgout, ___bt_put,
- ___bt_ret, ___bt_search, ___bt_seq, ___bt_setcur, ___bt_split,
- ___bt_sync, ___buf_free, ___call_hash, ___cleanup, ___cmp_D2A,
- ___collate_equiv_match, ___collate_load_error, ___collate_lookup,
- ___collate_lookup_l, ___copybits_D2A, ___cxa_atexit, ___cxa_finalize,
- ___cxa_finalize_ranges, ___cxa_thread_atexit, ___d2b_D2A,
- ___dbpanic, ___default_hash, ___default_utx, ___delpair, ___diff_D2A,
- ___dtoa, ___expand_table, ___fflush, ___fgetwc, ___find_bigpair,
- ___find_last_page, ___fix_locale_grouping_str, ___fread, ___free_ovflpage,
- ___freedtoa, ___gdtoa, ___gdtoa_locks, ___get_buf, ___get_page,
- ___getonlyClocaleconv, ___hash_open, ___hdtoa, ___hi0bits_D2A,
- ___hldtoa, ___i2b_D2A, ___ibitmap, ___isctype, ___istype,
- ___istype_l, ___ldtoa, ___libc_init, ___lo0bits_D2A, ___log2,
- ___lshift_D2A, ___maskrune, ___maskrune_l, ___match_D2A, ___mb_cur_max,
- ___mb_sb_limit, ___memccpy_chk, ___memcpy_chk, ___memmove_chk,
- ___memset_chk, ___mult_D2A, ___multadd_D2A, ___nrv_alloc_D2A,
- ___opendir2, ___ovfl_delete, ___ovfl_get, ___ovfl_put, ___pow5mult_D2A,
- ___put_page, ___quorem_D2A, ___ratio_D2A, ___rec_close, ___rec_delete,
- ___rec_dleaf, ___rec_fd, ___rec_fmap, ___rec_fpipe, ___rec_get,
- ___rec_iput, ___rec_open, ___rec_put, ___rec_ret, ___rec_search,
- ___rec_seq, ___rec_sync, ___rec_vmap, ___rec_vpipe, ___reclaim_buf,
- ___rshift_D2A, ___rv_alloc_D2A, ___s2b_D2A, ___sF, ___sclose,
- ___sdidinit, ___setonlyClocaleconv, ___sflags, ___sflush,
- ___sfp, ___sfvwrite, ___sglue, ___sinit, ___slbexpand, ___smakebuf,
- ___snprintf_chk, ___snprintf_object_size_chk, ___split_page,
- ___sprintf_chk, ___sprintf_object_size_chk, ___sread, ___srefill,
- ___srget, ___sseek, ___stack_chk_fail, ___stack_chk_guard,
- ___stderrp, ___stdinp, ___stdoutp, ___stpcpy_chk, ___stpncpy_chk,
- ___strcat_chk, ___strcp_D2A, ___strcpy_chk, ___strlcat_chk,
- ___strlcpy_chk, ___strncat_chk, ___strncpy_chk, ___sum_D2A,
- ___svfscanf, ___swbuf, ___swhatbuf, ___swrite, ___swsetup,
- ___tens_D2A, ___tinytens_D2A, ___tolower, ___tolower_l, ___toupper,
- ___toupper_l, ___trailz_D2A, ___ulp_D2A, ___ungetc, ___ungetwc,
- ___vsnprintf_chk, ___vsprintf_chk, ___wcwidth, ___wcwidth_l,
- __allocenvstate, __atexit_receipt, __c_locale, __cleanup,
- __closeutx, __copyenv, __cthread_init_routine, __deallocenvstate,
- __endutxent, __flockfile_debug_stub, __fseeko, __ftello, __fwalk,
- __getenvp, __getutxent, __getutxid, __getutxline, __inet_aton_check,
- __init_clock_port, __int_to_time, __libc_fork_child, __libc_fork_parent,
- __libc_fork_prepare, __libc_initializer, __long_to_time, __mkpath_np,
- __mktemp, __openutx, __os_assert_log, __os_assert_log_ctx,
- __os_assumes_log, __os_assumes_log_ctx, __os_avoid_tail_call,
- __os_crash, __os_crash_callback, __os_crash_fmt, __os_crash_msg,
- __os_debug_log, __os_debug_log_error_offset, __os_debug_log_error_str,
- __putenvp, __pututxline, __rand48_add, __rand48_mult, __rand48_seed,
- __readdir_unlocked, __reclaim_telldir, __seekdir, __setenvp,
- __setutxent, __sigaction_nobind, __sigintr, __signal_nobind,
- __sigvec_nobind, __sread, __sseek, __subsystem_init, __swrite,
- __time32_to_time, __time64_to_time, __time_to_int, __time_to_long,
- __time_to_time32, __time_to_time64, __unsetenvp, __utmpxname,
- _a64l, _abort, _abort_report_np, _abs, _acl_add_flag_np, _acl_add_perm,
- _acl_calc_mask, _acl_clear_flags_np, _acl_clear_perms, _acl_copy_entry,
- _acl_copy_ext, _acl_copy_ext_native, _acl_copy_int, _acl_copy_int_native,
- _acl_create_entry, _acl_create_entry_np, _acl_delete_def_file,
- _acl_delete_entry, _acl_delete_fd_np, _acl_delete_file_np,
- _acl_delete_flag_np, _acl_delete_link_np, _acl_delete_perm,
- _acl_dup, _acl_free, _acl_from_text, _acl_get_entry, _acl_get_fd,
- _acl_get_fd_np, _acl_get_file, _acl_get_flag_np, _acl_get_flagset_np,
- _acl_get_link_np, _acl_get_perm_np, _acl_get_permset, _acl_get_permset_mask_np,
- _acl_get_qualifier, _acl_get_tag_type, _acl_init, _acl_maximal_permset_mask_np,
- _acl_set_fd, _acl_set_fd_np, _acl_set_file, _acl_set_flagset_np,
- _acl_set_link_np, _acl_set_permset, _acl_set_permset_mask_np,
- _acl_set_qualifier, _acl_set_tag_type, _acl_size, _acl_to_text,
- _acl_valid, _acl_valid_fd_np, _acl_valid_file_np, _acl_valid_link,
- _addr2ascii, _alarm, _alphasort, _arc4random, _arc4random_addrandom,
- _arc4random_buf, _arc4random_stir, _arc4random_uniform, _ascii2addr,
- _asctime, _asctime_r, _asprintf, _asprintf_l, _asxprintf,
- _asxprintf_exec, _atexit, _atexit_b, _atof, _atof_l, _atoi,
- _atoi_l, _atol, _atol_l, _atoll, _atoll_l, _backtrace, _backtrace_async,
- _backtrace_from_fp, _backtrace_image_offsets, _backtrace_set_pcs_func,
- _backtrace_symbols, _backtrace_symbols_fd, _basename, _basename_r,
- _bcopy, _brk, _bsd_signal, _bsearch, _bsearch_b, _btowc, _btowc_l,
- _catclose, _catgets, _catopen, _cfgetispeed, _cfgetospeed,
- _cfmakeraw, _cfsetispeed, _cfsetospeed, _cfsetspeed, _cgetcap,
- _cgetclose, _cgetent, _cgetfirst, _cgetmatch, _cgetnext, _cgetnum,
- _cgetset, _cgetstr, _cgetustr, _chmodx_np, _clearerr, _clearerr_unlocked,
- _clock, _clock_getres, _clock_gettime, _clock_gettime_nsec_np,
- _clock_port, _clock_sem, _clock_settime, _closedir, _compat_mode,
- _confstr, _copy_printf_domain, _creat, '_creat$NOCANCEL',
- _crypt, _ctermid, _ctermid_r, _ctime, _ctime_r, _daemon, _daylight,
- _dbm_clearerr, _dbm_close, _dbm_delete, _dbm_dirfno, _dbm_error,
- _dbm_fetch, _dbm_firstkey, _dbm_nextkey, _dbm_open, _dbm_store,
- _dbopen, _devname, _devname_r, _difftime, _digittoint, _digittoint_l,
- _dirfd, _dirname, _dirname_r, _div, _dprintf, _dprintf_l,
- _drand48, _duplocale, _dxprintf, _dxprintf_exec, _ecvt, _encrypt,
- _endttyent, _endusershell, _endutxent, _endutxent_wtmp, _environ_lock_np,
- _environ_unlock_np, _erand48, _err, _err_set_exit, _err_set_exit_b,
- _err_set_file, _errc, _errx, _execl, _execle, _execlp, _execv,
- _execvP, _execvp, _exit, _f_prealloc, _fchmodx_np, _fclose,
- _fcvt, _fdopen, '_fdopen$DARWIN_EXTSN', _fdopendir, _feof,
- _feof_unlocked, _ferror, _ferror_unlocked, _fflagstostr, _fflush,
- _fgetc, _fgetln, _fgetpos, _fgetrune, _fgets, _fgetwc, _fgetwc_l,
- _fgetwln, _fgetwln_l, _fgetws, _fgetws_l, _fileno, _fileno_unlocked,
- _filesec_dup, _filesec_free, _filesec_get_property, _filesec_init,
- _filesec_query_property, _filesec_set_property, _filesec_unset_property,
- _flockfile, _fmemopen, _fmtcheck, _fmtmsg, _fnmatch, _fopen,
- '_fopen$DARWIN_EXTSN', _fork, _forkpty, _fparseln, _fprintf,
- _fprintf_l, _fpurge, _fputc, _fputrune, _fputs, _fputwc, _fputwc_l,
- _fputws, _fputws_l, _fread, _free_printf_comp, _free_printf_domain,
- _freelocale, _freopen, _fscanf, _fscanf_l, _fseek, _fseeko,
- _fsetpos, _fstatvfs, _fstatx_np, _fsync_volume_np, _ftell,
- _ftello, _ftime, _ftok, _ftrylockfile, _fts_children, _fts_close,
- _fts_open, _fts_open_b, _fts_read, _fts_set, _ftw, _fungetrune,
- _funlockfile, _funopen, _fwide, _fwprintf, _fwprintf_l, _fwrite,
- _fwscanf, _fwscanf_l, _fxprintf, _fxprintf_exec, _gcvt, _getbsize,
- _getc, _getc_unlocked, _getchar, _getchar_unlocked, _getcwd,
- _getdate, _getdate_err, _getdelim, _getdiskbyname, _getenv,
- '_getgroups$DARWIN_EXTSN', _gethostid, _gethostname, _getipv4sourcefilter,
- _getlastlogx, _getlastlogxbyname, _getline, _getloadavg, _getlogin,
- _getlogin_r, _getmntinfo, _getmntinfo_r_np, _getmode, _getopt,
- _getopt_long, _getopt_long_only, _getpagesize, _getpass, _getpeereid,
- _getprogname, _gets, _getsourcefilter, _getsubopt, _gettimeofday,
- _getttyent, _getttynam, _getusershell, _getutmp, _getutmpx,
- _getutxent, _getutxent_wtmp, _getutxid, _getutxline, _getvfsbyname,
- _getw, _getwc, _getwc_l, _getwchar, _getwchar_l, _getwd, _glob,
- _glob_b, _globfree, _gmtime, _gmtime_r, _grantpt, _hash_create,
- _hash_destroy, _hash_purge, _hash_search, _hash_stats, _hash_traverse,
- _hcreate, _hdestroy, _heapsort, _heapsort_b, _hsearch, _imaxabs,
- _imaxdiv, _inet_addr, _inet_aton, _inet_lnaof, _inet_makeaddr,
- _inet_net_ntop, _inet_net_pton, _inet_neta, _inet_netof, _inet_network,
- _inet_nsap_addr, _inet_nsap_ntoa, _inet_ntoa, _inet_ntop,
- _inet_ntop4, _inet_ntop6, _inet_pton, _initstate, _insque,
- _isalnum, _isalnum_l, _isalpha, _isalpha_l, _isascii, _isatty,
- _isblank, _isblank_l, _iscntrl, _iscntrl_l, _isdigit, _isdigit_l,
- _isgraph, _isgraph_l, _ishexnumber, _ishexnumber_l, _isideogram,
- _isideogram_l, _islower, _islower_l, _isnumber, _isnumber_l,
- _isphonogram, _isphonogram_l, _isprint, _isprint_l, _ispunct,
- _ispunct_l, _isrune, _isrune_l, _isspace, _isspace_l, _isspecial,
- _isspecial_l, _isupper, _isupper_l, _iswalnum, _iswalnum_l,
- _iswalpha, _iswalpha_l, _iswascii, _iswblank, _iswblank_l,
- _iswcntrl, _iswcntrl_l, _iswctype, _iswctype_l, _iswdigit,
- _iswdigit_l, _iswgraph, _iswgraph_l, _iswhexnumber, _iswhexnumber_l,
- _iswideogram, _iswideogram_l, _iswlower, _iswlower_l, _iswnumber,
- _iswnumber_l, _iswphonogram, _iswphonogram_l, _iswprint, _iswprint_l,
- _iswpunct, _iswpunct_l, _iswrune, _iswrune_l, _iswspace, _iswspace_l,
- _iswspecial, _iswspecial_l, _iswupper, _iswupper_l, _iswxdigit,
- _iswxdigit_l, _isxdigit, _isxdigit_l, _jrand48, _kOSThermalNotificationPressureLevelName,
- _killpg, _l64a, _labs, _lchflags, _lchmod, _lcong48, _ldiv,
- _lfind, _link_addr, _link_ntoa, _llabs, _lldiv, _localeconv,
- _localeconv_l, _localtime, _localtime_r, _lockf, '_lockf$NOCANCEL',
- _login, _login_tty, _logout, _logwtmp, _lrand48, _lsearch,
- _lstatx_np, _lutimes, _mblen, _mblen_l, _mbmb, _mbrlen, _mbrlen_l,
- _mbrrune, _mbrtowc, _mbrtowc_l, _mbrune, _mbsinit, _mbsinit_l,
- _mbsnrtowcs, _mbsnrtowcs_l, _mbsrtowcs, _mbsrtowcs_l, _mbstowcs,
- _mbstowcs_l, _mbtowc, _mbtowc_l, _memmem, _memset_s, _mergesort,
- _mergesort_b, _mkdirx_np, _mkdtemp, _mkdtempat_np, _mkfifox_np,
- _mkostemp, _mkostemps, _mkostempsat_np, _mkpath_np, _mkpathat_np,
- _mkstemp, _mkstemp_dprotected_np, _mkstemps, _mkstempsat_np,
- _mktemp, _mktime, _monaddition, _moncontrol, _moncount, _moninit,
- _monitor, _monoutput, _monreset, _monstartup, _mpool_close,
- _mpool_filter, _mpool_get, _mpool_new, _mpool_open, _mpool_put,
- _mpool_sync, _mrand48, _nanosleep, '_nanosleep$NOCANCEL',
- _new_printf_comp, _new_printf_domain, _newlocale, _nextwctype,
- _nextwctype_l, _nftw, _nice, _nl_langinfo, _nl_langinfo_l,
- _nrand48, _nvis, _off32, _off64, _offtime, _open_memstream,
- _open_with_subsystem, _open_wmemstream, _opendev, _opendir,
- _openpty, _openx_np, _optarg, _opterr, _optind, _optopt, _optreset,
- _pause, '_pause$NOCANCEL', _pclose, _perror, _popen, '_popen$DARWIN_EXTSN',
- _posix2time, _posix_openpt, _posix_spawnp, _printf, _printf_l,
- _psignal, _psort, _psort_b, _psort_r, _ptsname, _ptsname_r,
- _putc, _putc_unlocked, _putchar, _putchar_unlocked, _putenv,
- _puts, _pututxline, _putw, _putwc, _putwc_l, _putwchar, _putwchar_l,
- _qsort, _qsort_b, _qsort_r, _querylocale, _radixsort, _raise,
- _rand, _rand_r, _random, _rb_tree_count, _rb_tree_find_node,
- _rb_tree_find_node_geq, _rb_tree_find_node_leq, _rb_tree_init,
- _rb_tree_insert_node, _rb_tree_iterate, _rb_tree_remove_node,
- _readdir, _readdir_r, _readpassphrase, _reallocf, _realpath,
- '_realpath$DARWIN_EXTSN', _recv, '_recv$NOCANCEL', _regcomp,
- _regcomp_l, _regerror, _regexec, _regfree, _register_printf_domain_function,
- _register_printf_domain_render_std, _regncomp, _regncomp_l,
- _regnexec, _regwcomp, _regwcomp_l, _regwexec, _regwncomp,
- _regwncomp_l, _regwnexec, _remove, _remque, _rewind, _rewinddir,
- _rindex, _rpmatch, _sbrk, _scandir, _scandir_b, _scanf, _scanf_l,
- _seed48, _seekdir, _send, '_send$NOCANCEL', _setbuf, _setbuffer,
- _setenv, _sethostid, _sethostname, _setinvalidrune, _setipv4sourcefilter,
- _setkey, _setlinebuf, _setlocale, _setlogin, _setmode, _setpgrp,
- _setprogname, _setrgid, _setruid, _setrunelocale, _setsourcefilter,
- _setstate, _settimeofday, _setttyent, _setusershell, _setutxent,
- _setutxent_wtmp, _setvbuf, _sigaction, _sigaddset, _sigaltstack,
- _sigblock, _sigdelset, _sigemptyset, _sigfillset, _sighold,
- _sigignore, _siginterrupt, _sigismember, _signal, _sigpause,
- '_sigpause$NOCANCEL', _sigrelse, _sigset, _sigsetmask, _sigvec,
- _skip, _sl_add, _sl_find, _sl_free, _sl_init, _sleep, '_sleep$NOCANCEL',
- _snprintf, _snprintf_l, _snvis, _sockatmark, _sprintf, _sprintf_l,
- _sradixsort, _srand, _srand48, _sranddev, _srandom, _srandomdev,
- _sscanf, _sscanf_l, _stat_with_subsystem, _statvfs, _statx_np,
- _stpcpy, _stpncpy, _stravis, _strcasecmp, _strcasecmp_l, _strcasestr,
- _strcasestr_l, _strcat, _strcoll, _strcoll_l, _strcspn, _strdup,
- _strenvisx, _strerror, _strerror_r, _strfmon, _strfmon_l,
- _strftime, _strftime_l, _strmode, _strncasecmp, _strncasecmp_l,
- _strncat, _strndup, _strnstr, _strnunvis, _strnunvisx, _strnvis,
- _strnvisx, _strpbrk, _strptime, _strptime_l, _strrchr, _strsenvisx,
- _strsep, _strsignal, _strsignal_r, _strsnvis, _strsnvisx,
- _strspn, _strsvis, _strsvisx, _strtod, _strtod_l, _strtoencf16,
- _strtoencf32, _strtoencf64, _strtoencf64x, _strtof, _strtof_l,
- _strtofflags, _strtoimax, _strtoimax_l, _strtok, _strtok_r,
- _strtol, _strtol_l, _strtold, _strtold_l, _strtoll, _strtoll_l,
- _strtonum, _strtoq, _strtoq_l, _strtoul, _strtoul_l, _strtoull,
- _strtoull_l, _strtoumax, _strtoumax_l, _strtouq, _strtouq_l,
- _strunvis, _strunvisx, _strvis, _strvisx, _strxfrm, _strxfrm_l,
- _suboptarg, _svis, _swab, _swprintf, _swprintf_l, _swscanf,
- _swscanf_l, _sxprintf, _sxprintf_exec, _sync_volume_np, _sys_errlist,
- _sys_nerr, _sys_siglist, _sys_signame, _sysconf, _sysctl,
- _sysctlbyname, _sysctlnametomib, _system, '_system$NOCANCEL',
- _tcdrain, '_tcdrain$NOCANCEL', _tcflow, _tcflush, _tcgetattr,
- _tcgetpgrp, _tcgetsid, _tcsendbreak, _tcsetattr, _tcsetpgrp,
- _tdelete, _telldir, _tempnam, _tfind, _thread_stack_async_pcs,
- _thread_stack_pcs, _time, _time2posix, _timegm, _timelocal,
- _timeoff, _times, _timespec_get, _timezone, _timingsafe_bcmp,
- _tmpfile, _tmpnam, _toascii, _tolower, _tolower_l, _toupper,
- _toupper_l, _towctrans, _towctrans_l, _towlower, _towlower_l,
- _towupper, _towupper_l, _tre_ast_new_catenation, _tre_ast_new_iter,
- _tre_ast_new_literal, _tre_ast_new_node, _tre_ast_new_union,
- _tre_compile, _tre_fill_pmatch, _tre_free, _tre_mem_alloc_impl,
- _tre_mem_destroy, _tre_mem_new_impl, _tre_parse, _tre_stack_destroy,
- _tre_stack_new, _tre_stack_num_objects, _tre_tnfa_run_backtrack,
- _tre_tnfa_run_parallel, _tsearch, _ttyname, _ttyname_r, _ttyslot,
- _twalk, _tzname, _tzset, _tzsetwall, _ualarm, _ulimit, _umaskx_np,
- _uname, _ungetc, _ungetwc, _ungetwc_l, _unlockpt, _unsetenv,
- _unvis, _uselocale, _usleep, '_usleep$NOCANCEL', _utime, _utmpxname,
- _uuid_clear, _uuid_compare, _uuid_copy, _uuid_generate, _uuid_generate_random,
- _uuid_generate_time, _uuid_is_null, _uuid_pack, _uuid_parse,
- _uuid_unpack, _uuid_unparse, _uuid_unparse_lower, _uuid_unparse_upper,
- _vasprintf, _vasprintf_l, _vasxprintf, _vasxprintf_exec, _vdprintf,
- _vdprintf_l, _vdxprintf, _vdxprintf_exec, _verr, _verrc, _verrx,
- _vfork, _vfprintf, _vfprintf_l, _vfscanf, _vfscanf_l, _vfwprintf,
- _vfwprintf_l, _vfwscanf, _vfwscanf_l, _vfxprintf, _vfxprintf_exec,
- _vis, _vprintf, _vprintf_l, _vscanf, _vscanf_l, _vsnprintf,
- _vsnprintf_l, _vsprintf, _vsprintf_l, _vsscanf, _vsscanf_l,
- _vswprintf, _vswprintf_l, _vswscanf, _vswscanf_l, _vsxprintf,
- _vsxprintf_exec, _vwarn, _vwarnc, _vwarnx, _vwprintf, _vwprintf_l,
- _vwscanf, _vwscanf_l, _vxprintf, _vxprintf_exec, _wait, '_wait$NOCANCEL',
- _wait3, _waitpid, '_waitpid$NOCANCEL', _warn, _warnc, _warnx,
- _wcpcpy, _wcpncpy, _wcrtomb, _wcrtomb_l, _wcscasecmp, _wcscasecmp_l,
- _wcscat, _wcschr, _wcscmp, _wcscoll, _wcscoll_l, _wcscpy,
- _wcscspn, _wcsdup, _wcsftime, _wcsftime_l, _wcslcat, _wcslcpy,
- _wcslen, _wcsncasecmp, _wcsncasecmp_l, _wcsncat, _wcsncmp,
- _wcsncpy, _wcsnlen, _wcsnrtombs, _wcsnrtombs_l, _wcspbrk,
- _wcsrchr, _wcsrtombs, _wcsrtombs_l, _wcsspn, _wcsstr, _wcstod,
- _wcstod_l, _wcstof, _wcstof_l, _wcstoimax, _wcstoimax_l, _wcstok,
- _wcstol, _wcstol_l, _wcstold, _wcstold_l, _wcstoll, _wcstoll_l,
- _wcstombs, _wcstombs_l, _wcstoul, _wcstoul_l, _wcstoull, _wcstoull_l,
- _wcstoumax, _wcstoumax_l, _wcswidth, _wcswidth_l, _wcsxfrm,
- _wcsxfrm_l, _wctob, _wctob_l, _wctomb, _wctomb_l, _wctrans,
- _wctrans_l, _wctype, _wctype_l, _wcwidth, _wcwidth_l, _wmemchr,
- _wmemcmp, _wmemcpy, _wmemmove, _wmemset, _wordexp, _wordfree,
- _wprintf, _wprintf_l, _wscanf, _wscanf_l, _wtmpxname, _xprintf,
- _xprintf_exec ]
-reexports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _bcmp, _bzero, _index, _memccpy, _memchr, _memcmp, _memcpy,
- _memmove, _memset, _memset_pattern16, _memset_pattern4, _memset_pattern8,
- _strchr, _strcmp, _strcpy, _strlcat, _strlcpy, _strlen, _strncmp,
- _strncpy, _strnlen, _strstr ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_collections.dylib'
-current-version: 1583.0.14
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _os_map_128_clear, _os_map_128_count, _os_map_128_delete,
- _os_map_128_destroy, _os_map_128_find, _os_map_128_foreach,
- _os_map_128_init, _os_map_128_insert, _os_map_32_clear, _os_map_32_count,
- _os_map_32_delete, _os_map_32_destroy, _os_map_32_find, _os_map_32_foreach,
- _os_map_32_init, _os_map_32_insert, _os_map_64_clear, _os_map_64_count,
- _os_map_64_delete, _os_map_64_destroy, _os_map_64_find, _os_map_64_foreach,
- _os_map_64_init, _os_map_64_insert, _os_map_str_clear, _os_map_str_count,
- _os_map_str_delete, _os_map_str_destroy, _os_map_str_entry,
- _os_map_str_find, _os_map_str_foreach, _os_map_str_init, _os_map_str_insert,
- _os_set_32_ptr_clear, _os_set_32_ptr_count, _os_set_32_ptr_delete,
- _os_set_32_ptr_destroy, _os_set_32_ptr_find, _os_set_32_ptr_foreach,
- _os_set_32_ptr_init, _os_set_32_ptr_insert, _os_set_64_ptr_clear,
- _os_set_64_ptr_count, _os_set_64_ptr_delete, _os_set_64_ptr_destroy,
- _os_set_64_ptr_find, _os_set_64_ptr_foreach, _os_set_64_ptr_init,
- _os_set_64_ptr_insert, _os_set_str_ptr_clear, _os_set_str_ptr_count,
- _os_set_str_ptr_delete, _os_set_str_ptr_destroy, _os_set_str_ptr_find,
- _os_set_str_ptr_foreach, _os_set_str_ptr_init, _os_set_str_ptr_insert ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_configuration.dylib'
-current-version: 1296.0.1
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __dns_configuration_ack, __libSC_info_fork_child, __libSC_info_fork_parent,
- __libSC_info_fork_prepare, __nwi_config_agent_copy_data, __nwi_state_ack,
- __nwi_state_force_refresh, _config_agent_copy_dns_information,
- _config_agent_copy_proxy_information, _config_agent_free_dns_information,
- _config_agent_free_proxy_information, _config_agent_get_dns_nameservers,
- _config_agent_get_dns_searchdomains, _config_agent_update_proxy_information,
- _dns_configuration_copy, _dns_configuration_free, _dns_configuration_notify_key,
- _is_config_agent_type_dns, _is_config_agent_type_proxy, _nwi_ifstate_compare_rank,
- _nwi_ifstate_get_dns_signature, _nwi_ifstate_get_flags, _nwi_ifstate_get_generation,
- _nwi_ifstate_get_ifname, _nwi_ifstate_get_next, _nwi_ifstate_get_reachability_flags,
- _nwi_ifstate_get_signature, _nwi_ifstate_get_vpn_server, _nwi_state_copy,
- _nwi_state_get_first_ifstate, _nwi_state_get_generation, _nwi_state_get_ifstate,
- _nwi_state_get_interface_names, _nwi_state_get_notify_key,
- _nwi_state_get_reachability_flags, _nwi_state_release ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_containermanager.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _CMFSSEAM_DEFAULT, _CONTAINER_NOTIFY_USER_INVALIDATED, _CONTAINER_PERSONA_CURRENT,
- _CONTAINER_PERSONA_PRIMARY, __container_init, __container_query_get_servicing_pid,
- __container_references_get_servicing_pid, _container_acquire_sandbox_extension,
- _container_audit_token_copy_codesign_hash, _container_audit_token_copy_codesign_identifier,
- _container_audit_token_copy_entitlement, _container_audit_token_copy_executable_name,
- _container_audit_token_for_pid, _container_audit_token_get_codesign_status,
- _container_audit_token_get_egid, _container_audit_token_get_euid,
- _container_audit_token_get_pid, _container_audit_token_get_platform,
- _container_audit_token_is_valid, _container_base64_decode,
- _container_base64_decode_string, _container_base64_encode,
- _container_base64_encode_string, _container_bundle_copy_data_container,
- _container_bundle_copy_data_container_path, _container_class_for_each_normalized_class,
- _container_class_normalized, _container_class_supports_data_subdirectory,
- _container_class_supports_randomized_path, _container_class_supports_randomized_path_on_current_platform,
- _container_client_copy_decoded_from_xpc_object, _container_client_copy_encoded_xpc_object,
- _container_client_copy_entitlement, _container_client_create_from_audit_token,
- _container_client_get_audit_token, _container_client_get_codesign_identifier,
- _container_client_get_egid, _container_client_get_euid, _container_client_get_persona_unique_string,
- _container_client_get_pid, _container_client_get_platform,
- _container_client_initializer, _container_client_is_alive,
- _container_client_is_platform_binary, _container_client_is_sandboxed,
- _container_client_is_signature_valid, _container_client_is_signed,
- _container_client_is_test_client, _container_codesign_copy_cdhash,
- _container_codesign_copy_cs_identity, _container_codesign_copy_current_identifier,
- _container_codesign_get_self_audit_token, _container_codesign_get_status,
- _container_copy_client, _container_copy_code_signing_info_for_identifier,
- _container_copy_from_path, _container_copy_info, _container_copy_info_value_for_key,
- _container_copy_object, _container_copy_path, _container_copy_persona_unique_strings,
- _container_copy_sandbox_token, _container_copy_unlocalized_description,
- _container_create_merged_array, _container_create_or_lookup_app_group_path_by_app_group_identifier,
- _container_create_or_lookup_app_group_paths_for_current_user,
- _container_create_or_lookup_app_group_paths_for_platform,
- _container_create_or_lookup_app_group_paths_from_entitlements,
- _container_create_or_lookup_app_group_paths_from_entitlements_4ls,
- _container_create_or_lookup_for_current_user, _container_create_or_lookup_for_platform,
- _container_create_or_lookup_path_for_current_user, _container_create_or_lookup_path_for_platform,
- _container_create_or_lookup_system_group_paths, _container_create_or_lookup_user_managed_assets_path,
- _container_create_or_lookup_user_managed_assets_relative_path,
- _container_delete, _container_delete_all_container_content,
- _container_delete_all_data_container_content_for_current_user,
- _container_delete_array_of_containers, _container_delete_user_managed_assets,
- _container_delete_with_class_and_identifier_for_current_user,
- _container_disk_usage, _container_disposition, _container_disposition_for_array,
- _container_entitlements_copy_container_identifiers, _container_error_copy,
- _container_error_copy_unlocalized_description, _container_error_create,
- _container_error_free, _container_error_get_category, _container_error_get_path,
- _container_error_get_posix_errno, _container_error_get_type,
- _container_error_is_fatal, _container_error_is_file_system_error,
- _container_error_reinitialize, _container_flush_container_cache,
- _container_flush_persona_cache, _container_free_array_of_containers,
- _container_free_client, _container_free_object, _container_frozenset_copyout_external_bytes,
- _container_frozenset_create, _container_frozenset_create_from_external_bytes,
- _container_frozenset_destroy, _container_frozenset_enumerate_matches,
- _container_frozenset_get_container_class_of_container_at_index,
- _container_frozenset_get_count, _container_frozenset_get_generation,
- _container_frozenset_get_identifier_of_container_at_index,
- _container_frozenset_get_is_new_of_container_at_index, _container_frozenset_get_is_transient_of_container_at_index,
- _container_frozenset_get_path_of_container_at_index, _container_frozenset_get_persona_unique_string_of_container_at_index,
- _container_frozenset_get_stored_string, _container_frozenset_get_uid_of_container_at_index,
- _container_frozenset_get_uma_relative_path_of_container_at_index,
- _container_frozenset_get_unique_path_component_of_container_at_index,
- _container_frozenset_get_uuid_of_container_at_index, _container_fs_add_path_component,
- _container_fs_append_trailing_slash, _container_fs_item_exists,
- _container_fs_item_exists_at, _container_fs_load_plist_at,
- _container_fs_path_at, _container_fs_resolve_dirent_type_at,
- _container_get_all_with_class_for_current_user, _container_get_class,
- _container_get_error_description, _container_get_identifier,
- _container_get_info, _container_get_info_value_for_key, _container_get_path,
- _container_get_persona_unique_string, _container_get_uid,
- _container_get_unique_path_component, _container_get_user_managed_assets_relative_path,
- _container_group_container_identifiers_for_current_user, _container_internal_get_first_boot_uuid,
- _container_invalidate_code_signing_cache, _container_is_equal,
- _container_is_new, _container_is_transient, _container_log_client_fault_logging_is_enabled,
- _container_log_error, _container_log_error_with_faults, _container_log_ext_error,
- _container_log_ext_error_with_faults, _container_log_handle_for_category,
- _container_log_replication_disable, _container_log_replication_enable_to_uid_relative_path,
- _container_log_replication_prune_for_uid, _container_log_set_client_fault_logging,
- _container_object_copy, _container_object_create, _container_object_create_blank,
- _container_object_free, _container_object_get_class, _container_object_get_identifier,
- _container_object_get_info, _container_object_get_path, _container_object_get_persona_unique_string,
- _container_object_get_query, _container_object_get_sandbox_token,
- _container_object_get_uid, _container_object_get_unique_path_component,
- _container_object_get_user_managed_assets_relative_path, _container_object_get_uuid,
- _container_object_is_new, _container_object_is_transient,
- _container_object_sandbox_extension_activate, _container_object_set_backing_store_from_query,
- _container_object_set_class, _container_object_set_info, _container_object_set_path,
- _container_object_set_sandbox_token, _container_object_set_transient,
- _container_object_set_unique_path_component, _container_object_set_user_managed_assets_relative_path,
- _container_object_set_uuid, _container_object_update_metadata,
- _container_operation_complete_background_tasks, _container_operation_delete,
- _container_operation_delete_array, _container_operation_delete_reclaim_disk_space,
- _container_paths_context_create, _container_paths_context_free,
- _container_paths_context_set_class, _container_paths_context_set_flags,
- _container_paths_context_set_persona_unique_string, _container_paths_context_set_transient,
- _container_paths_context_set_uid, _container_paths_copy_container_at,
- _container_paths_copy_container_from_path, _container_paths_copy_container_root_path_for_context,
- _container_paths_copy_uid_home_relative, _container_paths_create_uid_home_relative,
- _container_paths_enumerate_containers_at, _container_perfect_hash_copyout_external_bytes,
- _container_perfect_hash_count, _container_perfect_hash_create,
- _container_perfect_hash_create_from_external_bytes, _container_perfect_hash_destroy,
- _container_perfect_hash_index_of, _container_perfect_hash_num_indexes,
- _container_perform_with_client_context, _container_persona_collect_all_ids,
- _container_persona_convert_unique_string_to_persona_uid, _container_persona_foreach,
- _container_process_restored_container, _container_pwd_copy_user_home_path,
- _container_pwd_for_name, _container_pwd_for_uid, _container_query_copy,
- _container_query_count_results, _container_query_create, _container_query_create_from_container,
- _container_query_free, _container_query_get_last_error, _container_query_get_single_result,
- _container_query_iterate_results_sync, _container_query_iterate_results_with_identifier_sync,
- _container_query_iterate_results_with_subquery_sync, _container_query_operation_set_client,
- _container_query_operation_set_flags, _container_query_operation_set_platform,
- _container_query_set_class, _container_query_set_group_identifiers,
- _container_query_set_identifiers, _container_query_set_include_other_owners,
- _container_query_set_persona_unique_string, _container_query_set_transient,
- _container_query_set_uid, _container_realpath, _container_recreate_structure,
- _container_references_get_last_error, _container_regenerate_uuid,
- _container_repair_user_data, _container_replace, _container_retry_test,
- _container_sandbox_extension_consume, _container_sandbox_extension_revoke,
- _container_sandbox_issue_custom_extension, _container_sandbox_issue_extension,
- _container_seam_fs_ensure_lazy_loaded, _container_seam_fs_reset,
- _container_seam_fs_set_common, _container_serialize_copy_deserialized_reference,
- _container_serialize_copy_serialized_reference, _container_set_code_signing_info_for_identifier,
- _container_set_data_protection_for_current_user, _container_set_info_value,
- _container_set_test_lock, _container_stage_shared_system_content,
- _container_string_rom_copyout_external_bytes, _container_string_rom_count,
- _container_string_rom_create, _container_string_rom_create_from_external_bytes,
- _container_string_rom_destroy, _container_string_rom_index_of,
- _container_string_rom_string_at_index, _container_subdirectories_for_class,
- _container_system_group_path_for_identifier, _container_system_path_for_identifier,
- _container_update_with_container, _container_user_managed_assets_path,
- _container_user_managed_assets_relative_path, _container_xpc_connection_is_shared,
- _container_xpc_create_connection, _container_xpc_decode_container_object,
- _container_xpc_decode_create_container_object_array, _container_xpc_decode_error,
- _container_xpc_encode_client_onto_message, _container_xpc_encode_container_array,
- _container_xpc_encode_container_as_object, _container_xpc_encode_container_metadata_as_object,
- _container_xpc_encode_container_object, _container_xpc_encode_error,
- _container_xpc_encode_error_as_object, _container_xpc_get_incoming_reply_preprocess_block,
- _container_xpc_get_outgoing_message_postprocess_block, _container_xpc_get_outgoing_message_send_block,
- _container_xpc_get_raw_connection, _container_xpc_invalidate_connection,
- _container_xpc_release, _container_xpc_send_message, _container_xpc_send_sync_message,
- _container_xpc_send_sync_message_with_object, _container_xpc_set_client_context_during_block,
- _container_xpc_set_incoming_reply_preprocess_block, _container_xpc_set_outgoing_message_postprocess_block,
- _container_xpc_set_outgoing_message_send_block, _container_xpc_set_use_shared_connection,
- _container_xpc_shared_copy_connection, _gCMFSSeam ]
- - targets: [ x86_64-maccatalyst, arm64-maccatalyst, arm64e-maccatalyst ]
- symbols: [ _CONTAINER_CURRENT_MOBILE_UID, _CONTAINER_INSTALLATION_UID,
- _CONTAINER_SYSTEM_UID, _container_create_or_lookup, _container_create_or_lookup_app_group_paths,
- _container_create_or_lookup_group_container_paths_for_current_user,
- _container_create_or_lookup_path, _container_delete_all_data_container_content,
- _container_delete_with_uid_class_and_identifier, _container_get_all_with_class,
- _container_perform_data_migration, _container_perform_data_migration_for_current_user,
- _container_references_add, _container_references_create, _container_references_free,
- _container_references_iterate_by_group_sync, _container_references_iterate_by_owner_sync,
- _container_references_operation_set_flags, _container_references_remove,
- _container_references_set_class, _container_references_set_persona_unique_string,
- _container_references_set_uid ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_coreservices.dylib'
-current-version: 129
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _NSGetNextSearchPathEnumeration, _NSStartSearchPathEnumeration,
- _NSStartSearchPathEnumerationPrivate, ___user_local_dirname,
- ___user_relative_dirname, __append_relative_path_component,
- __dirhelper, __dirhelper_relative, __get_user_dir_suffix,
- __libcoreservices_fork_child, __set_user_dir_suffix, _sysdir_get_next_search_path_enumeration,
- _sysdir_start_search_path_enumeration, _sysdir_start_search_path_enumeration_private ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ __idle_exit ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_darwin.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___libdarwin_init, ___os_temporary_resource_shortage, _claimfd_np,
- _close_drop_np, _close_drop_optional_np, _crfprintf_np, _dirstat_np,
- _dirstatat_np, _dup_np, _err_np, _errc_np, _fcheck_np, _memdup2_np,
- _memdup_np, _os_assert_mach, _os_assert_mach_port_status,
- _os_boot_arg_string_to_int, _os_crash_get_reporter_port_array,
- _os_crash_port_array_deallocate, _os_crash_set_reporter_port,
- _os_crash_spawnattr_set_reporter_port, _os_enumerate_boot_args,
- _os_enumerate_boot_args_b, _os_enumerate_boot_args_from_buffer,
- _os_enumerate_boot_args_from_buffer_b, _os_flagset_copy_string,
- _os_localtime_file, _os_mach_msg_copy_description, _os_mach_msg_get_audit_trailer,
- _os_mach_msg_get_context_trailer, _os_mach_msg_get_trailer,
- _os_mach_msg_trailer_copy_description, _os_mach_port_copy_description,
- _os_parse_boot_arg_from_buffer_int, _os_parse_boot_arg_from_buffer_string,
- _os_parse_boot_arg_int, _os_parse_boot_arg_string, _os_simple_hash,
- _os_simple_hash_string, _os_simple_hash_string_with_seed,
- _os_simple_hash_with_seed, _os_subcommand_fprintf, _os_subcommand_main,
- _os_subcommand_vfprintf, _os_variant_allows_internal_security_policies,
- _os_variant_allows_security_research, _os_variant_check, _os_variant_copy_description,
- _os_variant_has_factory_content, _os_variant_has_internal_content,
- _os_variant_has_internal_diagnostics, _os_variant_has_internal_ui,
- _os_variant_init_4launchd, _os_variant_is_darwinos, _os_variant_is_recovery,
- _os_variant_uses_ephemeral_storage, _realpath_np, _strerror_np,
- _strexit_np, _symerror_np, _symexit_np, _sysctl_get_data_np,
- _sysctlbyname_get_data_np, _sysexit_np, _vcrfprintf_np, _verr_np,
- _verrc_np, _vwarn_np, _vwfprintf_np, _warn_np, _wfprintf_np,
- _xferfd_np, _zsnprintf_np ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ _os_boot_mode_query, _os_variant_is_basesystem ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_darwindirectory.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _DarwinDirectoryRecordStoreApply, _DarwinDirectoryRecordStoreApplyWithFilter ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_dnssd.dylib'
-current-version: 2200.0.8
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _DNSServiceAddRecord, _DNSServiceAttrCreate, _DNSServiceAttrFree,
- _DNSServiceAttrSetFailoverPolicy, _DNSServiceAttrSetValidationData,
- _DNSServiceAttrSetValidationPolicy, _DNSServiceAttributeCreate,
- _DNSServiceAttributeDeallocate, _DNSServiceAttributeSetAAAAPolicy,
- _DNSServiceAttributeSetTimestamp, _DNSServiceBrowse, _DNSServiceBrowseEx,
- _DNSServiceConstructFullName, _DNSServiceCreateConnection,
- _DNSServiceCreateDelegateConnection, _DNSServiceEnumerateDomains,
- _DNSServiceErrorCodeToString, _DNSServiceGetAddrInfo, _DNSServiceGetAddrInfoEx,
- _DNSServiceGetPID, _DNSServiceGetProperty, _DNSServiceGetValidationData,
- _DNSServiceNATPortMappingCreate, _DNSServiceProcessResult,
- _DNSServiceQueryRecord, _DNSServiceQueryRecordEx, _DNSServiceQueryRecordWithAttribute,
- _DNSServiceReconfirmRecord, _DNSServiceRefDeallocate, _DNSServiceRefSockFD,
- _DNSServiceRegister, _DNSServiceRegisterRecord, _DNSServiceRegisterRecordWithAttribute,
- _DNSServiceRegisterWithAttribute, _DNSServiceRemoveRecord,
- _DNSServiceResolve, _DNSServiceResolveEx, _DNSServiceSendQueuedRequests,
- _DNSServiceSetDefaultDomainForUser, _DNSServiceSetDispatchQueue,
- _DNSServiceSetResolverDefaults, _DNSServiceSleepKeepalive,
- _DNSServiceSleepKeepalive_sockaddr, _DNSServiceUpdateRecord,
- _DNSServiceUpdateRecordWithAttribute, _PeerConnectionRelease,
- _TXTRecordContainsKey, _TXTRecordCreate, _TXTRecordDeallocate,
- _TXTRecordGetBytesPtr, _TXTRecordGetCount, _TXTRecordGetItemAtIndex,
- _TXTRecordGetLength, _TXTRecordGetValuePtr, _TXTRecordRemoveValue,
- _TXTRecordSetValue, _kDNSServiceAttrAllowFailover, _kDNSServiceAttrValidationRequired,
- _kDNSServiceAttributeAAAAFallback ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_featureflags.dylib'
-current-version: 85
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __os_feature_enabled_impl, __os_feature_enabled_simple_impl ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_info.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _LI_get_thread_item, _LI_get_thread_list, _LI_ils_create,
- _LI_set_thread_item, _LI_set_thread_list, ___dn_skipname,
- __authenticate, __ds_running, __gai_nat64_can_v4_address_be_synthesized,
- __gai_serv_to_port, __gai_simple, __getaddrinfo_interface_async_call,
- __getlong, __getnameinfo_interface_async_call, __getshort,
- __null_auth, __res, __seterr_reply, __si_disable_opendirectory,
- __yp_dobind, _alias_endent, _alias_getbyname, _alias_getent,
- _alias_setent, _authnone_create, _authunix_create, _authunix_create_default,
- _bindresvport, _bindresvport_sa, _bootparams_endent, _bootparams_getbyname,
- _bootparams_getent, _bootparams_setent, _clnt_broadcast, _clnt_create,
- _clnt_pcreateerror, _clnt_perrno, _clnt_perror, _clnt_spcreateerror,
- _clnt_sperrno, _clnt_sperror, _clntraw_create, _clnttcp_create,
- _clntudp_bufcreate, _clntudp_create, _configuration_profile_copy_property_list,
- _configuration_profile_create_notification_key, _dn_expand,
- _endfsent, _endgrent, _endhostent, _endnetent, _endnetgrent,
- _endprotoent, _endpwent, _endrpcent, _endservent, _ether_aton,
- _ether_hostton, _ether_line, _ether_ntoa, _ether_ntohost,
- _freeaddrinfo, _freehostent, _freeifaddrs, _freeifmaddrs,
- _gL1CacheEnabled, _gai_strerror, _getaddrinfo, _getaddrinfo_async_cancel,
- _getaddrinfo_async_handle_reply, _getaddrinfo_async_receive,
- _getaddrinfo_async_send, _getaddrinfo_async_start, _getdomainname,
- _getfsent, _getfsfile, _getfsspec, _getgrent, _getgrgid, _getgrgid_r,
- _getgrnam, _getgrnam_r, _getgroupcount, _getgrouplist, _getgrouplist_2,
- _getgruuid, _getgruuid_r, _gethostbyaddr, _gethostbyaddr_async_cancel,
- _gethostbyaddr_async_handleReply, _gethostbyaddr_async_start,
- _gethostbyname, _gethostbyname2, _gethostbyname_async_cancel,
- _gethostbyname_async_handleReply, _gethostbyname_async_start,
- _gethostent, _getifaddrs, _getifmaddrs, _getipnodebyaddr,
- _getipnodebyname, _getnameinfo, _getnameinfo_async_cancel,
- _getnameinfo_async_handle_reply, _getnameinfo_async_send,
- _getnameinfo_async_start, _getnetbyaddr, _getnetbyname, _getnetent,
- _getnetgrent, _getprotobyname, _getprotobynumber, _getprotoent,
- _getpwent, _getpwnam, _getpwnam_r, _getpwuid, _getpwuid_r,
- _getpwuuid, _getpwuuid_r, _getrpcbyname, _getrpcbynumber,
- _getrpcent, _getrpcport, _getservbyname, _getservbyport, _getservent,
- _group_from_gid, _h_errno, _herror, _hstrerror, _htonl, _htons,
- _if_freenameindex, _if_indextoname, _if_nameindex, _if_nametoindex,
- _in6addr_any, _in6addr_linklocal_allnodes, _in6addr_linklocal_allrouters,
- _in6addr_linklocal_allv2routers, _in6addr_loopback, _in6addr_nodelocal_allnodes,
- _inet6_opt_append, _inet6_opt_find, _inet6_opt_finish, _inet6_opt_get_val,
- _inet6_opt_init, _inet6_opt_next, _inet6_opt_set_val, _inet6_option_alloc,
- _inet6_option_append, _inet6_option_find, _inet6_option_init,
- _inet6_option_next, _inet6_option_space, _inet6_rth_add, _inet6_rth_getaddr,
- _inet6_rth_init, _inet6_rth_reverse, _inet6_rth_segments,
- _inet6_rth_space, _inet6_rthdr_add, _inet6_rthdr_getaddr,
- _inet6_rthdr_getflags, _inet6_rthdr_init, _inet6_rthdr_lasthop,
- _inet6_rthdr_segments, _inet6_rthdr_space, _initgroups, _innetgr,
- _iruserok, _iruserok_sa, _kvarray_free, _kvbuf_add_dict, _kvbuf_add_key,
- _kvbuf_add_val, _kvbuf_add_val_len, _kvbuf_append_kvbuf, _kvbuf_decode,
- _kvbuf_free, _kvbuf_get_len, _kvbuf_init, _kvbuf_init_zone,
- _kvbuf_make_nonpurgeable, _kvbuf_make_purgeable, _kvbuf_new,
- _kvbuf_new_zone, _kvbuf_next_dict, _kvbuf_next_key, _kvbuf_next_val,
- _kvbuf_next_val_len, _kvbuf_query, _kvbuf_query_key_int, _kvbuf_query_key_uint,
- _kvbuf_query_key_val, _kvbuf_reset, _lookup_close_connections,
- _mbr_check_membership, _mbr_check_membership_by_id, _mbr_check_membership_ext,
- _mbr_check_membership_refresh, _mbr_check_service_membership,
- _mbr_close_connections, _mbr_gid_to_uuid, _mbr_group_name_to_uuid,
- _mbr_identifier_to_uuid, _mbr_identifier_translate, _mbr_reset_cache,
- _mbr_set_identifier_ttl, _mbr_sid_to_string, _mbr_sid_to_uuid,
- _mbr_string_to_sid, _mbr_string_to_uuid, _mbr_uid_to_uuid,
- _mbr_user_name_to_uuid, _mbr_uuid_to_id, _mbr_uuid_to_sid,
- _mbr_uuid_to_sid_type, _mbr_uuid_to_string, _ntohl, _ntohs,
- _pmap_getmaps, _pmap_getport, _pmap_rmtcall, _pmap_set, _pmap_unset,
- _prdb_end, _prdb_get, _prdb_getbyname, _prdb_set, _rcmd, _rcmd_af,
- _res_init, _res_query, _res_search, _rpc_createerr, _rresvport,
- _rresvport_af, _ruserok, _setdomainname, _setfsent, _setgrent,
- _setgroupent, _sethostent, _setnetent, _setnetgrent, _setpassent,
- _setprotoent, _setpwent, _setrpcent, _setservent, _si_addrinfo,
- _si_addrinfo_list, _si_addrinfo_list_from_hostent, _si_addrinfo_v4,
- _si_addrinfo_v4_mapped, _si_addrinfo_v6, _si_alias_all, _si_alias_byname,
- _si_async_call, _si_async_cancel, _si_async_handle_reply,
- _si_destination_compare, _si_destination_compare_no_dependencies,
- _si_fs_all, _si_fs_byfile, _si_fs_byspec, _si_group_all, _si_group_bygid,
- _si_group_byname, _si_group_byuuid, _si_grouplist, _si_host_all,
- _si_host_byaddr, _si_host_byname, _si_in_netgroup, _si_ipnode_byname,
- _si_item_call, _si_item_is_valid, _si_item_match, _si_item_release,
- _si_item_retain, _si_list_add, _si_list_call, _si_list_concat,
- _si_list_next, _si_list_release, _si_list_reset, _si_list_retain,
- _si_mac_all, _si_mac_bymac, _si_mac_byname, _si_module_allows_caching,
- _si_module_name, _si_module_release, _si_module_retain, _si_module_vers,
- _si_module_with_name, _si_nameinfo, _si_netgroup_byname, _si_network_all,
- _si_network_byaddr, _si_network_byname, _si_protocol_all,
- _si_protocol_byname, _si_protocol_bynumber, _si_rpc_all, _si_rpc_byname,
- _si_rpc_bynumber, _si_search, _si_search_module_set_flags,
- _si_service_all, _si_service_byname, _si_service_byport, _si_set_nat64_v4_requires_synthesis,
- _si_set_nat64_v4_synthesize, _si_set_path_check, _si_srv_byname,
- _si_standardize_mac_address, _si_user_all, _si_user_byname,
- _si_user_byuid, _si_user_byuuid, _si_wants_addrinfo, _svc_fdset,
- _svc_getreq, _svc_getreqset, _svc_register, _svc_run, _svc_sendreply,
- _svc_unregister, _svcerr_auth, _svcerr_decode, _svcerr_noproc,
- _svcerr_noprog, _svcerr_progvers, _svcerr_systemerr, _svcerr_weakauth,
- _svcfd_create, _svcraw_create, _svctcp_create, _svcudp_bufcreate,
- _svcudp_create, _user_from_uid, _xdr_array, _xdr_authunix_parms,
- _xdr_bool, _xdr_bytes, _xdr_callhdr, _xdr_callmsg, _xdr_char,
- _xdr_des_block, _xdr_domainname, _xdr_double, _xdr_enum, _xdr_float,
- _xdr_free, _xdr_hyper, _xdr_int, _xdr_int16_t, _xdr_int32_t,
- _xdr_int64_t, _xdr_keydat, _xdr_long, _xdr_longlong_t, _xdr_mapname,
- _xdr_netobj, _xdr_opaque, _xdr_peername, _xdr_pmap, _xdr_pmaplist,
- _xdr_pointer, _xdr_reference, _xdr_replymsg, _xdr_rmtcall_args,
- _xdr_rmtcallres, _xdr_short, _xdr_string, _xdr_u_char, _xdr_u_hyper,
- _xdr_u_int, _xdr_u_int16_t, _xdr_u_int32_t, _xdr_u_int64_t,
- _xdr_u_long, _xdr_u_longlong_t, _xdr_u_short, _xdr_union,
- _xdr_valdat, _xdr_vector, _xdr_void, _xdr_wrapstring, _xdr_x_passwd,
- _xdr_ypbind_binding, _xdr_ypbind_resp, _xdr_ypbind_resptype,
- _xdr_ypbind_setdom, _xdr_ypmaplist, _xdr_yppasswd, _xdr_ypreq_key,
- _xdr_ypreq_nokey, _xdr_ypresp_all, _xdr_ypresp_all_seq, _xdr_ypresp_key_val,
- _xdr_ypresp_maplist, _xdr_ypresp_master, _xdr_ypresp_order,
- _xdr_ypresp_val, _xdr_ypstat, _xdrmem_create, _xdrrec_create,
- _xdrrec_endofrecord, _xdrrec_eof, _xdrrec_skiprecord, _xdrstdio_create,
- _xprt_register, _xprt_unregister, _yp_all, _yp_bind, _yp_first,
- _yp_get_default_domain, _yp_maplist, _yp_master, _yp_match,
- _yp_next, _yp_order, _yp_unbind, _yperr_string, _ypprot_err ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_kernel.dylib'
-current-version: 10002.1.11
-parent-umbrella:
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ i386-macos, i386-maccatalyst ]
- symbols: [ ___aio_suspend, ___close, ___fsync, ___msgrcv, ___msgsnd,
- ___poll, ___pread, ___preadv, ___pwrite, ___pwritev, ___read,
- ___readv, ___sem_wait, ___waitid, ___write, ___writev, __mach_make_memory_entry,
- __sysenter_trap, '_accept$NOCANCEL$UNIX2003', '_accept$UNIX2003',
- '_aio_suspend$NOCANCEL$UNIX2003', '_aio_suspend$UNIX2003',
- '_bind$UNIX2003', '_chmod$UNIX2003', '_close$NOCANCEL$UNIX2003',
- '_close$UNIX2003', '_connect$NOCANCEL$UNIX2003', '_connect$UNIX2003',
- '_fchmod$UNIX2003', '_fcntl$NOCANCEL$UNIX2003', '_fcntl$UNIX2003',
- '_fsync$NOCANCEL$UNIX2003', '_fsync$UNIX2003', '_getattrlist$UNIX2003',
- '_getpeername$UNIX2003', '_getrlimit$UNIX2003', '_getsockname$UNIX2003',
- '_kill$UNIX2003', '_lchown$UNIX2003', '_listen$UNIX2003',
- _mach_host_self_, _mach_vm_region_info, _mach_vm_region_info_64,
- '_mmap$UNIX2003', '_mprotect$UNIX2003', '_msgctl$UNIX2003',
- '_msgrcv$NOCANCEL$UNIX2003', '_msgrcv$UNIX2003', '_msgsnd$NOCANCEL$UNIX2003',
- '_msgsnd$UNIX2003', '_msync$NOCANCEL$UNIX2003', '_msync$UNIX2003',
- '_munmap$UNIX2003', '_open$NOCANCEL$UNIX2003', '_open$UNIX2003',
- '_poll$NOCANCEL$UNIX2003', '_poll$UNIX2003', '_pread$NOCANCEL$UNIX2003',
- '_pread$UNIX2003', '_pselect$NOCANCEL$UNIX2003', '_pselect$UNIX2003',
- '_pwrite$NOCANCEL$UNIX2003', '_pwrite$UNIX2003', '_read$NOCANCEL$UNIX2003',
- '_read$UNIX2003', '_readv$NOCANCEL$UNIX2003', '_readv$UNIX2003',
- '_recvfrom$NOCANCEL$UNIX2003', '_recvfrom$UNIX2003', '_recvmsg$NOCANCEL$UNIX2003',
- '_recvmsg$UNIX2003', '_select$NOCANCEL$UNIX2003', '_select$UNIX2003',
- '_sem_wait$NOCANCEL$UNIX2003', '_sem_wait$UNIX2003', '_semctl$UNIX2003',
- '_sendmsg$NOCANCEL$UNIX2003', '_sendmsg$UNIX2003', '_sendto$NOCANCEL$UNIX2003',
- '_sendto$UNIX2003', '_setattrlist$UNIX2003', _setpgrp, '_setregid$UNIX2003',
- '_setreuid$UNIX2003', '_setrlimit$UNIX2003', '_shmctl$UNIX2003',
- _sigaltstack, '_sigsuspend$NOCANCEL$UNIX2003', '_sigsuspend$UNIX2003',
- '_socketpair$UNIX2003', _task_wire, _vm_map_64, _vm_map_exec_lockdown,
- _vm_mapped_pages_info, _vm_region, _vm_region_recurse, '_waitid$NOCANCEL$UNIX2003',
- '_waitid$UNIX2003', '_write$NOCANCEL$UNIX2003', '_write$UNIX2003',
- '_writev$NOCANCEL$UNIX2003', '_writev$UNIX2003', tramp_cerror,
- tramp_cerror_nocancel ]
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst ]
- symbols: [ '_fstat$INODE64', '_fstatat$INODE64', '_fstatfs$INODE64',
- '_getfsstat$INODE64', _i386_get_ldt, _i386_set_ldt, '_lstat$INODE64',
- '_stat$INODE64', '_statfs$INODE64' ]
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _NDR_record, _____sigwait_nocancel, ____kernelVersionNumber,
- ____kernelVersionString, ___abort_with_payload, ___accept,
- ___accept_nocancel, ___access_extended, ___aio_suspend_nocancel,
- ___bind, ___bsdthread_create, ___bsdthread_ctl, ___bsdthread_register,
- ___bsdthread_terminate, ___carbon_delete, ___channel_get_info,
- ___channel_get_opt, ___channel_open, ___channel_set_opt, ___channel_sync,
- ___chmod, ___chmod_extended, ___close_nocancel, ___coalition,
- ___coalition_info, ___coalition_ledger, ___commpage_gettimeofday,
- ___connect, ___connect_nocancel, ___copyfile, ___crossarch_trap,
- ___csrctl, ___darwin_check_fd_set_overflow, ___debug_syscall_reject,
- ___debug_syscall_reject_config, ___delete, ___disable_threadsignal,
- ___error, ___execve, ___exit, ___fchmod, ___fchmod_extended,
- ___fcntl, ___fcntl_nocancel, ___fork, ___fs_snapshot, ___fstat64_extended,
- ___fstat_extended, ___fsync_nocancel, ___get_remove_counter,
- ___getattrlist, ___getdirentries64, ___gethostuuid, ___getlogin,
- ___getpeername, ___getpid, ___getrlimit, ___getsgroups, ___getsockname,
- ___gettid, ___gettimeofday, ___getwgroups, ___guarded_open_dprotected_np,
- ___guarded_open_np, ___identitysvc, ___inc_remove_counter,
- ___initgroups, ___ioctl, ___iopolicysys, ___kdebug_trace,
- ___kdebug_trace64, ___kdebug_trace_string, ___kdebug_typefilter,
- ___kill, ___kqueue_workloop_ctl, ___lchown, ___libkernel_init,
- ___libkernel_init_after_boot_tasks, ___libkernel_init_late,
- ___libkernel_platform_init, ___libkernel_voucher_init, ___listen,
- ___log_data, ___lseek, ___lstat64_extended, ___lstat_extended,
- ___mac_execve, ___mac_get_fd, ___mac_get_file, ___mac_get_link,
- ___mac_get_mount, ___mac_get_pid, ___mac_get_proc, ___mac_getfsstat,
- ___mac_mount, ___mac_set_fd, ___mac_set_file, ___mac_set_link,
- ___mac_set_proc, ___mac_syscall, ___mach_bridge_remote_time,
- ___mach_eventlink_signal, ___mach_eventlink_signal_wait_until,
- ___mach_eventlink_wait_until, ___map_with_linking_np, ___memorystatus_available_memory,
- ___microstackshot, ___mkdir_extended, ___mkfifo_extended,
- ___mmap, ___mprotect, ___msgctl, ___msgrcv_nocancel, ___msgsnd_nocancel,
- ___msgsys, ___msync, ___msync_nocancel, ___munmap, ___nexus_create,
- ___nexus_deregister, ___nexus_destroy, ___nexus_get_opt, ___nexus_open,
- ___nexus_register, ___nexus_set_opt, ___open, ___open_dprotected_np,
- ___open_extended, ___open_nocancel, ___openat, ___openat_dprotected_np,
- ___openat_nocancel, ___os_nexus_flow_add, ___os_nexus_flow_del,
- ___os_nexus_get_llink_info, ___os_nexus_ifattach, ___os_nexus_ifdetach,
- ___persona, ___pipe, ___poll_nocancel, ___posix_spawn, ___pread_nocancel,
- ___preadv_nocancel, ___proc_info, ___proc_info_extended_id,
- ___process_policy, ___pselect, ___pselect_nocancel, ___psynch_cvbroad,
- ___psynch_cvclrprepost, ___psynch_cvsignal, ___psynch_cvwait,
- ___psynch_mutexdrop, ___psynch_mutexwait, ___psynch_rw_downgrade,
- ___psynch_rw_longrdlock, ___psynch_rw_rdlock, ___psynch_rw_unlock,
- ___psynch_rw_unlock2, ___psynch_rw_upgrade, ___psynch_rw_wrlock,
- ___psynch_rw_yieldwrlock, ___pthread_canceled, ___pthread_chdir,
- ___pthread_fchdir, ___pthread_kill, ___pthread_markcancel,
- ___pthread_sigmask, ___ptrace, ___pwrite_nocancel, ___pwritev_nocancel,
- ___read_nocancel, ___readv_nocancel, ___reboot, ___record_system_event,
- ___recvfrom, ___recvfrom_nocancel, ___recvmsg, ___recvmsg_nocancel,
- ___rename, ___renameat, ___renameatx_np, ___rmdir, ___sandbox_me,
- ___sandbox_mm, ___sandbox_ms, ___sandbox_msp, ___select, ___select_nocancel,
- ___sem_open, ___sem_wait_nocancel, ___semctl, ___semsys, ___semwait_signal,
- ___semwait_signal_nocancel, ___sendmsg, ___sendmsg_nocancel,
- ___sendto, ___sendto_nocancel, ___setattrlist, ___setlogin,
- ___setpriority, ___setregid, ___setreuid, ___setrlimit, ___setsgroups,
- ___settid, ___settid_with_pid, ___settimeofday, ___setwgroups,
- ___sfi_ctl, ___sfi_pidctl, ___shared_region_check_np, ___shared_region_map_and_slide_2_np,
- ___shm_open, ___shmctl, ___shmsys, ___sigaction, ___sigaltstack,
- ___sigreturn, ___sigsuspend, ___sigsuspend_nocancel, ___sigwait,
- ___socketpair, ___stack_snapshot_with_config, ___stat64_extended,
- ___stat_extended, ___syscall, ___syscall_logger, ___sysctl,
- ___sysctlbyname, ___telemetry, ___terminate_with_payload,
- ___thread_selfid, ___thread_selfusage, ___ulock_wait, ___ulock_wait2,
- ___ulock_wake, ___umask_extended, ___unlink, ___unlinkat,
- ___vfork, ___wait4, ___wait4_nocancel, ___waitid_nocancel,
- ___work_interval_ctl, ___workq_kernreturn, ___workq_open,
- ___write_nocancel, ___writev_nocancel, __cpu_capabilities,
- __cpu_has_altivec, __exclaves_ctl_trap, __exit, __get_cpu_capabilities,
- __getprivatesystemidentifier, __host_page_size, __init_cpu_capabilities,
- __kernelrpc_host_create_mach_voucher, __kernelrpc_mach_port_allocate,
- __kernelrpc_mach_port_allocate_full, __kernelrpc_mach_port_allocate_name,
- __kernelrpc_mach_port_allocate_qos, __kernelrpc_mach_port_allocate_trap,
- __kernelrpc_mach_port_assert_attributes, __kernelrpc_mach_port_construct,
- __kernelrpc_mach_port_construct_trap, __kernelrpc_mach_port_deallocate,
- __kernelrpc_mach_port_deallocate_trap, __kernelrpc_mach_port_destroy,
- __kernelrpc_mach_port_destruct, __kernelrpc_mach_port_destruct_trap,
- __kernelrpc_mach_port_dnrequest_info, __kernelrpc_mach_port_extract_member,
- __kernelrpc_mach_port_extract_member_trap, __kernelrpc_mach_port_extract_right,
- __kernelrpc_mach_port_get_attributes, __kernelrpc_mach_port_get_attributes_trap,
- __kernelrpc_mach_port_get_context, __kernelrpc_mach_port_get_refs,
- __kernelrpc_mach_port_get_service_port_info, __kernelrpc_mach_port_get_set_status,
- __kernelrpc_mach_port_get_srights, __kernelrpc_mach_port_guard,
- __kernelrpc_mach_port_guard_trap, __kernelrpc_mach_port_guard_with_flags,
- __kernelrpc_mach_port_insert_member, __kernelrpc_mach_port_insert_member_trap,
- __kernelrpc_mach_port_insert_right, __kernelrpc_mach_port_insert_right_trap,
- __kernelrpc_mach_port_is_connection_for_service, __kernelrpc_mach_port_kernel_object,
- __kernelrpc_mach_port_kobject, __kernelrpc_mach_port_kobject_description,
- __kernelrpc_mach_port_mod_refs, __kernelrpc_mach_port_mod_refs_trap,
- __kernelrpc_mach_port_move_member, __kernelrpc_mach_port_move_member_trap,
- __kernelrpc_mach_port_names, __kernelrpc_mach_port_peek, __kernelrpc_mach_port_rename,
- __kernelrpc_mach_port_request_notification, __kernelrpc_mach_port_request_notification_trap,
- __kernelrpc_mach_port_set_attributes, __kernelrpc_mach_port_set_context,
- __kernelrpc_mach_port_set_mscount, __kernelrpc_mach_port_set_seqno,
- __kernelrpc_mach_port_space_basic_info, __kernelrpc_mach_port_space_info,
- __kernelrpc_mach_port_special_reply_port_reset_link, __kernelrpc_mach_port_swap_guard,
- __kernelrpc_mach_port_type, __kernelrpc_mach_port_type_trap,
- __kernelrpc_mach_port_unguard, __kernelrpc_mach_port_unguard_trap,
- __kernelrpc_mach_task_is_self, __kernelrpc_mach_vm_allocate,
- __kernelrpc_mach_vm_allocate_trap, __kernelrpc_mach_vm_deallocate,
- __kernelrpc_mach_vm_deallocate_trap, __kernelrpc_mach_vm_map,
- __kernelrpc_mach_vm_map_trap, __kernelrpc_mach_vm_protect,
- __kernelrpc_mach_vm_protect_trap, __kernelrpc_mach_vm_purgable_control,
- __kernelrpc_mach_vm_purgable_control_trap, __kernelrpc_mach_vm_read,
- __kernelrpc_mach_vm_remap, __kernelrpc_mach_vm_remap_new,
- __kernelrpc_mach_voucher_extract_attr_recipe, __kernelrpc_task_set_port_space,
- __kernelrpc_thread_policy, __kernelrpc_thread_policy_set,
- __kernelrpc_thread_set_policy, __kernelrpc_vm_map, __kernelrpc_vm_purgable_control,
- __kernelrpc_vm_read, __kernelrpc_vm_remap, __kernelrpc_vm_remap_new,
- __mach_errors, __mach_fork_child, __mach_snprintf, __mach_vsnprintf,
- __os_alloc_once_table, __os_xbs_chrooted, __register_gethostuuid_callback,
- __thread_set_tsd_base, _abort_with_payload, _abort_with_reason,
- _accept, _access, _accessx_np, _acct, _act_get_state, _act_set_state,
- _adjtime, _aio_cancel, _aio_error, _aio_fsync, _aio_read,
- _aio_return, _aio_suspend, _aio_write, _audit, _audit_session_join,
- _audit_session_port, _audit_session_self, _auditctl, _auditon,
- _bind, _bootstrap_port, _cerror, _cerror_nocancel, _change_fdguard_np,
- _chdir, _chflags, _chmod, _chown, _chroot, _clock_alarm, _clock_alarm_reply,
- _clock_get_attributes, _clock_get_time, _clock_set_attributes,
- _clock_set_time, _clock_sleep, _clock_sleep_trap, _clonefile,
- _clonefileat, _close, _coalition_create, _coalition_info_debug_info,
- _coalition_info_resource_usage, _coalition_info_set_efficiency,
- _coalition_info_set_name, _coalition_ledger_set_logical_writes_limit,
- _coalition_reap, _coalition_terminate, _connect, _connectx,
- _csops, _csops_audittoken, _csr_check, _csr_get_active_config,
- _debug_control_port_for_pid, _debug_syscall_reject, _debug_syscall_reject_config,
- _denap_boost_assertion_token, _disconnectx, _dup, _dup2, _errno,
- _etap_trace_thread, _exc_server, _exc_server_routine, _exception_raise,
- _exception_raise_state, _exception_raise_state_identity, _exchangedata,
- _exclaves_boot, _exclaves_endpoint_call, _exclaves_named_buffer_copyin,
- _exclaves_named_buffer_copyout, _exclaves_named_buffer_create,
- _execve, _faccessat, _fchdir, _fchflags, _fchmod, _fchmodat,
- _fchown, _fchownat, _fclonefileat, _fcntl, _fdatasync, _ffsctl,
- _fgetattrlist, _fgetxattr, _fhopen, _fileport_makefd, _fileport_makeport,
- _flistxattr, _flock, _fmount, _fpathconf, _freadlink, _fremovexattr,
- _fs_snapshot_create, _fs_snapshot_delete, _fs_snapshot_list,
- _fs_snapshot_mount, _fs_snapshot_rename, _fs_snapshot_revert,
- _fs_snapshot_root, _fsctl, _fsetattrlist, _fsetxattr, _fsgetpath,
- _fsgetpath_ext, _fstat, _fstat64, _fstatat, _fstatat64, _fstatfs,
- _fstatfs64, _fsync, _ftruncate, _futimens, _futimes, _getattrlist,
- _getattrlistat, _getattrlistbulk, _getaudit, _getaudit_addr,
- _getauid, _getdirentries, _getdirentriesattr, _getdtablesize,
- _getegid, _getentropy, _geteuid, _getfh, _getfsstat, _getfsstat64,
- _getgid, _getgroups, _gethostuuid, _getiopolicy_np, _getitimer,
- _getpeername, _getpgid, _getpgrp, _getpid, _getppid, _getpriority,
- _getrlimit, _getrusage, _getsgroups_np, _getsid, _getsockname,
- _getsockopt, _getuid, _getwgroups_np, _getxattr, _grab_pgo_data,
- _graftdmg, _guarded_close_np, _guarded_kqueue_np, _guarded_open_dprotected_np,
- _guarded_open_np, _guarded_pwrite_np, _guarded_write_np, _guarded_writev_np,
- _host_check_multiuser_mode, _host_create_mach_voucher, _host_create_mach_voucher_trap,
- _host_default_memory_manager, _host_get_UNDServer, _host_get_atm_diagnostic_flag,
- _host_get_boot_info, _host_get_clock_control, _host_get_clock_service,
- _host_get_exception_ports, _host_get_io_main, _host_get_io_master,
- _host_get_multiuser_config_flags, _host_get_special_port,
- _host_info, _host_kernel_version, _host_lockgroup_info, _host_page_size,
- _host_priv_statistics, _host_processor_info, _host_processor_set_priv,
- _host_processor_sets, _host_processors, _host_reboot, _host_register_mach_voucher_attr_manager,
- _host_register_well_known_mach_voucher_attr_manager, _host_request_notification,
- _host_security_create_task_token, _host_security_set_task_token,
- _host_self, _host_self_trap, _host_set_UNDServer, _host_set_atm_diagnostic_flag,
- _host_set_exception_ports, _host_set_multiuser_config_flags,
- _host_set_special_port, _host_statistics, _host_statistics64,
- _host_swap_exception_ports, _host_virtual_physical_table_info,
- _important_boost_assertion_token, _internal_catch_exc_subsystem,
- _ioctl, _issetugid, _kas_info, _kdebug_is_enabled, _kdebug_signpost,
- _kdebug_signpost_end, _kdebug_signpost_start, _kdebug_timestamp,
- _kdebug_timestamp_from_absolute, _kdebug_timestamp_from_continuous,
- _kdebug_trace, _kdebug_trace_string, _kdebug_typefilter, _kdebug_using_continuous_time,
- _kevent, _kevent64, _kevent_id, _kevent_qos, _kext_request,
- _kill, _kmod_control, _kmod_create, _kmod_destroy, _kmod_get_info,
- _kpersona_alloc, _kpersona_dealloc, _kpersona_find, _kpersona_find_by_type,
- _kpersona_get, _kpersona_getpath, _kpersona_info, _kpersona_palloc,
- _kpersona_pidinfo, _kqueue, _lchown, _ledger, _link, _linkat,
- _lio_listio, _listen, _listxattr, _lock_set_create, _lock_set_destroy,
- _log_data_as_kernel, _lseek, _lstat, _lstat64, _mach_absolute_time,
- _mach_approximate_time, _mach_boottime_usec, _mach_continuous_approximate_time,
- _mach_continuous_time, _mach_error, _mach_error_full_diag,
- _mach_error_string, _mach_error_type, _mach_eventlink_associate,
- _mach_eventlink_create, _mach_eventlink_destroy, _mach_eventlink_disassociate,
- _mach_eventlink_signal, _mach_eventlink_signal_wait_until,
- _mach_eventlink_wait_until, _mach_generate_activity_id, _mach_get_times,
- _mach_host_self, _mach_host_special_port_description, _mach_host_special_port_for_id,
- _mach_init, _mach_make_memory_entry, _mach_make_memory_entry_64,
- _mach_memory_entry_access_tracking, _mach_memory_entry_ownership,
- _mach_memory_entry_purgable_control, _mach_memory_info, _mach_memory_object_memory_entry,
- _mach_memory_object_memory_entry_64, _mach_msg, _mach_msg_destroy,
- _mach_msg_overwrite, _mach_msg_overwrite_trap, _mach_msg_priority_encode,
- _mach_msg_priority_is_pthread_priority, _mach_msg_priority_overide_qos,
- _mach_msg_priority_qos, _mach_msg_priority_relpri, _mach_msg_receive,
- _mach_msg_send, _mach_msg_server, _mach_msg_server_importance,
- _mach_msg_server_once, _mach_msg_trap, _mach_notify_dead_name,
- _mach_notify_no_senders, _mach_notify_port_deleted, _mach_notify_port_destroyed,
- _mach_notify_send_once, _mach_port_allocate, _mach_port_allocate_full,
- _mach_port_allocate_name, _mach_port_allocate_qos, _mach_port_assert_attributes,
- _mach_port_construct, _mach_port_deallocate, _mach_port_destroy,
- _mach_port_destruct, _mach_port_dnrequest_info, _mach_port_extract_member,
- _mach_port_extract_right, _mach_port_get_attributes, _mach_port_get_context,
- _mach_port_get_refs, _mach_port_get_service_port_info, _mach_port_get_set_status,
- _mach_port_get_srights, _mach_port_guard, _mach_port_guard_with_flags,
- _mach_port_insert_member, _mach_port_insert_right, _mach_port_is_connection_for_service,
- _mach_port_kernel_object, _mach_port_kobject, _mach_port_kobject_description,
- _mach_port_mod_refs, _mach_port_move_member, _mach_port_names,
- _mach_port_peek, _mach_port_rename, _mach_port_request_notification,
- _mach_port_set_attributes, _mach_port_set_context, _mach_port_set_mscount,
- _mach_port_set_seqno, _mach_port_space_basic_info, _mach_port_space_info,
- _mach_port_swap_guard, _mach_port_type, _mach_port_unguard,
- _mach_ports_lookup, _mach_ports_register, _mach_reply_port,
- _mach_right_recv_construct, _mach_right_recv_destruct, _mach_right_send_create,
- _mach_right_send_once_consume, _mach_right_send_once_create,
- _mach_right_send_release, _mach_right_send_retain, _mach_sync_ipc_link_monitoring_start,
- _mach_sync_ipc_link_monitoring_stop, _mach_task_is_self, _mach_task_self,
- _mach_task_self_, _mach_task_special_port_description, _mach_task_special_port_for_id,
- _mach_thread_self, _mach_thread_special_port_description,
- _mach_thread_special_port_for_id, _mach_timebase_info, _mach_timebase_info_trap,
- _mach_vm_allocate, _mach_vm_behavior_set, _mach_vm_copy, _mach_vm_deallocate,
- _mach_vm_deferred_reclamation_buffer_init, _mach_vm_deferred_reclamation_buffer_synchronize,
- _mach_vm_deferred_reclamation_buffer_update_reclaimable_bytes,
- _mach_vm_inherit, _mach_vm_machine_attribute, _mach_vm_map,
- _mach_vm_msync, _mach_vm_page_info, _mach_vm_page_query, _mach_vm_page_range_query,
- _mach_vm_protect, _mach_vm_purgable_control, _mach_vm_range_create,
- _mach_vm_read, _mach_vm_read_list, _mach_vm_read_overwrite,
- _mach_vm_region, _mach_vm_region_recurse, _mach_vm_remap,
- _mach_vm_remap_new, _mach_vm_wire, _mach_vm_write, _mach_voucher_attr_command,
- _mach_voucher_deallocate, _mach_voucher_debug_info, _mach_voucher_extract_all_attr_recipes,
- _mach_voucher_extract_attr_content, _mach_voucher_extract_attr_recipe,
- _mach_voucher_extract_attr_recipe_trap, _mach_wait_until,
- _mach_zone_force_gc, _mach_zone_get_btlog_records, _mach_zone_get_zlog_zones,
- _mach_zone_info, _mach_zone_info_for_largest_zone, _mach_zone_info_for_zone,
- _macx_backing_store_recovery, _macx_backing_store_suspend,
- _macx_swapoff, _macx_swapon, _macx_triggers, _madvise, _memorystatus_control,
- _memorystatus_get_level, _mig_allocate, _mig_dealloc_reply_port,
- _mig_dealloc_special_reply_port, _mig_deallocate, _mig_get_reply_port,
- _mig_get_special_reply_port, _mig_put_reply_port, _mig_reply_setup,
- _mig_strncpy, _mig_strncpy_zerofill, _mincore, _minherit,
- _mk_timer_arm, _mk_timer_arm_leeway, _mk_timer_cancel, _mk_timer_create,
- _mk_timer_destroy, _mkdir, _mkdirat, _mkfifo, _mkfifoat, _mknod,
- _mknodat, _mlock, _mlockall, _mmap, _mount, _mprotect, _mremap_encrypted,
- _msg_receive, _msg_rpc, _msg_send, _msgget, _msgrcv, _msgsnd,
- _msgsys, _msync, _munlock, _munlockall, _munmap, _necp_client_action,
- _necp_match_policy, _necp_open, _necp_session_action, _necp_session_open,
- _net_qos_guideline, _netagent_trigger, _netname_check_in,
- _netname_check_out, _netname_look_up, _netname_version, _nfsclnt,
- _nfssvc, _non_boost_assertion_token, _normal_boost_assertion_token,
- _ntp_adjtime, _ntp_gettime, _objc_bp_assist_cfg_np, _open,
- _open_dprotected_np, _openat, '_openat$NOCANCEL', _openat_authenticated_np,
- _openat_dprotected_np, _openbyid_np, _os_buflet_get_data_address,
- _os_buflet_get_data_length, _os_buflet_get_data_limit, _os_buflet_get_data_offset,
- _os_buflet_get_object_address, _os_buflet_get_object_limit,
- _os_buflet_set_data_length, _os_buflet_set_data_offset, _os_channel_advance_slot,
- _os_channel_attr_clone, _os_channel_attr_create, _os_channel_attr_destroy,
- _os_channel_attr_get, _os_channel_attr_get_key, _os_channel_attr_set,
- _os_channel_attr_set_key, _os_channel_available_slot_count,
- _os_channel_buflet_alloc, _os_channel_buflet_free, _os_channel_configure_interface_advisory,
- _os_channel_create, _os_channel_create_extended, _os_channel_destroy,
- _os_channel_event_free, _os_channel_event_get_event_data,
- _os_channel_event_get_next_event, _os_channel_flow_admissible,
- _os_channel_flow_adv_get_ce_count, _os_channel_get_advisory_region,
- _os_channel_get_fd, _os_channel_get_interface_advisory, _os_channel_get_next_event_handle,
- _os_channel_get_next_slot, _os_channel_get_stats_region, _os_channel_is_defunct,
- _os_channel_large_packet_alloc, _os_channel_packet_alloc,
- _os_channel_packet_free, _os_channel_packet_pool_purge, _os_channel_pending,
- _os_channel_read_attr, _os_channel_read_nexus_extension_info,
- _os_channel_ring_id, _os_channel_ring_notify_time, _os_channel_ring_sync_time,
- _os_channel_rx_ring, _os_channel_set_slot_properties, _os_channel_slot_attach_packet,
- _os_channel_slot_detach_packet, _os_channel_slot_get_packet,
- _os_channel_sync, _os_channel_tx_ring, _os_channel_write_attr,
- _os_copy_and_inet_checksum, _os_cpu_copy_in_cksum, _os_cpu_in_cksum,
- _os_cpu_in_cksum_mbuf, _os_fault_with_payload, _os_inet_checksum,
- _os_nexus_attr_clone, _os_nexus_attr_create, _os_nexus_attr_destroy,
- _os_nexus_attr_get, _os_nexus_attr_set, _os_nexus_controller_add_traffic_rule,
- _os_nexus_controller_alloc_provider_instance, _os_nexus_controller_bind_provider_instance,
- _os_nexus_controller_create, _os_nexus_controller_deregister_provider,
- _os_nexus_controller_destroy, _os_nexus_controller_free_provider_instance,
- _os_nexus_controller_get_fd, _os_nexus_controller_iterate_traffic_rules,
- _os_nexus_controller_read_provider_attr, _os_nexus_controller_register_provider,
- _os_nexus_controller_remove_traffic_rule, _os_nexus_controller_unbind_provider_instance,
- _os_nexus_flow_set_wake_from_sleep, _os_packet_add_buflet,
- _os_packet_add_inet_csum_flags, _os_packet_clear_flow_uuid,
- _os_packet_decrement_use_count, _os_packet_finalize, _os_packet_get_aggregation_type,
- _os_packet_get_buflet_count, _os_packet_get_compression_generation_count,
- _os_packet_get_data_length, _os_packet_get_expire_time, _os_packet_get_expiry_action,
- _os_packet_get_flow_uuid, _os_packet_get_group_end, _os_packet_get_group_start,
- _os_packet_get_headroom, _os_packet_get_inet_checksum, _os_packet_get_keep_alive,
- _os_packet_get_link_broadcast, _os_packet_get_link_ethfcs,
- _os_packet_get_link_header_length, _os_packet_get_link_multicast,
- _os_packet_get_next_buflet, _os_packet_get_packetid, _os_packet_get_segment_count,
- _os_packet_get_service_class, _os_packet_get_token, _os_packet_get_trace_id,
- _os_packet_get_traffic_class, _os_packet_get_transport_retransmit,
- _os_packet_get_transport_traffic_background, _os_packet_get_transport_traffic_realtime,
- _os_packet_get_truncated, _os_packet_get_vlan_id, _os_packet_get_vlan_priority,
- _os_packet_get_vlan_tag, _os_packet_get_wake_flag, _os_packet_increment_use_count,
- _os_packet_set_app_metadata, _os_packet_set_compression_generation_count,
- _os_packet_set_expire_time, _os_packet_set_expiry_action,
- _os_packet_set_flow_uuid, _os_packet_set_group_end, _os_packet_set_group_start,
- _os_packet_set_headroom, _os_packet_set_inet_checksum, _os_packet_set_keep_alive,
- _os_packet_set_l4s_flag, _os_packet_set_link_broadcast, _os_packet_set_link_ethfcs,
- _os_packet_set_link_header_length, _os_packet_set_link_multicast,
- _os_packet_set_packetid, _os_packet_set_protocol_segment_size,
- _os_packet_set_service_class, _os_packet_set_token, _os_packet_set_trace_id,
- _os_packet_set_traffic_class, _os_packet_set_transport_last_packet,
- _os_packet_set_transport_retransmit, _os_packet_set_transport_traffic_background,
- _os_packet_set_transport_traffic_realtime, _os_packet_set_tso_flags,
- _os_packet_set_tx_timestamp, _os_packet_set_vlan_tag, _os_packet_trace_event,
- _os_proc_available_memory, _panic, _panic_init, _panic_with_data,
- _pathconf, _peeloff, _pid_for_task, _pid_hibernate, _pid_resume,
- _pid_shutdown_networking, _pid_shutdown_sockets, _pid_suspend,
- _pipe, _pivot_root, _pkt_subtype_assert_fail, _pkt_type_assert_fail,
- _poll, _port_obj_init, _port_obj_table, _port_obj_table_size,
- _posix_madvise, _posix_spawn, _posix_spawn_file_actions_add_fileportdup2_np,
- _posix_spawn_file_actions_addchdir_np, _posix_spawn_file_actions_addclose,
- _posix_spawn_file_actions_adddup2, _posix_spawn_file_actions_addfchdir_np,
- _posix_spawn_file_actions_addinherit_np, _posix_spawn_file_actions_addopen,
- _posix_spawn_file_actions_destroy, _posix_spawn_file_actions_init,
- _posix_spawnattr_destroy, _posix_spawnattr_disable_ptr_auth_a_keys_np,
- _posix_spawnattr_get_darwin_role_np, _posix_spawnattr_get_qos_clamp_np,
- _posix_spawnattr_getarchpref_np, _posix_spawnattr_getbinpref_np,
- _posix_spawnattr_getcpumonitor, _posix_spawnattr_getflags,
- _posix_spawnattr_getmacpolicyinfo_np, _posix_spawnattr_getpcontrol_np,
- _posix_spawnattr_getpgroup, _posix_spawnattr_getprocesstype_np,
- _posix_spawnattr_getsigdefault, _posix_spawnattr_getsigmask,
- _posix_spawnattr_init, _posix_spawnattr_set_alt_rosetta_np,
- _posix_spawnattr_set_conclave_id_np, _posix_spawnattr_set_crash_behavior_deadline_np,
- _posix_spawnattr_set_crash_behavior_np, _posix_spawnattr_set_crash_count_np,
- _posix_spawnattr_set_csm_np, _posix_spawnattr_set_darwin_role_np,
- _posix_spawnattr_set_filedesclimit_ext, _posix_spawnattr_set_gid_np,
- _posix_spawnattr_set_groups_np, _posix_spawnattr_set_importancewatch_port_np,
- _posix_spawnattr_set_jetsam_ttr_np, _posix_spawnattr_set_launch_type_np,
- _posix_spawnattr_set_login_np, _posix_spawnattr_set_max_addr_np,
- _posix_spawnattr_set_persona_gid_np, _posix_spawnattr_set_persona_groups_np,
- _posix_spawnattr_set_persona_np, _posix_spawnattr_set_persona_uid_np,
- _posix_spawnattr_set_platform_np, _posix_spawnattr_set_portlimits_ext,
- _posix_spawnattr_set_ptrauth_task_port_np, _posix_spawnattr_set_qos_clamp_np,
- _posix_spawnattr_set_registered_ports_np, _posix_spawnattr_set_subsystem_root_path_np,
- _posix_spawnattr_set_threadlimit_ext, _posix_spawnattr_set_uid_np,
- _posix_spawnattr_setarchpref_np, _posix_spawnattr_setauditsessionport_np,
- _posix_spawnattr_setbinpref_np, _posix_spawnattr_setcoalition_np,
- _posix_spawnattr_setcpumonitor, _posix_spawnattr_setcpumonitor_default,
- _posix_spawnattr_setdataless_iopolicy_np, _posix_spawnattr_setexceptionports_np,
- _posix_spawnattr_setflags, _posix_spawnattr_setjetsam_ext,
- _posix_spawnattr_setmacpolicyinfo_np, _posix_spawnattr_setnosmt_np,
- _posix_spawnattr_setpcontrol_np, _posix_spawnattr_setpgroup,
- _posix_spawnattr_setprocesstype_np, _posix_spawnattr_setsigdefault,
- _posix_spawnattr_setsigmask, _posix_spawnattr_setspecialport_np,
- _pread, _preadv, '_preadv$NOCANCEL', _proc_clear_cpulimits,
- _proc_clear_delayidlesleep, _proc_clear_dirty, _proc_clear_vmpressure,
- _proc_current_thread_schedinfo, _proc_denap_assertion_begin_with_msg,
- _proc_denap_assertion_complete, _proc_disable_apptype, _proc_disable_cpumon,
- _proc_disable_wakemon, _proc_donate_importance_boost, _proc_enable_apptype,
- _proc_get_cpumon_params, _proc_get_dirty, _proc_get_wakemon_params,
- _proc_importance_assertion_begin_with_msg, _proc_importance_assertion_complete,
- _proc_kmsgbuf, _proc_libversion, _proc_list_dynkqueueids,
- _proc_list_uptrs, _proc_listallpids, _proc_listchildpids,
- _proc_listcoalitions, _proc_listpgrppids, _proc_listpids,
- _proc_listpidspath, _proc_name, _proc_pid_rusage, _proc_piddynkqueueinfo,
- _proc_pidfdinfo, _proc_pidfileportinfo, _proc_pidinfo, _proc_pidoriginatorinfo,
- _proc_pidpath, _proc_pidpath_audittoken, _proc_regionfilename,
- _proc_reset_footprint_interval, _proc_resume_cpumon, _proc_rlimit_control,
- _proc_set_cpumon_defaults, _proc_set_cpumon_params, _proc_set_cpumon_params_fatal,
- _proc_set_csm, _proc_set_delayidlesleep, _proc_set_dirty,
- _proc_set_no_smt, _proc_set_owner_vmpressure, _proc_set_wakemon_defaults,
- _proc_set_wakemon_params, _proc_setcpu_percentage, _proc_setpcontrol,
- _proc_setthread_cpupercent, _proc_setthread_csm, _proc_setthread_no_smt,
- _proc_suppress, _proc_terminate, _proc_terminate_all_rsr,
- _proc_trace_log, _proc_track_dirty, _proc_udata_info, _proc_uuid_policy,
- _processor_assign, _processor_control, _processor_exit, _processor_get_assignment,
- _processor_info, _processor_set_create, _processor_set_default,
- _processor_set_destroy, _processor_set_info, _processor_set_max_priority,
- _processor_set_policy_control, _processor_set_policy_disable,
- _processor_set_policy_enable, _processor_set_stack_usage,
- _processor_set_statistics, _processor_set_tasks, _processor_set_tasks_with_flavor,
- _processor_set_threads, _processor_start, _pselect, '_pselect$DARWIN_EXTSN',
- '_pselect$DARWIN_EXTSN$NOCANCEL', _pthread_getugid_np, _pthread_setugid_np,
- _ptrace, _pwrite, _pwritev, '_pwritev$NOCANCEL', _quota, _quotactl,
- _read, _readlink, _readlinkat, _readv, _reboot, _reboot_np,
- _record_system_event_as_kernel, _recvfrom, _recvmsg, _recvmsg_x,
- _register_uexc_handler, _removexattr, _rename, _rename_ext,
- _renameat, _renameatx_np, _renamex_np, _revoke, _rmdir, _searchfs,
- _select, '_select$DARWIN_EXTSN', '_select$DARWIN_EXTSN$NOCANCEL',
- _sem_close, _sem_destroy, _sem_getvalue, _sem_init, _sem_open,
- _sem_post, _sem_trywait, _sem_unlink, _sem_wait, _semaphore_create,
- _semaphore_destroy, _semaphore_signal, _semaphore_signal_all,
- _semaphore_signal_all_trap, _semaphore_signal_thread, _semaphore_signal_thread_trap,
- _semaphore_signal_trap, _semaphore_timedwait, _semaphore_timedwait_signal,
- _semaphore_timedwait_signal_trap, _semaphore_timedwait_trap,
- _semaphore_wait, _semaphore_wait_signal, _semaphore_wait_signal_trap,
- _semaphore_wait_trap, _semget, _semop, _semsys, _sendfile,
- _sendmsg, _sendmsg_x, _sendto, _setattrlist, _setattrlistat,
- _setaudit, _setaudit_addr, _setauid, _setegid, _seteuid, _setgid,
- _setgroups, _setiopolicy_np, _setitimer, _setpgid, _setpriority,
- _setprivexec, _setquota, _setrlimit, _setsgroups_np, _setsid,
- _setsockopt, _setuid, _setwgroups_np, _setxattr, _sfi_get_class_offtime,
- _sfi_process_get_flags, _sfi_process_set_flags, _sfi_set_class_offtime,
- _shm_open, _shm_unlink, _shmat, _shmdt, _shmget, _shmsys,
- _shutdown, _sigpending, _sigprocmask, _sigsuspend, _socket,
- _socket_delegate, _socketpair, _stackshot_capture_with_config,
- _stackshot_config_create, _stackshot_config_dealloc, _stackshot_config_dealloc_buffer,
- _stackshot_config_get_stackshot_buffer, _stackshot_config_get_stackshot_size,
- _stackshot_config_set_delta_timestamp, _stackshot_config_set_flags,
- _stackshot_config_set_pagetable_mask, _stackshot_config_set_pid,
- _stackshot_config_set_size_hint, _stat, _stat64, _statfs,
- _statfs64, _swapon, _swtch, _swtch_pri, _symlink, _symlinkat,
- _sync, _syscall, _syscall_thread_switch, _system_get_sfi_window,
- _system_override, _system_set_sfi_window, _task_assign, _task_assign_default,
- _task_create, _task_create_identity_token, _task_dyld_process_info_notify_deregister,
- _task_dyld_process_info_notify_get, _task_dyld_process_info_notify_register,
- _task_for_pid, _task_generate_corpse, _task_get_assignment,
- _task_get_dyld_image_infos, _task_get_emulation_vector, _task_get_exc_guard_behavior,
- _task_get_exception_ports, _task_get_exception_ports_info,
- _task_get_mach_voucher, _task_get_special_port, _task_get_state,
- _task_identity_token_get_task_port, _task_info, _task_inspect,
- _task_inspect_for_pid, _task_map_corpse_info, _task_map_corpse_info_64,
- _task_map_kcdata_object_64, _task_name_for_pid, _task_policy,
- _task_policy_get, _task_policy_set, _task_purgable_info, _task_read_for_pid,
- _task_register_dyld_get_process_state, _task_register_dyld_image_infos,
- _task_register_dyld_set_dyld_state, _task_register_dyld_shared_cache_image_info,
- _task_restartable_ranges_register, _task_restartable_ranges_synchronize,
- _task_resume, _task_resume2, _task_sample, _task_self_, _task_self_trap,
- _task_set_corpse_forking_behavior, _task_set_emulation, _task_set_emulation_vector,
- _task_set_exc_guard_behavior, _task_set_exception_ports, _task_set_info,
- _task_set_mach_voucher, _task_set_phys_footprint_limit, _task_set_policy,
- _task_set_port_space, _task_set_ras_pc, _task_set_special_port,
- _task_set_state, _task_suspend, _task_suspend2, _task_swap_exception_ports,
- _task_swap_mach_voucher, _task_terminate, _task_test_async_upcall_propagation,
- _task_test_sync_upcall, _task_threads, _task_unregister_dyld_image_infos,
- _task_zone_info, _terminate_with_payload, _terminate_with_reason,
- _thread_abort, _thread_abort_safely, _thread_assign, _thread_assign_default,
- _thread_convert_thread_state, _thread_create, _thread_create_running,
- _thread_depress_abort, _thread_destruct_special_reply_port,
- _thread_get_assignment, _thread_get_exception_ports, _thread_get_exception_ports_info,
- _thread_get_mach_voucher, _thread_get_register_pointer_values,
- _thread_get_special_port, _thread_get_special_reply_port,
- _thread_get_state, _thread_info, _thread_policy, _thread_policy_get,
- _thread_policy_set, _thread_resume, _thread_sample, _thread_self_trap,
- _thread_selfcounts, _thread_set_exception_ports, _thread_set_mach_voucher,
- _thread_set_policy, _thread_set_special_port, _thread_set_state,
- _thread_suspend, _thread_swap_exception_ports, _thread_swap_mach_voucher,
- _thread_switch, _thread_terminate, _thread_wire, _tracker_action,
- _truncate, _umask, _undelete, _ungraftdmg, _unlink, _unlinkat,
- _unmount, _usrctl, _utimensat, _utimes, _vfs_purge, _vm_allocate,
- _vm_allocate_cpm, _vm_behavior_set, _vm_copy, _vm_deallocate,
- _vm_inherit, _vm_kernel_page_mask, _vm_kernel_page_shift,
- _vm_kernel_page_size, _vm_machine_attribute, _vm_map, _vm_map_page_query,
- _vm_msync, _vm_page_mask, _vm_page_shift, _vm_page_size, _vm_pressure_monitor,
- _vm_protect, _vm_purgable_control, _vm_read, _vm_read_list,
- _vm_read_overwrite, _vm_region_64, _vm_region_recurse_64,
- _vm_remap, _vm_remap_new, _vm_wire, _vm_write, _voucher_mach_msg_adopt,
- _voucher_mach_msg_clear, _voucher_mach_msg_revert, _voucher_mach_msg_set,
- _vprintf_stderr_func, _wait4, _waitid, _work_interval_copy_port,
- _work_interval_create, _work_interval_destroy, _work_interval_get_flags_from_port,
- _work_interval_instance_alloc, _work_interval_instance_clear,
- _work_interval_instance_finish, _work_interval_instance_free,
- _work_interval_instance_get_complexity, _work_interval_instance_get_deadline,
- _work_interval_instance_get_finish, _work_interval_instance_get_id,
- _work_interval_instance_get_start, _work_interval_instance_get_telemetry_data,
- _work_interval_instance_set_complexity, _work_interval_instance_set_deadline,
- _work_interval_instance_set_finish, _work_interval_instance_set_start,
- _work_interval_instance_start, _work_interval_instance_update,
- _work_interval_join, _work_interval_join_port, _work_interval_leave,
- _work_interval_notify, _work_interval_notify_simple, _write,
- _writev ]
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ '_pselect$1050', '_select$1050' ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ '_accept$NOCANCEL', '_aio_suspend$NOCANCEL', '_close$NOCANCEL',
- '_connect$NOCANCEL', '_fcntl$NOCANCEL', '_fsync$NOCANCEL',
- _mach_msg2_internal, _mach_msg2_trap, _mach_vm_reclaim_is_available,
- _mach_vm_reclaim_mark_free, _mach_vm_reclaim_mark_used, _mach_vm_reclaim_ringbuffer_init,
- _mach_vm_reclaim_synchronize, _mach_vm_reclaim_update_kernel_accounting,
- _msgctl, '_msgrcv$NOCANCEL', '_msgsnd$NOCANCEL', '_msync$NOCANCEL',
- '_open$NOCANCEL', '_poll$NOCANCEL', '_pread$NOCANCEL', '_pselect$NOCANCEL',
- '_pwrite$NOCANCEL', '_read$NOCANCEL', '_readv$NOCANCEL', '_recvfrom$NOCANCEL',
- '_recvmsg$NOCANCEL', '_select$NOCANCEL', '_sem_wait$NOCANCEL',
- _semctl, '_sendmsg$NOCANCEL', '_sendto$NOCANCEL', _setregid,
- _setreuid, _shmctl, '_sigsuspend$NOCANCEL', _system_version_compat_mode,
- '_waitid$NOCANCEL', '_write$NOCANCEL', '_writev$NOCANCEL' ]
- - targets: [ arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___fstat, ___fstatat, ___fstatfs, ___getfsstat, ___lstat,
- ___stat, ___statfs, __current_pid, _mach_absolute_time_kernel,
- _mach_continuous_time_kernel ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_m.dylib'
-current-version: 3252
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst ]
- symbols: [ __FE_DFL_DISABLE_SSE_DENORMS_ENV, ___cos_d4, ___cos_f8, ___sin_d4,
- ___sin_f8, __simd_acos_d4, __simd_acos_d8, __simd_acos_f16,
- __simd_acos_f8, __simd_acosh_d4, __simd_acosh_d8, __simd_acosh_f16,
- __simd_acosh_f8, __simd_asin_d4, __simd_asin_d8, __simd_asin_f16,
- __simd_asin_f8, __simd_asinh_d4, __simd_asinh_d8, __simd_asinh_f16,
- __simd_asinh_f8, __simd_atan2_d4, __simd_atan2_d8, __simd_atan2_f16,
- __simd_atan2_f8, __simd_atan_d4, __simd_atan_d8, __simd_atan_f16,
- __simd_atan_f8, __simd_atanh_d4, __simd_atanh_d8, __simd_atanh_f16,
- __simd_atanh_f8, __simd_cbrt_d4, __simd_cbrt_d8, __simd_cbrt_f16,
- __simd_cbrt_f8, __simd_cos_d4, __simd_cos_d8, __simd_cos_f16,
- __simd_cos_f8, __simd_cosh_d4, __simd_cosh_d8, __simd_cosh_f16,
- __simd_cosh_f8, __simd_cospi_d4, __simd_cospi_d8, __simd_cospi_f16,
- __simd_cospi_f8, __simd_erf_d4, __simd_erf_d8, __simd_erf_f16,
- __simd_erf_f8, __simd_erfc_d4, __simd_erfc_d8, __simd_erfc_f16,
- __simd_erfc_f8, __simd_exp10_d4, __simd_exp10_d8, __simd_exp10_f16,
- __simd_exp10_f8, __simd_exp2_d4, __simd_exp2_d8, __simd_exp2_f16,
- __simd_exp2_f8, __simd_exp_d4, __simd_exp_d8, __simd_exp_f16,
- __simd_exp_f8, __simd_expm1_d4, __simd_expm1_d8, __simd_expm1_f16,
- __simd_expm1_f8, __simd_fmod_d4, __simd_fmod_d8, __simd_fmod_f16,
- __simd_fmod_f8, __simd_hypot_d4, __simd_hypot_d8, __simd_hypot_f16,
- __simd_hypot_f8, __simd_lgamma_d4, __simd_lgamma_d8, __simd_lgamma_f16,
- __simd_lgamma_f8, __simd_log10_d4, __simd_log10_d8, __simd_log10_f16,
- __simd_log10_f8, __simd_log1p_d4, __simd_log1p_d8, __simd_log1p_f16,
- __simd_log1p_f8, __simd_log2_d4, __simd_log2_d8, __simd_log2_f16,
- __simd_log2_f8, __simd_log_d4, __simd_log_d8, __simd_log_f16,
- __simd_log_f8, __simd_nextafter_d4, __simd_nextafter_d8, __simd_nextafter_f16,
- __simd_nextafter_f8, __simd_pow_d4, __simd_pow_d8, __simd_pow_f16,
- __simd_pow_f8, __simd_remainder_d4, __simd_remainder_d8, __simd_remainder_f16,
- __simd_remainder_f8, __simd_round_d4, __simd_round_d8, __simd_round_f16,
- __simd_round_f8, __simd_sin_d4, __simd_sin_d8, __simd_sin_f16,
- __simd_sin_f8, __simd_sinh_d4, __simd_sinh_d8, __simd_sinh_f16,
- __simd_sinh_f8, __simd_sinpi_d4, __simd_sinpi_d8, __simd_sinpi_f16,
- __simd_sinpi_f8, __simd_tan_d4, __simd_tan_d8, __simd_tan_f16,
- __simd_tan_f8, __simd_tanh_d4, __simd_tanh_d8, __simd_tanh_f16,
- __simd_tanh_f8, __simd_tanpi_d4, __simd_tanpi_d8, __simd_tanpi_f16,
- __simd_tanpi_f8, __simd_tgamma_d4, __simd_tgamma_d8, __simd_tgamma_f16,
- __simd_tgamma_f8 ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, x86_64h-macos, x86_64h-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __FE_DFL_ENV, ___Libm_version, ___cos_d2, ___cos_f4, ___cospi,
- ___cospif, ___exp10, ___exp10f, ___fegetfltrounds, ___fpclassifyd,
- ___fpclassifyf, ___fpclassifyl, ___inline_isfinited, ___inline_isfinitef,
- ___inline_isfinitel, ___inline_isinfd, ___inline_isinff, ___inline_isinfl,
- ___inline_isnand, ___inline_isnanf, ___inline_isnanl, ___inline_isnormald,
- ___inline_isnormalf, ___inline_isnormall, ___inline_signbitd,
- ___inline_signbitf, ___inline_signbitl, ___invert_d2, ___invert_d3,
- ___invert_d4, ___invert_f2, ___invert_f3, ___invert_f4, ___isfinited,
- ___isfinitef, ___isfinitel, ___isinfd, ___isinff, ___isinfl,
- ___isnand, ___isnanf, ___isnanl, ___isnormald, ___isnormalf,
- ___isnormall, ___math_errhandling, ___signbitd, ___signbitf,
- ___signbitl, ___sin_d2, ___sin_f4, ___sincos, ___sincos_stret,
- ___sincosf, ___sincosf_stret, ___sincospi, ___sincospi_stret,
- ___sincospif, ___sincospif_stret, ___sinpi, ___sinpif, ___tanpi,
- ___tanpif, __simd_acos_d2, __simd_acos_f4, __simd_acosh_d2,
- __simd_acosh_f4, __simd_asin_d2, __simd_asin_f4, __simd_asinh_d2,
- __simd_asinh_f4, __simd_atan2_d2, __simd_atan2_f4, __simd_atan_d2,
- __simd_atan_f4, __simd_atanh_d2, __simd_atanh_f4, __simd_cbrt_d2,
- __simd_cbrt_f4, __simd_cos_d2, __simd_cos_f4, __simd_cosh_d2,
- __simd_cosh_f4, __simd_cospi_d2, __simd_cospi_f4, __simd_erf_d2,
- __simd_erf_f4, __simd_erfc_d2, __simd_erfc_f4, __simd_exp10_d2,
- __simd_exp10_f4, __simd_exp2_d2, __simd_exp2_f4, __simd_exp_d2,
- __simd_exp_f4, __simd_expm1_d2, __simd_expm1_f4, __simd_fma_d2,
- __simd_fma_f4, __simd_fmod_d2, __simd_fmod_f4, __simd_hypot_d2,
- __simd_hypot_f4, __simd_incircle_pd2, __simd_incircle_pf2,
- __simd_insphere_pd3, __simd_insphere_pf3, __simd_lgamma_d2,
- __simd_lgamma_f4, __simd_log10_d2, __simd_log10_f4, __simd_log1p_d2,
- __simd_log1p_f4, __simd_log2_d2, __simd_log2_f4, __simd_log_d2,
- __simd_log_f4, __simd_nextafter_d2, __simd_nextafter_f4, __simd_orient_pd2,
- __simd_orient_pd3, __simd_orient_pf2, __simd_orient_pf3, __simd_orient_vd2,
- __simd_orient_vd3, __simd_orient_vf2, __simd_orient_vf3, __simd_pow_d2,
- __simd_pow_f4, __simd_remainder_d2, __simd_remainder_f4, __simd_round_d2,
- __simd_round_f4, __simd_sin_d2, __simd_sin_f4, __simd_sincos_d2,
- __simd_sincos_f4, __simd_sincospi_d2, __simd_sincospi_f4,
- __simd_sinh_d2, __simd_sinh_f4, __simd_sinpi_d2, __simd_sinpi_f4,
- __simd_tan_d2, __simd_tan_f4, __simd_tanh_d2, __simd_tanh_f4,
- __simd_tanpi_d2, __simd_tanpi_f4, __simd_tgamma_d2, __simd_tgamma_f4,
- _acos, _acosf, _acosh, _acoshf, _acoshl, _acosl, _asin, _asinf,
- _asinh, _asinhf, _asinhl, _asinl, _atan, _atan2, _atan2f,
- _atan2l, _atanf, _atanh, _atanhf, _atanhl, _atanl, _cabs,
- _cabsf, _cabsl, _cacos, _cacosf, _cacosh, _cacoshf, _cacoshl,
- _cacosl, _carg, _cargf, _cargl, _casin, _casinf, _casinh,
- _casinhf, _casinhl, _casinl, _catan, _catanf, _catanh, _catanhf,
- _catanhl, _catanl, _cbrt, _cbrtf, _cbrtl, _ccos, _ccosf, _ccosh,
- _ccoshf, _ccoshl, _ccosl, _ceil, _ceilf, _ceill, _cexp, _cexpf,
- _cexpl, _cimag, _cimagf, _cimagl, _clog, _clogf, _clogl, _conj,
- _conjf, _conjl, _copysign, _copysignf, _copysignl, _cos, _cosf,
- _cosh, _coshf, _coshl, _cosl, _cpow, _cpowf, _cpowl, _cproj,
- _cprojf, _cprojl, _creal, _crealf, _creall, _csin, _csinf,
- _csinh, _csinhf, _csinhl, _csinl, _csqrt, _csqrtf, _csqrtl,
- _ctan, _ctanf, _ctanh, _ctanhf, _ctanhl, _ctanl, _erf, _erfc,
- _erfcf, _erfcl, _erff, _erfl, _exp, _exp2, _exp2f, _exp2l,
- _expf, _expl, _expm1, _expm1f, _expm1l, _fabs, _fabsf, _fabsl,
- _fdim, _fdimf, _fdiml, _feclearexcept, _fegetenv, _fegetexceptflag,
- _fegetround, _feholdexcept, _feraiseexcept, _fesetenv, _fesetexceptflag,
- _fesetround, _fetestexcept, _feupdateenv, _floor, _floorf,
- _floorl, _fma, _fmaf, _fmal, _fmax, _fmaxf, _fmaxl, _fmin,
- _fminf, _fminl, _fmod, _fmodf, _fmodl, _frexp, _frexpf, _frexpl,
- _hypot, _hypotf, _hypotl, _ilogb, _ilogbf, _ilogbl, _isinf,
- _isnan, _j0, _j1, _jn, _ldexp, _ldexpf, _ldexpl, _lgamma,
- _lgamma_r, _lgammaf, _lgammaf_r, _lgammal, _lgammal_r, _llrint,
- _llrintf, _llrintl, _llround, _llroundf, _llroundl, _log,
- _log10, _log10f, _log10l, _log1p, _log1pf, _log1pl, _log2,
- _log2f, _log2l, _logb, _logbf, _logbl, _logf, _logl, _lrint,
- _lrintf, _lrintl, _lround, _lroundf, _lroundl, _matrix_identity_double2x2,
- _matrix_identity_double3x3, _matrix_identity_double4x4, _matrix_identity_float2x2,
- _matrix_identity_float3x3, _matrix_identity_float4x4, _modf,
- _modff, _modfl, _nan, _nanf, _nanl, _nearbyint, _nearbyintf,
- _nearbyintl, _nextafter, _nextafterf, _nextafterl, _nexttoward,
- _nexttowardf, _nexttowardl, _pow, _powf, _powl, _remainder,
- _remainderf, _remainderl, _remquo, _remquof, _remquol, _rint,
- _rintf, _rintl, _round, _roundf, _roundl, _scalb, _scalbln,
- _scalblnf, _scalblnl, _scalbn, _scalbnf, _scalbnl, _signgam,
- _sin, _sinf, _sinh, _sinhf, _sinhl, _sinl, _sqrt, _sqrtf,
- _sqrtl, _tan, _tanf, _tanh, _tanhf, _tanhl, _tanl, _tgamma,
- _tgammaf, _tgammal, _trunc, _truncf, _truncl, _y0, _y1, _yn ]
- - targets: [ x86_64-macos, x86_64h-macos ]
- symbols: [ ___fpclassify, ___inf, ___inff, ___infl, ___isfinite, ___isinf,
- ___isnan, ___isnormal, ___nan, ___signbit, '_acos$fenv_access_off',
- '_acosf$fenv_access_off', '_acosh$fenv_access_off', '_acoshf$fenv_access_off',
- '_acoshl$fenv_access_off', '_acosl$fenv_access_off', '_asin$fenv_access_off',
- '_asinf$fenv_access_off', '_asinh$fenv_access_off', '_asinhf$fenv_access_off',
- '_asinhl$fenv_access_off', '_asinl$fenv_access_off', '_atan$fenv_access_off',
- '_atan2$fenv_access_off', '_atan2f$fenv_access_off', '_atan2l$fenv_access_off',
- '_atanf$fenv_access_off', '_atanh$fenv_access_off', '_atanhf$fenv_access_off',
- '_atanhl$fenv_access_off', '_atanl$fenv_access_off', '_cabs$fenv_access_off',
- '_cabsf$fenv_access_off', '_cabsl$fenv_access_off', '_cacos$fenv_access_off',
- '_cacosf$fenv_access_off', '_cacosh$fenv_access_off', '_cacoshf$fenv_access_off',
- '_cacoshl$fenv_access_off', '_cacosl$fenv_access_off', '_carg$fenv_access_off',
- '_cargf$fenv_access_off', '_cargl$fenv_access_off', '_casin$fenv_access_off',
- '_casinf$fenv_access_off', '_casinh$fenv_access_off', '_casinhf$fenv_access_off',
- '_casinhl$fenv_access_off', '_casinl$fenv_access_off', '_catan$fenv_access_off',
- '_catanf$fenv_access_off', '_catanh$fenv_access_off', '_catanhf$fenv_access_off',
- '_catanhl$fenv_access_off', '_catanl$fenv_access_off', '_cbrt$fenv_access_off',
- '_cbrtf$fenv_access_off', '_cbrtl$fenv_access_off', '_ccos$fenv_access_off',
- '_ccosf$fenv_access_off', '_ccosh$fenv_access_off', '_ccoshf$fenv_access_off',
- '_ccoshl$fenv_access_off', '_ccosl$fenv_access_off', '_ceil$fenv_access_off',
- '_ceilf$fenv_access_off', '_ceill$fenv_access_off', '_cexp$fenv_access_off',
- '_cexpf$fenv_access_off', '_cexpl$fenv_access_off', '_cimag$fenv_access_off',
- '_cimagf$fenv_access_off', '_cimagl$fenv_access_off', '_clog$fenv_access_off',
- '_clogf$fenv_access_off', '_clogl$fenv_access_off', '_conj$fenv_access_off',
- '_conjf$fenv_access_off', '_conjl$fenv_access_off', '_copysign$fenv_access_off',
- '_copysignf$fenv_access_off', '_copysignl$fenv_access_off',
- '_cos$fenv_access_off', '_cosf$fenv_access_off', '_cosh$fenv_access_off',
- '_coshf$fenv_access_off', '_coshl$fenv_access_off', '_cosl$fenv_access_off',
- '_cpow$fenv_access_off', '_cpowf$fenv_access_off', '_cpowl$fenv_access_off',
- '_cproj$fenv_access_off', '_cprojf$fenv_access_off', '_cprojl$fenv_access_off',
- '_creal$fenv_access_off', '_crealf$fenv_access_off', '_creall$fenv_access_off',
- '_csin$fenv_access_off', '_csinf$fenv_access_off', '_csinh$fenv_access_off',
- '_csinhf$fenv_access_off', '_csinhl$fenv_access_off', '_csinl$fenv_access_off',
- '_csqrt$fenv_access_off', '_csqrtf$fenv_access_off', '_csqrtl$fenv_access_off',
- '_ctan$fenv_access_off', '_ctanf$fenv_access_off', '_ctanh$fenv_access_off',
- '_ctanhf$fenv_access_off', '_ctanhl$fenv_access_off', '_ctanl$fenv_access_off',
- _drem, '_erf$fenv_access_off', '_erfc$fenv_access_off', '_erfcf$fenv_access_off',
- '_erfcl$fenv_access_off', '_erff$fenv_access_off', '_erfl$fenv_access_off',
- '_exp$fenv_access_off', '_exp2$fenv_access_off', '_exp2f$fenv_access_off',
- '_exp2l$fenv_access_off', '_expf$fenv_access_off', '_expl$fenv_access_off',
- '_expm1$fenv_access_off', '_expm1f$fenv_access_off', '_expm1l$fenv_access_off',
- '_fabs$fenv_access_off', '_fabsf$fenv_access_off', '_fabsl$fenv_access_off',
- '_fdim$fenv_access_off', '_fdimf$fenv_access_off', '_fdiml$fenv_access_off',
- _fegetexcept, _fesetexcept, _finite, '_floor$fenv_access_off',
- '_floorf$fenv_access_off', '_floorl$fenv_access_off', '_fma$fenv_access_off',
- '_fmaf$fenv_access_off', '_fmal$fenv_access_off', '_fmax$fenv_access_off',
- '_fmaxf$fenv_access_off', '_fmaxl$fenv_access_off', '_fmin$fenv_access_off',
- '_fminf$fenv_access_off', '_fminl$fenv_access_off', '_fmod$fenv_access_off',
- '_fmodf$fenv_access_off', '_fmodl$fenv_access_off', '_frexp$fenv_access_off',
- '_frexpf$fenv_access_off', '_frexpl$fenv_access_off', _gamma,
- '_gamma$fenv_access_off', '_hypot$fenv_access_off', '_hypotf$fenv_access_off',
- '_hypotl$fenv_access_off', '_ilogb$fenv_access_off', '_ilogbf$fenv_access_off',
- '_ilogbl$fenv_access_off', '_ldexp$fenv_access_off', '_ldexpf$fenv_access_off',
- '_ldexpl$fenv_access_off', '_lgamma$fenv_access_off', '_lgamma_r$fenv_access_off',
- '_lgammaf$fenv_access_off', '_lgammaf_r$fenv_access_off',
- '_lgammal$fenv_access_off', '_lgammal_r$fenv_access_off',
- '_llrint$fenv_access_off', '_llrintf$fenv_access_off', '_llrintl$fenv_access_off',
- '_llround$fenv_access_off', '_llroundf$fenv_access_off', '_llroundl$fenv_access_off',
- '_log$fenv_access_off', '_log10$fenv_access_off', '_log10f$fenv_access_off',
- '_log10l$fenv_access_off', '_log1p$fenv_access_off', '_log1pf$fenv_access_off',
- '_log1pl$fenv_access_off', '_log2$fenv_access_off', '_log2f$fenv_access_off',
- '_log2l$fenv_access_off', '_logb$fenv_access_off', '_logbf$fenv_access_off',
- '_logbl$fenv_access_off', '_logf$fenv_access_off', '_logl$fenv_access_off',
- '_lrint$fenv_access_off', '_lrintf$fenv_access_off', '_lrintl$fenv_access_off',
- '_lround$fenv_access_off', '_lroundf$fenv_access_off', '_lroundl$fenv_access_off',
- _matherr, '_modf$fenv_access_off', '_modff$fenv_access_off',
- '_modfl$fenv_access_off', '_nearbyint$fenv_access_off', '_nearbyintf$fenv_access_off',
- '_nearbyintl$fenv_access_off', '_nextafter$fenv_access_off',
- _nextafterd, '_nextafterf$fenv_access_off', '_nextafterl$fenv_access_off',
- '_nexttoward$fenv_access_off', '_nexttowardf$fenv_access_off',
- '_nexttowardl$fenv_access_off', '_pow$fenv_access_off', '_powf$fenv_access_off',
- '_powl$fenv_access_off', '_remainder$fenv_access_off', '_remainderf$fenv_access_off',
- '_remainderl$fenv_access_off', '_remquo$fenv_access_off',
- '_remquof$fenv_access_off', '_remquol$fenv_access_off', '_rint$fenv_access_off',
- '_rintf$fenv_access_off', '_rintl$fenv_access_off', _rinttol,
- '_round$fenv_access_off', '_roundf$fenv_access_off', '_roundl$fenv_access_off',
- _roundtol, '_scalbln$fenv_access_off', '_scalblnf$fenv_access_off',
- '_scalblnl$fenv_access_off', '_scalbn$fenv_access_off', '_scalbnf$fenv_access_off',
- '_scalbnl$fenv_access_off', _significand, '_sin$fenv_access_off',
- '_sinf$fenv_access_off', '_sinh$fenv_access_off', '_sinhf$fenv_access_off',
- '_sinhl$fenv_access_off', '_sinl$fenv_access_off', '_sqrt$fenv_access_off',
- '_sqrtf$fenv_access_off', '_sqrtl$fenv_access_off', '_tan$fenv_access_off',
- '_tanf$fenv_access_off', '_tanh$fenv_access_off', '_tanhf$fenv_access_off',
- '_tanhl$fenv_access_off', '_tanl$fenv_access_off', '_tgamma$fenv_access_off',
- '_tgammaf$fenv_access_off', '_tgammal$fenv_access_off', '_trunc$fenv_access_off',
- '_truncf$fenv_access_off', '_truncl$fenv_access_off' ]
- - targets: [ arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __FE_DFL_DISABLE_DENORMS_ENV ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_malloc.dylib'
-current-version: 474.0.13
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ___mach_stack_logging_copy_uniquing_table, ___mach_stack_logging_enumerate_records,
- ___mach_stack_logging_frames_for_uniqued_stack, ___mach_stack_logging_get_frames,
- ___mach_stack_logging_get_frames_for_stackid, ___mach_stack_logging_set_file_path,
- ___mach_stack_logging_shared_memory_address, ___mach_stack_logging_stackid_for_vm_region,
- ___mach_stack_logging_start_reading, ___mach_stack_logging_stop_reading,
- ___mach_stack_logging_uniquing_table_copy_from_serialized,
- ___mach_stack_logging_uniquing_table_read_stack, ___mach_stack_logging_uniquing_table_release,
- ___mach_stack_logging_uniquing_table_retain, ___mach_stack_logging_uniquing_table_serialize,
- ___mach_stack_logging_uniquing_table_sizeof, ___malloc_init,
- ___malloc_late_init, __malloc_fork_child, __malloc_fork_parent,
- __malloc_fork_prepare, __malloc_no_asl_log, __os_cpu_number_override,
- _aligned_alloc, _calloc, _free, _mag_set_thread_index, _malloc,
- _malloc_check_counter, _malloc_check_each, _malloc_check_start,
- _malloc_claimed_address, _malloc_create_legacy_default_zone,
- _malloc_create_zone, _malloc_debug, _malloc_default_purgeable_zone,
- _malloc_default_zone, _malloc_destroy_zone, _malloc_engaged_nano,
- _malloc_enter_process_memory_limit_warn_mode, _malloc_error,
- _malloc_freezedry, _malloc_get_all_zones, _malloc_get_thread_options,
- _malloc_get_zone_name, _malloc_good_size, _malloc_jumpstart,
- _malloc_logger, _malloc_make_nonpurgeable, _malloc_make_purgeable,
- _malloc_memory_event_handler, _malloc_memorypressure_mask_default_4libdispatch,
- _malloc_memorypressure_mask_msl_4libdispatch, _malloc_num_zones,
- _malloc_num_zones_allocated, _malloc_printf, _malloc_register_stack_logger,
- _malloc_sanitizer_get_functions, _malloc_sanitizer_is_enabled,
- _malloc_sanitizer_set_functions, _malloc_set_thread_options,
- _malloc_set_zone_name, _malloc_singlethreaded, _malloc_size,
- _malloc_type_aligned_alloc, _malloc_type_calloc, _malloc_type_free,
- _malloc_type_malloc, _malloc_type_posix_memalign, _malloc_type_realloc,
- _malloc_type_valloc, _malloc_type_zone_calloc, _malloc_type_zone_free,
- _malloc_type_zone_malloc, _malloc_type_zone_memalign, _malloc_type_zone_realloc,
- _malloc_type_zone_valloc, _malloc_zero_on_free_disable, _malloc_zone_batch_free,
- _malloc_zone_batch_malloc, _malloc_zone_calloc, _malloc_zone_check,
- _malloc_zone_claimed_address, _malloc_zone_disable_discharge_checking,
- _malloc_zone_discharge, _malloc_zone_enable_discharge_checking,
- _malloc_zone_enumerate_discharged_pointers, _malloc_zone_free,
- _malloc_zone_from_ptr, _malloc_zone_log, _malloc_zone_malloc,
- _malloc_zone_memalign, _malloc_zone_pressure_relief, _malloc_zone_print,
- _malloc_zone_print_ptr_info, _malloc_zone_realloc, _malloc_zone_register,
- _malloc_zone_statistics, _malloc_zone_unregister, _malloc_zone_valloc,
- _malloc_zones, _mstats, _pgm_diagnose_fault_from_crash_reporter,
- _pgm_extract_report_from_corpse, _posix_memalign, _realloc,
- '_reallocarray$DARWIN_EXTSN', '_reallocarrayf$DARWIN_EXTSN',
- _sanitizer_diagnose_fault_from_crash_reporter, _scalable_zone_info,
- _scalable_zone_statistics, _set_malloc_singlethreaded, _stack_logging_enable_logging,
- _szone_check_counter, _szone_check_modulo, _szone_check_start,
- _tiny_print_region_free_list, _turn_off_stack_logging, _turn_on_stack_logging,
- _valloc, _vfree, _xzm_ptr_lookup_4test, _zeroify_scalable_zone ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_networkextension.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _NEHelperCacheAddRedirectedAddress, _NEHelperCacheClearRedirectedAddresses,
- _NEHelperCacheClearUUIDs, _NEHelperCacheCopyAppUUIDMapping,
- _NEHelperCacheCopyAppUUIDMappingExtended, _NEHelperCacheCopyAppUUIDMappingForUIDExtended,
- _NEHelperCacheCopySigningIdentifierMapping, _NEHelperCacheSetDomainDictionaries,
- _NEHelperCacheSetMatchDomains, _NEHelperCacheSetRoutes, _NEHelperCopyAggregatePathRules,
- _NEHelperCopyAppInfo, _NEHelperCopyCurrentNetworkAsync, _NEHelperCopyCurrentNetworkInfo,
- _NEHelperCopyDataForCertificate, _NEHelperCopyPerAppDomains,
- _NEHelperCopyResponse, _NEHelperCopyXPCEndpointForIdentityProxy,
- _NEHelperGetAppTrackerDomains, _NEHelperGetIKESocket, _NEHelperGetIKESocketWithResult,
- _NEHelperGetKernelControlSocket, _NEHelperGetKernelControlSocketExtended,
- _NEHelperGetNECPSessionFD, _NEHelperGetPFKeySocket, _NEHelperHandleConfigurationsChangedBySC,
- _NEHelperInit, _NEHelperInterfaceCreate, _NEHelperInterfaceDestroy,
- _NEHelperInterfaceRemoveAddress, _NEHelperInterfaceSetAddress,
- _NEHelperInterfaceSetAddressWithLifetime, _NEHelperInterfaceSetDelegate,
- _NEHelperInterfaceSetDescription, _NEHelperInterfaceSetMTU,
- _NEHelperInterfaceSetOption, _NEHelperSendRequest, _NEHelperSettingsRemove,
- _NEHelperSettingsSetArray, _NEHelperSettingsSetBool, _NEHelperSettingsSetNumber,
- _NEHelperVPNConfigurationExists, _NEHelperVPNSetEnabled, _g_ne_read_uuid_cache,
- _g_ne_uuid_cache_hit, _ne_copy_cached_bundle_identifier_for_uuid,
- _ne_copy_cached_uuids_for_bundle_identifier, _ne_copy_signature_info_for_pid,
- _ne_copy_signing_identifier_for_pid, _ne_copy_signing_identifier_for_pid_with_audit_token,
- _ne_copy_uuid_cache, _ne_force_reset_uuid_cache, _ne_get_configuration_generation,
- _ne_is_sockaddr_valid, _ne_log_large_obj, _ne_log_obj, _ne_print_backtrace,
- _ne_privacy_dns_netagent_id, _ne_privacy_proxy_netagent_id,
- _ne_session_add_necp_drop_dest_from_dest_list, _ne_session_add_necp_drop_dest_from_path,
- _ne_session_address_matches_subnets, _ne_session_agent_get_advisory,
- _ne_session_agent_get_advisory_interface_index, _ne_session_always_on_vpn_configs_present,
- _ne_session_always_on_vpn_configs_present_at_boot, _ne_session_app_vpn_configs_present,
- _ne_session_cancel, _ne_session_clear_caches, _ne_session_content_filter_configs_present,
- _ne_session_copy_app_data_from_flow_divert_socket, _ne_session_copy_app_data_from_flow_divert_token,
- _ne_session_copy_os_version_string, _ne_session_copy_policy_match,
- _ne_session_copy_security_session_info, _ne_session_copy_socket_attributes,
- _ne_session_copy_socket_domain_attributes, _ne_session_create,
- _ne_session_disable_restrictions, _ne_session_dns_proxy_configs_present,
- _ne_session_dns_settings_configs_present, _ne_session_establish_ipc,
- _ne_session_fallback_advisory, _ne_session_fallback_default,
- _ne_session_get_config_id_from_network_agent, _ne_session_get_configuration_id,
- _ne_session_get_info, _ne_session_get_info2, _ne_session_get_status,
- _ne_session_info_type_to_string, _ne_session_initialize_necp_drop_all,
- _ne_session_is_always_on_vpn_enabled, _ne_session_is_safeboot,
- _ne_session_local_communication_configs_present, _ne_session_local_communication_send_info,
- _ne_session_manager_get_pid, _ne_session_manager_has_active_sessions,
- _ne_session_manager_is_running, _ne_session_map_interface_to_provider_uuid,
- _ne_session_on_demand_configs_present, _ne_session_path_controller_configs_present,
- _ne_session_policy_copy_flow_divert_token, _ne_session_policy_copy_flow_divert_token_with_key,
- _ne_session_policy_match_get_filter_unit, _ne_session_policy_match_get_flow_divert_unit,
- _ne_session_policy_match_get_scoped_interface_index, _ne_session_policy_match_get_service,
- _ne_session_policy_match_get_service_action, _ne_session_policy_match_get_service_type,
- _ne_session_policy_match_is_drop, _ne_session_policy_match_is_flow_divert,
- _ne_session_policy_match_service_is_registered, _ne_session_relay_configs_present,
- _ne_session_release, _ne_session_retain, _ne_session_send_barrier,
- _ne_session_service_copy_cached_match_domains, _ne_session_service_get_dns_service_id,
- _ne_session_service_get_dns_service_id_for_interface, _ne_session_service_matches_address,
- _ne_session_service_matches_address_for_interface, _ne_session_set_event_handler,
- _ne_session_set_socket_attributes, _ne_session_set_socket_context_attribute,
- _ne_session_set_socket_tracker_attributes, _ne_session_should_disable_nexus,
- _ne_session_start, _ne_session_start_on_behalf_of, _ne_session_start_with_options,
- _ne_session_status_to_string, _ne_session_stop, _ne_session_stop_all_with_plugin_type,
- _ne_session_stop_reason_to_string, _ne_session_type_to_string,
- _ne_session_use_as_system_vpn, _ne_session_vod_evaluate_connection_present,
- _ne_session_vpn_include_all_networks_configs_present, _ne_socket_set_attribution,
- _ne_socket_set_domains, _ne_socket_set_is_app_initiated, _ne_socket_set_website_attribution,
- _ne_tracker_build_cache, _ne_tracker_build_trie, _ne_tracker_check_info_changed,
- _ne_tracker_check_is_hostname_blocked, _ne_tracker_check_tcc,
- _ne_tracker_clear_cache, _ne_tracker_context_can_block_request,
- _ne_tracker_context_get_domain, _ne_tracker_context_get_domain_owner,
- _ne_tracker_context_is_from_app_list, _ne_tracker_context_is_from_web_list,
- _ne_tracker_copy_current_stacktrace, _ne_tracker_create_xcode_issue,
- _ne_tracker_get_ddg_dictionary, _ne_tracker_get_disposition,
- _ne_tracker_lookup_app_domains, _ne_tracker_set_test_domains,
- _ne_tracker_should_save_stacktrace, _ne_tracker_validate_domain,
- _ne_trie_free, _ne_trie_has_high_ascii, _ne_trie_init, _ne_trie_init_from_file,
- _ne_trie_insert, _ne_trie_save_to_file, _ne_trie_search, _necp_drop_dest_copy_dest_entry_list,
- _nehelper_copy_connection_for_delegate_class, _nehelper_queue,
- _nelog_is_debug_logging_enabled, _nelog_is_extra_vpn_logging_enabled,
- _nelog_is_info_logging_enabled ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_notify.dylib'
-current-version: 317
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __notify_fork_child, _notify_cancel, _notify_check, _notify_dump_status,
- _notify_get_event, _notify_get_state, _notify_is_valid_token,
- _notify_monitor_file, _notify_peek, _notify_post, _notify_register_check,
- _notify_register_dispatch, _notify_register_file_descriptor,
- _notify_register_mach_port, _notify_register_plain, _notify_register_signal,
- _notify_resume, _notify_resume_pid, _notify_set_options, _notify_set_state,
- _notify_simple_post, _notify_suspend, _notify_suspend_pid ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_platform.dylib'
-current-version: 306.0.1
-parent-umbrella:
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ i386-macos, i386-maccatalyst ]
- symbols: [ _MKGetTimeBaseInfo, _udiv10 ]
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst ]
- symbols: [ __sigtramp, _longjmperror ]
- - targets: [ i386-macos, i386-maccatalyst, x86_64-macos, x86_64-maccatalyst,
- arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _OSAtomicAdd32, _OSAtomicAdd32Barrier, _OSAtomicAdd64, _OSAtomicAdd64Barrier,
- _OSAtomicAnd32, _OSAtomicAnd32Barrier, _OSAtomicAnd32Orig,
- _OSAtomicAnd32OrigBarrier, _OSAtomicCompareAndSwap32, _OSAtomicCompareAndSwap32Barrier,
- _OSAtomicCompareAndSwap64, _OSAtomicCompareAndSwap64Barrier,
- _OSAtomicCompareAndSwapInt, _OSAtomicCompareAndSwapIntBarrier,
- _OSAtomicCompareAndSwapLong, _OSAtomicCompareAndSwapLongBarrier,
- _OSAtomicCompareAndSwapPtr, _OSAtomicCompareAndSwapPtrBarrier,
- _OSAtomicDecrement32, _OSAtomicDecrement32Barrier, _OSAtomicDecrement64,
- _OSAtomicDecrement64Barrier, _OSAtomicDequeue, _OSAtomicEnqueue,
- _OSAtomicFifoDequeue, _OSAtomicFifoEnqueue, _OSAtomicIncrement32,
- _OSAtomicIncrement32Barrier, _OSAtomicIncrement64, _OSAtomicIncrement64Barrier,
- _OSAtomicOr32, _OSAtomicOr32Barrier, _OSAtomicOr32Orig, _OSAtomicOr32OrigBarrier,
- _OSAtomicTestAndClear, _OSAtomicTestAndClearBarrier, _OSAtomicTestAndSet,
- _OSAtomicTestAndSetBarrier, _OSAtomicXor32, _OSAtomicXor32Barrier,
- _OSAtomicXor32Orig, _OSAtomicXor32OrigBarrier, _OSMemoryBarrier,
- _OSSpinLockLock, _OSSpinLockTry, _OSSpinLockUnlock, __OSSpinLockLockSlow,
- ___bzero, ___libplatform_init, ___os_log_simple_offset, ___os_once_reset,
- ___platform_sigaction, __longjmp, __os_alloc_once, __os_lock_type_eliding,
- __os_lock_type_handoff, __os_lock_type_nospin, __os_lock_type_spin,
- __os_lock_type_transactional, __os_lock_type_unfair, __os_log_simple,
- __os_log_simple_parse, __os_log_simple_parse_identifiers,
- __os_log_simple_parse_message, __os_log_simple_parse_subsystem,
- __os_log_simple_parse_timestamp, __os_log_simple_parse_type,
- __os_log_simple_reinit_4launchd, __os_log_simple_send, __os_log_simple_shim,
- __os_nospin_lock_lock, __os_nospin_lock_trylock, __os_nospin_lock_unlock,
- __os_once, __os_semaphore_create, __os_semaphore_dispose,
- __os_semaphore_signal, __os_semaphore_wait, __platform_bzero,
- __platform_memccpy, __platform_memchr, __platform_memcmp,
- __platform_memcmp_zero_aligned8, __platform_memmove, __platform_memset,
- __platform_memset_pattern16, __platform_memset_pattern4, __platform_memset_pattern8,
- __platform_strchr, __platform_strcmp, __platform_strcpy, __platform_strlcat,
- __platform_strlcpy, __platform_strlen, __platform_strncmp,
- __platform_strncpy, __platform_strnlen, __platform_strstr,
- __setjmp, __simple_asl_get_fd, __simple_asl_log, __simple_asl_log_prog,
- __simple_asl_msg_new, __simple_asl_msg_set, __simple_asl_send,
- __simple_dprintf, __simple_esappend, __simple_esprintf, __simple_getenv,
- __simple_put, __simple_putline, __simple_salloc, __simple_sappend,
- __simple_sfree, __simple_sprintf, __simple_sresize, __simple_string,
- __simple_vdprintf, __simple_vesprintf, __simple_vsprintf,
- __spin_lock, __spin_lock_try, __spin_unlock, _ffs, _ffsl,
- _ffsll, _fls, _flsl, _flsll, _getcontext, _longjmp, _makecontext,
- _os_lock_lock, _os_lock_trylock, _os_lock_unlock, _os_log_simple_now,
- _os_log_simple_type_from_asl, _os_unfair_lock_assert_not_owner,
- _os_unfair_lock_assert_owner, _os_unfair_lock_lock, _os_unfair_lock_lock_no_tsd,
- _os_unfair_lock_lock_with_options, _os_unfair_lock_trylock,
- _os_unfair_lock_unlock, _os_unfair_lock_unlock_no_tsd, _os_unfair_recursive_lock_lock_with_options,
- _os_unfair_recursive_lock_owned, _os_unfair_recursive_lock_trylock,
- _os_unfair_recursive_lock_tryunlock4objc, _os_unfair_recursive_lock_unlock,
- _os_unfair_recursive_lock_unlock_forked_child, _setcontext,
- _setjmp, _siglongjmp, _sigsetjmp, _spin_lock, _spin_lock_try,
- _spin_unlock, _swapcontext, _sys_cache_control, _sys_dcache_flush,
- _sys_icache_invalidate ]
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ '_OSAtomicFifoDequeue$VARIANT$PFZ', '_OSAtomicFifoDequeue$VARIANT$UnfairLock',
- '_OSAtomicFifoEnqueue$VARIANT$PFZ', '_OSAtomicFifoEnqueue$VARIANT$UnfairLock',
- ___no_overread_variant_setup, _bzero_sse_np, _memmove_sse_np,
- _memset_pattern16_sse_np, _memset_pattern4_sse_np, _memset_pattern8_sse_np,
- _memset_sse_np ]
- - targets: [ arm64-macos, arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __ctx_done ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ i386-macos, x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_pthread.dylib'
-current-version: 519
-parent-umbrella:
- - targets: [ i386-macos, x86_64-macos, x86_64-maccatalyst, arm64-macos,
- arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ i386-macos ]
- symbols: [ '_pthread_cancel$UNIX2003', '_pthread_cond_init$UNIX2003',
- '_pthread_cond_timedwait$NOCANCEL$UNIX2003', '_pthread_cond_timedwait$UNIX2003',
- '_pthread_cond_wait$NOCANCEL$UNIX2003', '_pthread_cond_wait$UNIX2003',
- '_pthread_join$NOCANCEL$UNIX2003', '_pthread_join$UNIX2003',
- '_pthread_mutexattr_destroy$UNIX2003', '_pthread_rwlock_destroy$UNIX2003',
- '_pthread_rwlock_init$UNIX2003', '_pthread_rwlock_rdlock$UNIX2003',
- '_pthread_rwlock_tryrdlock$UNIX2003', '_pthread_rwlock_trywrlock$UNIX2003',
- '_pthread_rwlock_unlock$UNIX2003', '_pthread_rwlock_wrlock$UNIX2003',
- '_pthread_setcancelstate$UNIX2003', '_pthread_setcanceltype$UNIX2003',
- '_pthread_sigmask$UNIX2003', '_pthread_testcancel$UNIX2003',
- '_sigwait$NOCANCEL$UNIX2003', '_sigwait$UNIX2003' ]
- - targets: [ i386-macos, x86_64-macos, x86_64-maccatalyst, arm64-macos,
- arm64-maccatalyst, arm64e-macos, arm64e-maccatalyst ]
- symbols: [ ____chkstk_darwin, ___is_threaded, ___pthread_init, ___pthread_late_init,
- ___pthread_workqueue_setkill, ___unix_conforming, __pthread_atfork_child,
- __pthread_atfork_child_handlers, __pthread_atfork_parent,
- __pthread_atfork_parent_handlers, __pthread_atfork_prepare,
- __pthread_atfork_prepare_handlers, __pthread_clear_qos_tsd,
- __pthread_exit_if_canceled, __pthread_fork_child, __pthread_fork_child_postinit,
- __pthread_fork_parent, __pthread_fork_prepare, __pthread_is_threaded,
- __pthread_override_qos_class_end_direct, __pthread_override_qos_class_start_direct,
- __pthread_qos_class_and_override_decode, __pthread_qos_class_and_override_encode,
- __pthread_qos_class_decode, __pthread_qos_class_encode, __pthread_qos_class_encode_workqueue,
- __pthread_qos_override_end_direct, __pthread_qos_override_start_direct,
- __pthread_sched_pri_decode, __pthread_sched_pri_encode, __pthread_self,
- __pthread_set_properties_self, __pthread_set_self, __pthread_setspecific_static,
- __pthread_start, __pthread_tsd_shared_cache_first, __pthread_tsd_shared_cache_last,
- __pthread_workloop_create, __pthread_workloop_destroy, __pthread_workqueue_add_cooperativethreads,
- __pthread_workqueue_addthreads, __pthread_workqueue_asynchronous_override_add,
- __pthread_workqueue_asynchronous_override_reset_all_self,
- __pthread_workqueue_asynchronous_override_reset_self, __pthread_workqueue_init,
- __pthread_workqueue_init_with_kevent, __pthread_workqueue_init_with_workloop,
- __pthread_workqueue_override_reset, __pthread_workqueue_override_start_direct,
- __pthread_workqueue_override_start_direct_check_owner, __pthread_workqueue_set_event_manager_priority,
- __pthread_workqueue_should_narrow, __pthread_workqueue_supported,
- __pthread_wqthread, __pthread_yield_to_enqueuer_4dispatch,
- _cthread_yield, _posix_spawnattr_get_qos_class_np, _posix_spawnattr_set_qos_class_np,
- _pthread_atfork, _pthread_attr_destroy, _pthread_attr_get_qos_class_np,
- _pthread_attr_getdetachstate, _pthread_attr_getguardsize,
- _pthread_attr_getinheritsched, _pthread_attr_getschedparam,
- _pthread_attr_getschedpolicy, _pthread_attr_getscope, _pthread_attr_getstack,
- _pthread_attr_getstackaddr, _pthread_attr_getstacksize, _pthread_attr_init,
- _pthread_attr_set_qos_class_np, _pthread_attr_setcpupercent_np,
- _pthread_attr_setdetachstate, _pthread_attr_setguardsize,
- _pthread_attr_setinheritsched, _pthread_attr_setschedparam,
- _pthread_attr_setschedpolicy, _pthread_attr_setscope, _pthread_attr_setstack,
- _pthread_attr_setstackaddr, _pthread_attr_setstacksize, _pthread_cancel,
- _pthread_chdir_np, _pthread_cond_broadcast, _pthread_cond_destroy,
- _pthread_cond_init, _pthread_cond_signal, _pthread_cond_signal_thread_np,
- _pthread_cond_timedwait, _pthread_cond_timedwait_relative_np,
- _pthread_cond_wait, _pthread_condattr_destroy, _pthread_condattr_getpshared,
- _pthread_condattr_init, _pthread_condattr_setpshared, _pthread_cpu_number_np,
- _pthread_create, _pthread_create_from_mach_thread, _pthread_create_suspended_np,
- _pthread_create_with_workgroup_np, _pthread_current_stack_contains_np,
- _pthread_dependency_fulfill_np, _pthread_dependency_init_np,
- _pthread_dependency_wait_np, _pthread_detach, _pthread_equal,
- _pthread_exit, _pthread_fchdir_np, _pthread_from_mach_thread_np,
- _pthread_get_qos_class_np, _pthread_get_stackaddr_np, _pthread_get_stacksize_np,
- _pthread_getconcurrency, _pthread_getname_np, _pthread_getschedparam,
- _pthread_getspecific, _pthread_install_workgroup_functions_np,
- _pthread_introspection_getspecific_np, _pthread_introspection_hook_install,
- _pthread_introspection_setspecific_np, _pthread_is_threaded_np,
- _pthread_join, _pthread_key_create, _pthread_key_delete, _pthread_key_init_np,
- _pthread_kill, _pthread_layout_offsets, _pthread_mach_thread_np,
- _pthread_main_np, _pthread_main_thread_np, _pthread_mutex_destroy,
- _pthread_mutex_getprioceiling, _pthread_mutex_init, _pthread_mutex_lock,
- _pthread_mutex_setprioceiling, _pthread_mutex_trylock, _pthread_mutex_unlock,
- _pthread_mutexattr_destroy, _pthread_mutexattr_getpolicy_np,
- _pthread_mutexattr_getprioceiling, _pthread_mutexattr_getprotocol,
- _pthread_mutexattr_getpshared, _pthread_mutexattr_gettype,
- _pthread_mutexattr_init, _pthread_mutexattr_setpolicy_np,
- _pthread_mutexattr_setprioceiling, _pthread_mutexattr_setprotocol,
- _pthread_mutexattr_setpshared, _pthread_mutexattr_settype,
- _pthread_once, _pthread_override_qos_class_end_np, _pthread_override_qos_class_start_np,
- _pthread_prefer_alternate_amx_self, _pthread_prefer_alternate_cluster_self,
- _pthread_qos_max_parallelism, _pthread_rwlock_destroy, _pthread_rwlock_init,
- _pthread_rwlock_rdlock, _pthread_rwlock_tryrdlock, _pthread_rwlock_trywrlock,
- _pthread_rwlock_unlock, _pthread_rwlock_wrlock, _pthread_rwlockattr_destroy,
- _pthread_rwlockattr_getpshared, _pthread_rwlockattr_init,
- _pthread_rwlockattr_setpshared, _pthread_self, _pthread_self_is_exiting_np,
- _pthread_set_fixedpriority_self, _pthread_set_qos_class_np,
- _pthread_set_qos_class_self_np, _pthread_set_timeshare_self,
- _pthread_setcancelstate, _pthread_setcanceltype, _pthread_setconcurrency,
- _pthread_setname_np, _pthread_setschedparam, _pthread_setspecific,
- _pthread_sigmask, _pthread_stack_frame_decode_np, _pthread_testcancel,
- _pthread_threadid_np, _pthread_time_constraint_max_parallelism,
- _pthread_workqueue_addthreads_np, _pthread_workqueue_setdispatch_np,
- _pthread_workqueue_setdispatchoffset_np, _pthread_workqueue_setup,
- _pthread_yield_np, _qos_class_main, _qos_class_self, _sched_get_priority_max,
- _sched_get_priority_min, _sched_yield, _sigwait, _start_wqthread,
- _thread_chkstk_darwin, _thread_start ]
- - targets: [ i386-macos, x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ __pthread_mutex_enable_legacy_mode, _pthread_jit_write_freeze_callbacks_np,
- _pthread_jit_write_protect_np, _pthread_jit_write_protect_supported_np,
- _pthread_jit_write_with_callback_np ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ '_pthread_cond_timedwait$NOCANCEL', '_pthread_cond_wait$NOCANCEL',
- '_pthread_join$NOCANCEL', '_sigwait$NOCANCEL' ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_sandbox.dylib'
-current-version: 2169.0.12
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _APP_SANDBOX_IOKIT_CLIENT, _APP_SANDBOX_MACH, _APP_SANDBOX_READ,
- _APP_SANDBOX_READ_WRITE, _IOS_SANDBOX_APPLICATION_GROUP, _IOS_SANDBOX_CONTAINER,
- _SANDBOX_CHECK_ALLOW_APPROVAL, _SANDBOX_CHECK_CANONICAL, _SANDBOX_CHECK_NOFOLLOW,
- _SANDBOX_CHECK_NO_APPROVAL, _SANDBOX_CHECK_NO_REPORT, _SANDBOX_CHECK_POSIX_READABLE,
- _SANDBOX_EXTENSION_CANONICAL, _SANDBOX_EXTENSION_DEFAULT,
- _SANDBOX_EXTENSION_MAGIC, _SANDBOX_EXTENSION_NOFOLLOW, _SANDBOX_EXTENSION_NO_REPORT,
- _SANDBOX_EXTENSION_NO_STORAGE_CLASS, _SANDBOX_EXTENSION_PREFIXMATCH,
- _SANDBOX_EXTENSION_UNRESOLVED, __amkrtemp, __sandbox_in_a_container,
- __sandbox_register_app_bundle_0, __sandbox_register_app_bundle_1,
- _kSBXProfileNoInternet, _kSBXProfileNoNetwork, _kSBXProfileNoWrite,
- _kSBXProfileNoWriteExceptTemporary, _kSBXProfilePureComputation,
- _kSandboxAppBundleAnySigningId, _kSandboxAppBundlePlatformTeamId,
- _kSandboxAppContainerAnySigningId, _kSandboxAppContainerPlatformTeamId,
- _rootless_allows_task_for_pid, _rootless_check_datavault_flag,
- _rootless_check_restricted_flag, _rootless_check_trusted,
- _rootless_check_trusted_class, _rootless_check_trusted_fd,
- _rootless_convert_to_datavault, _rootless_mkdir_datavault,
- _rootless_mkdir_nounlink, _rootless_mkdir_restricted, _rootless_protected_volume,
- _rootless_protected_volume_fd, _rootless_register_trusted_storage_class,
- _rootless_remove_datavault_in_favor_of_static_storage_class,
- _rootless_remove_restricted_in_favor_of_static_storage_class,
- _rootless_restricted_environment, _rootless_suspend, _rootless_trusted_by_self_token,
- _rootless_verify_trusted_by_self_token, _sandbox_builtin_query,
- _sandbox_check, _sandbox_check_bulk, _sandbox_check_by_audit_token,
- _sandbox_check_by_reference, _sandbox_check_by_uniqueid, _sandbox_check_message_filter_integer,
- _sandbox_check_message_filter_string, _sandbox_check_protected_app_container,
- _sandbox_consume_extension, _sandbox_consume_fs_extension,
- _sandbox_consume_mach_extension, _sandbox_container_path_for_audit_token,
- _sandbox_container_path_for_pid, _sandbox_enable_root_translation,
- _sandbox_enable_state_flag, _sandbox_extension_consume, _sandbox_extension_issue_file,
- _sandbox_extension_issue_file_to_process, _sandbox_extension_issue_file_to_process_by_pid,
- _sandbox_extension_issue_file_to_self, _sandbox_extension_issue_generic,
- _sandbox_extension_issue_generic_to_process, _sandbox_extension_issue_generic_to_process_by_pid,
- _sandbox_extension_issue_iokit_registry_entry_class, _sandbox_extension_issue_iokit_registry_entry_class_to_process,
- _sandbox_extension_issue_iokit_registry_entry_class_to_process_by_pid,
- _sandbox_extension_issue_iokit_user_client_class, _sandbox_extension_issue_mach,
- _sandbox_extension_issue_mach_to_process, _sandbox_extension_issue_mach_to_process_by_pid,
- _sandbox_extension_issue_posix_ipc, _sandbox_extension_issue_related_file_to_process,
- _sandbox_extension_reap, _sandbox_extension_release, _sandbox_extension_release_file,
- _sandbox_extension_update_file, _sandbox_extension_update_file_by_fileid,
- _sandbox_free_error, _sandbox_get_container_expected, _sandbox_init,
- _sandbox_init_from_pid, _sandbox_init_with_extensions, _sandbox_init_with_parameters,
- _sandbox_issue_extension, _sandbox_issue_fs_extension, _sandbox_issue_fs_rw_extension,
- _sandbox_issue_mach_extension, _sandbox_message_filter_query,
- _sandbox_message_filter_release, _sandbox_message_filter_retain,
- _sandbox_note, _sandbox_passthrough_access, _sandbox_proc_getcontainer,
- _sandbox_proc_getprofilename, _sandbox_query_approval_policy_for_path,
- _sandbox_query_user_intent_for_process_with_audit_token, _sandbox_reference_release,
- _sandbox_reference_retain_by_audit_token, _sandbox_register_app_bundle,
- _sandbox_register_app_bundle_exception, _sandbox_register_app_bundle_package_exception,
- _sandbox_register_app_container, _sandbox_register_app_container_exception,
- _sandbox_register_app_container_package_exception, _sandbox_register_bastion_profile,
- _sandbox_register_sync_root, _sandbox_release_fs_extension,
- _sandbox_requests_integrity_protection_for_preference_domain,
- _sandbox_set_container_path_for_application_group, _sandbox_set_container_path_for_application_group_with_persona,
- _sandbox_set_container_path_for_audit_token, _sandbox_set_container_path_for_signing_id,
- _sandbox_set_container_path_for_signing_id_with_persona, _sandbox_spawnattrs_getcontainer,
- _sandbox_spawnattrs_getprofilename, _sandbox_spawnattrs_init,
- _sandbox_spawnattrs_setcontainer, _sandbox_spawnattrs_setprofilename,
- _sandbox_suspend, _sandbox_unregister_app_bundle, _sandbox_unregister_app_container,
- _sandbox_unregister_bastion_profile, _sandbox_unsuspend ]
- - targets: [ x86_64-macos, arm64-macos, arm64e-macos ]
- symbols: [ _SANDBOX_EXTENSION_MACL_LEARNING, _SANDBOX_EXTENSION_USER_INTENT,
- _gpu_bundle_find_trusted, _gpu_bundle_is_path_trusted, _rootless_apply,
- _rootless_apply_internal, _rootless_apply_relative, _rootless_manifest_free,
- _rootless_manifest_parse, _rootless_preflight ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_secinit.dylib'
-current-version: 139
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __libsecinit_initializer, _libsecinit_delete_all_data_container_content_for_current_user,
- _libsecinit_fileoperation_save, _libsecinit_fileoperation_set_attributes,
- _libsecinit_fileoperation_symlink ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_symptoms.dylib'
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __symptoms_daemon_fallback_initial_disposition, __symptoms_daemon_fallback_subseq_disposition,
- __symptoms_is_daemon_fallback_blacklisted, _symptom_framework_init,
- _symptom_framework_set_version, _symptom_new, _symptom_send,
- _symptom_send_immediate, _symptom_set_additional_qualifier,
- _symptom_set_qualifier ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libsystem_trace.dylib'
-current-version: 1481.0.12
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __libtrace_fork_child, __libtrace_init, __os_activity_create,
- __os_activity_current, __os_activity_initiate, __os_activity_initiate_f,
- __os_activity_label_useraction, __os_activity_none, __os_activity_set_breadcrumb,
- __os_activity_start, __os_activity_stream_entry_encode, __os_log_create,
- __os_log_debug, __os_log_debug_impl, __os_log_default, __os_log_disabled,
- __os_log_error, __os_log_error_impl, __os_log_fault, __os_log_fault_impl,
- __os_log_get_nscf_formatter, __os_log_impl, __os_log_internal,
- __os_log_pack_fill, __os_log_pack_size, __os_log_preferences_compute,
- __os_log_preferences_copy_cache, __os_log_preferences_load,
- __os_log_preferences_load_sysprefs, __os_log_release, __os_log_send_and_compose_impl,
- __os_log_set_nscf_formatter, __os_signpost_emit_impl, __os_signpost_emit_unreliably_with_name_impl,
- __os_signpost_emit_with_name_impl, __os_signpost_pack_fill,
- __os_signpost_pack_send, __os_state_request_for_pidlist, __os_trace_app_cryptex_sysprefsdir_path,
- __os_trace_atm_diagnostic_config, __os_trace_basesystem_storage_available,
- __os_trace_calloc, __os_trace_commpage_compute, __os_trace_fdscandir_b,
- __os_trace_get_boot_uuid, __os_trace_get_image_info, __os_trace_get_mode_for_pid,
- __os_trace_get_times_now, __os_trace_getxattr_at, __os_trace_intprefsdir_path,
- __os_trace_is_development_build, __os_trace_lazy_init_completed_4libxpc,
- __os_trace_log_simple, __os_trace_macho_for_each_slice, __os_trace_malloc,
- __os_trace_memdup, __os_trace_mmap, __os_trace_mmap_at, __os_trace_mmap_offset,
- __os_trace_mode_match_4tests, __os_trace_os_cryptex_sysprefsdir_path,
- __os_trace_prefs_latest_version_4tests, __os_trace_prefsdir_path,
- __os_trace_read_file_at, __os_trace_read_plist_at, __os_trace_realloc,
- __os_trace_scandir_free_namelist, __os_trace_sect_names, __os_trace_set_diagnostic_flags,
- __os_trace_set_mode_for_pid, __os_trace_strdup, __os_trace_sysprefsdir_path,
- __os_trace_update_with_datavolume_4launchd, __os_trace_with_buffer,
- __os_trace_write, __os_trace_writev, __os_trace_zalloc, _amfi_check_dyld_policy_for_pid,
- _amfi_check_dyld_policy_self, _amfi_load_trust_cache, _os_activity_apply,
- _os_activity_apply_f, _os_activity_diagnostic_for_pid, _os_activity_end,
- _os_activity_for_task_thread, _os_activity_for_thread, _os_activity_get_active,
- _os_activity_get_identifier, _os_activity_iterate_activities,
- _os_activity_iterate_breadcrumbs, _os_activity_iterate_messages,
- _os_activity_iterate_processes, _os_activity_messages_for_thread,
- _os_activity_scope_enter, _os_activity_scope_leave, _os_log_backtrace_copy_description,
- _os_log_backtrace_copy_serialized_buffer, _os_log_backtrace_create_from_buffer,
- _os_log_backtrace_create_from_current, _os_log_backtrace_create_from_pcs,
- _os_log_backtrace_create_from_return_address, _os_log_backtrace_destroy,
- _os_log_backtrace_get_frames, _os_log_backtrace_get_length,
- _os_log_backtrace_print_to_blob, _os_log_backtrace_serialize_to_blob,
- _os_log_compare_enablement, _os_log_copy_decorated_message,
- _os_log_copy_message_string, _os_log_create, _os_log_errors_count,
- _os_log_fault_default_callback, _os_log_faults_count, _os_log_fmt_compose,
- _os_log_fmt_convert_trace, _os_log_fmt_extract_pubdata, _os_log_fmt_get_plugin,
- _os_log_get_type, _os_log_is_debug_enabled, _os_log_is_enabled,
- _os_log_pack_compose, _os_log_pack_send, _os_log_pack_send_and_compose,
- _os_log_set_client_type, _os_log_set_enabled, _os_log_set_fault_callback,
- _os_log_set_hook, _os_log_set_hook_with_params, _os_log_set_test_callback,
- _os_log_shim_enabled, _os_log_shim_legacy_logging_enabled,
- _os_log_shim_with_CFString, _os_log_type_enabled, _os_log_type_get_name,
- _os_log_with_args, _os_signpost_enabled, _os_signpost_id_generate,
- _os_signpost_id_make_with_pointer, _os_signpost_set_introspection_hook_4Perf,
- _os_state_add_handler, _os_state_remove_handler, _os_trace_debug_enabled,
- _os_trace_get_mode, _os_trace_get_type, _os_trace_info_enabled,
- _os_trace_set_mode ]
- objc-classes: [ OS_os_log ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libunwind.dylib'
-current-version: 1600.112
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst ]
- symbols: [ '$ld$hide$os10.4$__Unwind_Backtrace', '$ld$hide$os10.4$__Unwind_DeleteException',
- '$ld$hide$os10.4$__Unwind_FindEnclosingFunction', '$ld$hide$os10.4$__Unwind_Find_FDE',
- '$ld$hide$os10.4$__Unwind_ForcedUnwind', '$ld$hide$os10.4$__Unwind_GetCFA',
- '$ld$hide$os10.4$__Unwind_GetDataRelBase', '$ld$hide$os10.4$__Unwind_GetGR',
- '$ld$hide$os10.4$__Unwind_GetIP', '$ld$hide$os10.4$__Unwind_GetIPInfo',
- '$ld$hide$os10.4$__Unwind_GetLanguageSpecificData', '$ld$hide$os10.4$__Unwind_GetRegionStart',
- '$ld$hide$os10.4$__Unwind_GetTextRelBase', '$ld$hide$os10.4$__Unwind_RaiseException',
- '$ld$hide$os10.4$__Unwind_Resume', '$ld$hide$os10.4$__Unwind_Resume_or_Rethrow',
- '$ld$hide$os10.4$__Unwind_SetGR', '$ld$hide$os10.4$__Unwind_SetIP',
- '$ld$hide$os10.4$___deregister_frame', '$ld$hide$os10.4$___deregister_frame_info',
- '$ld$hide$os10.4$___deregister_frame_info_bases', '$ld$hide$os10.4$___register_frame',
- '$ld$hide$os10.4$___register_frame_info', '$ld$hide$os10.4$___register_frame_info_bases',
- '$ld$hide$os10.4$___register_frame_info_table', '$ld$hide$os10.4$___register_frame_info_table_bases',
- '$ld$hide$os10.4$___register_frame_table', '$ld$hide$os10.5$__Unwind_Backtrace',
- '$ld$hide$os10.5$__Unwind_DeleteException', '$ld$hide$os10.5$__Unwind_FindEnclosingFunction',
- '$ld$hide$os10.5$__Unwind_Find_FDE', '$ld$hide$os10.5$__Unwind_ForcedUnwind',
- '$ld$hide$os10.5$__Unwind_GetCFA', '$ld$hide$os10.5$__Unwind_GetDataRelBase',
- '$ld$hide$os10.5$__Unwind_GetGR', '$ld$hide$os10.5$__Unwind_GetIP',
- '$ld$hide$os10.5$__Unwind_GetIPInfo', '$ld$hide$os10.5$__Unwind_GetLanguageSpecificData',
- '$ld$hide$os10.5$__Unwind_GetRegionStart', '$ld$hide$os10.5$__Unwind_GetTextRelBase',
- '$ld$hide$os10.5$__Unwind_RaiseException', '$ld$hide$os10.5$__Unwind_Resume',
- '$ld$hide$os10.5$__Unwind_Resume_or_Rethrow', '$ld$hide$os10.5$__Unwind_SetGR',
- '$ld$hide$os10.5$__Unwind_SetIP', '$ld$hide$os10.5$___deregister_frame',
- '$ld$hide$os10.5$___deregister_frame_info', '$ld$hide$os10.5$___deregister_frame_info_bases',
- '$ld$hide$os10.5$___register_frame', '$ld$hide$os10.5$___register_frame_info',
- '$ld$hide$os10.5$___register_frame_info_bases', '$ld$hide$os10.5$___register_frame_info_table',
- '$ld$hide$os10.5$___register_frame_info_table_bases', '$ld$hide$os10.5$___register_frame_table',
- '$ld$hide$os10.6$___deregister_frame_info', '$ld$hide$os10.6$___deregister_frame_info_bases',
- '$ld$hide$os10.6$___register_frame_info', '$ld$hide$os10.6$___register_frame_info_bases',
- '$ld$hide$os10.6$___register_frame_info_table', '$ld$hide$os10.6$___register_frame_info_table_bases',
- '$ld$hide$os10.6$___register_frame_table', ___deregister_frame_info,
- ___deregister_frame_info_bases, ___register_frame_info, ___register_frame_info_bases,
- ___register_frame_info_table, ___register_frame_info_table_bases,
- ___register_frame_table ]
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ __Unwind_Backtrace, __Unwind_DeleteException, __Unwind_FindEnclosingFunction,
- __Unwind_Find_FDE, __Unwind_ForcedUnwind, __Unwind_GetCFA,
- __Unwind_GetDataRelBase, __Unwind_GetGR, __Unwind_GetIP, __Unwind_GetIPInfo,
- __Unwind_GetLanguageSpecificData, __Unwind_GetRegionStart,
- __Unwind_GetTextRelBase, __Unwind_RaiseException, __Unwind_Resume,
- __Unwind_Resume_or_Rethrow, __Unwind_SetGR, __Unwind_SetIP,
- __ZN9libunwind25findDynamicUnwindSectionsEPvP27unw_dynamic_unwind_sections,
- ___deregister_frame, ___register_frame, ___unw_add_dynamic_eh_frame_section,
- ___unw_add_dynamic_fde, ___unw_add_find_dynamic_unwind_sections,
- ___unw_remove_dynamic_eh_frame_section, ___unw_remove_dynamic_fde,
- ___unw_remove_find_dynamic_unwind_sections, _unw_get_fpreg,
- _unw_get_proc_info, _unw_get_proc_name, _unw_get_reg, _unw_getcontext,
- _unw_init_local, _unw_is_fpreg, _unw_is_signal_frame, _unw_iterate_dwarf_unwind_cache,
- _unw_local_addr_space, _unw_regname, _unw_resume, _unw_set_fpreg,
- _unw_set_reg, _unw_step ]
---- !tapi-tbd
-tbd-version: 4
-targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
-install-name: '/usr/lib/system/libxpc.dylib'
-current-version: 2679.0.25
-parent-umbrella:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- umbrella: System
-exports:
- - targets: [ x86_64-macos, x86_64-maccatalyst, arm64-macos, arm64-maccatalyst,
- arm64e-macos, arm64e-maccatalyst ]
- symbols: [ _XPC_ACTIVITY_ALLOW_BATTERY, _XPC_ACTIVITY_APP_REFRESH, _XPC_ACTIVITY_CHECK_IN,
- _XPC_ACTIVITY_COMMUNICATES_WITH_PAIRED_DEVICE, _XPC_ACTIVITY_CPU_INTENSIVE,
- _XPC_ACTIVITY_DELAY, _XPC_ACTIVITY_DESIRED_MOTION_STATE, _XPC_ACTIVITY_DISK_INTENSIVE,
- _XPC_ACTIVITY_DO_IT_LATER, _XPC_ACTIVITY_DUET_ACTIVITY_SCHEDULER_DATA,
- _XPC_ACTIVITY_DUET_ATTRIBUTE_COST, _XPC_ACTIVITY_DUET_ATTRIBUTE_NAME,
- _XPC_ACTIVITY_DUET_ATTRIBUTE_VALUE, _XPC_ACTIVITY_DUET_RELATED_APPLICATIONS,
- _XPC_ACTIVITY_EXCLUSIVE, _XPC_ACTIVITY_EXPECTED_DURATION,
- _XPC_ACTIVITY_GRACE_PERIOD, _XPC_ACTIVITY_GROUP_CONCURRENCY_LIMIT,
- _XPC_ACTIVITY_GROUP_NAME, _XPC_ACTIVITY_INTERVAL, _XPC_ACTIVITY_INTERVAL_15_MIN,
- _XPC_ACTIVITY_INTERVAL_1_DAY, _XPC_ACTIVITY_INTERVAL_1_HOUR,
- _XPC_ACTIVITY_INTERVAL_1_MIN, _XPC_ACTIVITY_INTERVAL_30_MIN,
- _XPC_ACTIVITY_INTERVAL_4_HOURS, _XPC_ACTIVITY_INTERVAL_5_MIN,
- _XPC_ACTIVITY_INTERVAL_7_DAYS, _XPC_ACTIVITY_INTERVAL_8_HOURS,
- _XPC_ACTIVITY_INVOLVED_PROCESSES, _XPC_ACTIVITY_MAY_REBOOT_DEVICE,
- _XPC_ACTIVITY_MEMORY_INTENSIVE, _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE,
- _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE_MOVING, _XPC_ACTIVITY_MOTION_STATE_AUTOMOTIVE_STATIONARY,
- _XPC_ACTIVITY_MOTION_STATE_CYCLING, _XPC_ACTIVITY_MOTION_STATE_RUNNING,
- _XPC_ACTIVITY_MOTION_STATE_STATIONARY, _XPC_ACTIVITY_MOTION_STATE_WALKING,
- _XPC_ACTIVITY_NETWORK_DOWNLOAD_SIZE, _XPC_ACTIVITY_NETWORK_TRANSFER_BIDIRECTIONAL,
- _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION, _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION_DOWNLOAD,
- _XPC_ACTIVITY_NETWORK_TRANSFER_DIRECTION_UPLOAD, _XPC_ACTIVITY_NETWORK_TRANSFER_ENDPOINT,
- _XPC_ACTIVITY_NETWORK_TRANSFER_PARAMETERS, _XPC_ACTIVITY_NETWORK_TRANSFER_SIZE,
- _XPC_ACTIVITY_NETWORK_UPLOAD_SIZE, _XPC_ACTIVITY_POST_INSTALL,
- _XPC_ACTIVITY_POWER_NAP, _XPC_ACTIVITY_PREVENT_DEVICE_SLEEP,
- _XPC_ACTIVITY_PRIORITY, _XPC_ACTIVITY_PRIORITY_MAINTENANCE,
- _XPC_ACTIVITY_PRIORITY_UTILITY, _XPC_ACTIVITY_RANDOM_INITIAL_DELAY,
- _XPC_ACTIVITY_REPEATING, _XPC_ACTIVITY_REPLY_ENDPOINT, _XPC_ACTIVITY_REQUIRES_BUDDY_COMPLETE,
- _XPC_ACTIVITY_REQUIRES_CLASS_A, _XPC_ACTIVITY_REQUIRES_CLASS_B,
- _XPC_ACTIVITY_REQUIRES_CLASS_C, _XPC_ACTIVITY_REQUIRE_BATTERY_LEVEL,
- _XPC_ACTIVITY_REQUIRE_HDD_SPINNING, _XPC_ACTIVITY_REQUIRE_INEXPENSIVE_NETWORK_CONNECTIVITY,
- _XPC_ACTIVITY_REQUIRE_NETWORK_CONNECTIVITY, _XPC_ACTIVITY_REQUIRE_SCREEN_SLEEP,
- _XPC_ACTIVITY_REQUIRE_SIGNIFICANT_USER_INACTIVITY, _XPC_ACTIVITY_RUN_WHEN_APP_FOREGROUNDED,
- _XPC_ACTIVITY_SEQUENCE_NUMBER, _XPC_ACTIVITY_SHOULD_WAKE_DEVICE,
- _XPC_ACTIVITY_USER_REQUESTED_BACKUP_TASK, _XPC_ACTIVITY_USES_DATA_BUDGETING,
- _XPC_ACTIVITY_USES_DUET_POWER_BUDGETING, _XPC_COALITION_INFO_KEY_BUNDLE_IDENTIFIER,
- _XPC_COALITION_INFO_KEY_CID, _XPC_COALITION_INFO_KEY_NAME,
- _XPC_COALITION_INFO_KEY_RESOURCE_USAGE_BLOB, ___xpc_connection_set_logging,
- __availability_version_check, __launch_job_routine, __launch_job_routine_async,
- __launch_msg2, __launch_server_test_routine, __launch_service_stats_copy_4ppse_impl,
- __launch_service_stats_copy_impl, __libxpc_initializer, __spawn_via_launchd,
- __system_ios_support_version_copy_string_sysctl, __system_version_copy_string_plist,
- __system_version_copy_string_sysctl, __system_version_fallback,
- __system_version_parse_string, __vproc_get_last_exit_status,
- __vproc_grab_subset, __vproc_kickstart_by_label, __vproc_log,
- __vproc_log_error, __vproc_logv, __vproc_pid_is_managed, __vproc_post_fork_ping,
- __vproc_send_signal_by_label, __vproc_set_global_on_demand,
- __vproc_standby_begin, __vproc_standby_count, __vproc_standby_end,
- __vproc_standby_timeout, __vproc_transaction_begin, __vproc_transaction_count,
- __vproc_transaction_count_for_pid, __vproc_transaction_end,
- __vproc_transaction_set_clean_callback, __vproc_transaction_try_exit,
- __vproc_transactions_enable, __vprocmgr_detach_from_console,
- __vprocmgr_getsocket, __vprocmgr_init, __vprocmgr_log_drain,
- __vprocmgr_log_forward, __vprocmgr_move_subset_to_user, __vprocmgr_switch_to_session,
- __xpc_bool_create_distinct, __xpc_bool_false, __xpc_bool_set_value,
- __xpc_bool_true, __xpc_connection_create_internal_listener,
- __xpc_connection_get_parent_4test, __xpc_connection_get_recvp_4test,
- __xpc_connection_set_event_handler_f, __xpc_data_set_value,
- __xpc_dictionary_create_reply_with_port, __xpc_dictionary_extract_mach_send,
- __xpc_dictionary_extract_reply_msg_id, __xpc_dictionary_extract_reply_port,
- __xpc_dictionary_get_reply_msg_id, __xpc_dictionary_set_remote_connection,
- __xpc_dictionary_set_reply_msg_id, __xpc_domain_routine, __xpc_double_set_value,
- __xpc_error_connection_interrupted, __xpc_error_connection_invalid,
- __xpc_error_key_description, __xpc_error_peer_code_signing_requirement,
- __xpc_error_termination_imminent, __xpc_event_key_name, __xpc_event_key_stream_name,
- __xpc_fd_get_port, __xpc_int64_set_value, __xpc_payload_create_from_mach_msg,
- __xpc_pipe_handle_mig, __xpc_pipe_interface_routine, __xpc_pipe_interface_routine_async,
- __xpc_pipe_interface_simpleroutine, __xpc_runtime_get_entitlements_data,
- __xpc_runtime_get_self_entitlements, __xpc_runtime_is_app_sandboxed,
- __xpc_service_last_xref_cancel, __xpc_service_routine, __xpc_shmem_get_mach_port,
- __xpc_spawnattr_binprefs_pack, __xpc_spawnattr_binprefs_size,
- __xpc_spawnattr_binprefs_unpack, __xpc_spawnattr_pack_bytes,
- __xpc_spawnattr_pack_string, __xpc_spawnattr_pack_string_fragment,
- __xpc_spawnattr_unpack_bytes, __xpc_spawnattr_unpack_string,
- __xpc_spawnattr_unpack_strings, __xpc_string_set_value, __xpc_type_activity,
- __xpc_type_array, __xpc_type_base, __xpc_type_bool, __xpc_type_bundle,
- __xpc_type_connection, __xpc_type_data, __xpc_type_date, __xpc_type_dictionary,
- __xpc_type_double, __xpc_type_endpoint, __xpc_type_error,
- __xpc_type_fd, __xpc_type_file_transfer, __xpc_type_int64,
- __xpc_type_mach_recv, __xpc_type_mach_send, __xpc_type_mach_send_once,
- __xpc_type_null, __xpc_type_pipe, __xpc_type_pointer, __xpc_type_rich_error,
- __xpc_type_serializer, __xpc_type_service, __xpc_type_service_instance,
- __xpc_type_session, __xpc_type_shmem, __xpc_type_string, __xpc_type_uint64,
- __xpc_type_uuid, __xpc_vtables, _bootstrap_check_in, _bootstrap_check_in2,
- _bootstrap_check_in3, _bootstrap_create_server, _bootstrap_create_service,
- _bootstrap_get_root, _bootstrap_info, _bootstrap_init, _bootstrap_look_up,
- _bootstrap_look_up2, _bootstrap_look_up3, _bootstrap_look_up_per_user,
- _bootstrap_lookup_children, _bootstrap_parent, _bootstrap_register,
- _bootstrap_register2, _bootstrap_status, _bootstrap_strerror,
- _bootstrap_subset, _bootstrap_unprivileged, _create_and_switch_to_per_session_launchd,
- _launch_activate_socket, _launch_active_user_login, _launch_active_user_logout,
- _launch_active_user_switch, _launch_add_external_service,
- _launch_bootout_user_service_4coresim, _launch_copy_busy_extension_instances,
- _launch_copy_endpoints_properties_for_pid, _launch_copy_extension_properties,
- _launch_copy_extension_properties_for_pid, _launch_copy_properties_for_pid_4assertiond,
- _launch_create_persona, _launch_cryptex_terminate, _launch_data_alloc,
- _launch_data_array_get_count, _launch_data_array_get_index,
- _launch_data_array_set_index, _launch_data_copy, _launch_data_dict_get_count,
- _launch_data_dict_insert, _launch_data_dict_iterate, _launch_data_dict_lookup,
- _launch_data_dict_remove, _launch_data_free, _launch_data_get_bool,
- _launch_data_get_errno, _launch_data_get_fd, _launch_data_get_integer,
- _launch_data_get_machport, _launch_data_get_opaque, _launch_data_get_opaque_size,
- _launch_data_get_real, _launch_data_get_string, _launch_data_get_type,
- _launch_data_new_bool, _launch_data_new_errno, _launch_data_new_fd,
- _launch_data_new_integer, _launch_data_new_machport, _launch_data_new_opaque,
- _launch_data_new_real, _launch_data_new_string, _launch_data_pack,
- _launch_data_set_bool, _launch_data_set_errno, _launch_data_set_fd,
- _launch_data_set_integer, _launch_data_set_machport, _launch_data_set_opaque,
- _launch_data_set_real, _launch_data_set_string, _launch_data_unpack,
- _launch_destroy_persona, _launch_disable_directory, _launch_enable_directory,
- _launch_extension_check_in_live_4UIKit, _launch_extension_property_bundle_id,
- _launch_extension_property_host_bundle_id, _launch_extension_property_host_pid,
- _launch_extension_property_path, _launch_extension_property_pid,
- _launch_extension_property_version, _launch_extension_property_xpc_bundle,
- _launch_get_fd, _launch_get_service_enabled, _launch_get_system_service_enabled,
- _launch_load_mounted_jetsam_properties, _launch_msg, _launch_path_for_user_service_4coresim,
- _launch_perfcheck_property_endpoint_active, _launch_perfcheck_property_endpoint_event,
- _launch_perfcheck_property_endpoint_name, _launch_perfcheck_property_endpoint_needs_activation,
- _launch_perfcheck_property_endpoints, _launch_remove_external_service,
- _launch_service_instance_copy_uuids, _launch_service_instance_create,
- _launch_service_instance_remove, _launch_service_stats_disable,
- _launch_service_stats_disable_4ppse, _launch_service_stats_enable,
- _launch_service_stats_enable_4ppse, _launch_service_stats_is_enabled,
- _launch_service_stats_is_enabled_4ppse, _launch_set_service_enabled,
- _launch_set_system_service_enabled, _launch_socket_service_check_in,
- _launch_version_for_user_service_4coresim, _launch_wait, _launchd_close,
- _launchd_fdopen, _launchd_getfd, _launchd_msg_recv, _launchd_msg_send,
- _load_launchd_jobs_at_loginwindow_prompt, _mpm_uncork_fork,
- _mpm_wait, _os_system_version_get_current_version, _os_system_version_get_ios_support_version,
- _os_system_version_sim_get_current_host_version, _os_transaction_copy_description,
- _os_transaction_create, _os_transaction_get_description, _os_transaction_get_timestamp,
- _os_transaction_needs_more_time, _place_hold_on_real_loginwindow,
- _reboot2, _reboot3, _vproc_release, _vproc_retain, _vproc_standby_begin,
- _vproc_standby_end, _vproc_swap_complex, _vproc_swap_integer,
- _vproc_swap_string, _vproc_transaction_begin, _vproc_transaction_end,
- _vprocmgr_lookup_vproc, _xpc_activity_add_eligibility_changed_handler,
- _xpc_activity_copy_criteria, _xpc_activity_copy_dispatch_queue,
- _xpc_activity_copy_identifier, _xpc_activity_debug, _xpc_activity_defer_until_network_change,
- _xpc_activity_defer_until_percentage, _xpc_activity_get_percentage,
- _xpc_activity_get_state, _xpc_activity_list, _xpc_activity_register,
- _xpc_activity_remove_eligibility_changed_handler, _xpc_activity_run,
- _xpc_activity_set_completion_status, _xpc_activity_set_criteria,
- _xpc_activity_set_network_threshold, _xpc_activity_set_state,
- _xpc_activity_should_be_data_budgeted, _xpc_activity_should_defer,
- _xpc_activity_unregister, _xpc_add_bundle, _xpc_add_bundles_for_domain,
- _xpc_array_append_value, _xpc_array_apply, _xpc_array_apply_f,
- _xpc_array_copy_mach_send, _xpc_array_create, _xpc_array_create_connection,
- _xpc_array_create_empty, _xpc_array_dup_fd, _xpc_array_get_array,
- _xpc_array_get_bool, _xpc_array_get_count, _xpc_array_get_data,
- _xpc_array_get_date, _xpc_array_get_dictionary, _xpc_array_get_double,
- _xpc_array_get_int64, _xpc_array_get_pointer, _xpc_array_get_string,
- _xpc_array_get_uint64, _xpc_array_get_uuid, _xpc_array_get_value,
- _xpc_array_set_bool, _xpc_array_set_connection, _xpc_array_set_data,
- _xpc_array_set_date, _xpc_array_set_double, _xpc_array_set_fd,
- _xpc_array_set_int64, _xpc_array_set_mach_send, _xpc_array_set_pointer,
- _xpc_array_set_string, _xpc_array_set_uint64, _xpc_array_set_uuid,
- _xpc_array_set_value, _xpc_atfork_child, _xpc_atfork_parent,
- _xpc_atfork_prepare, _xpc_binprefs_add, _xpc_binprefs_alloc,
- _xpc_binprefs_copy, _xpc_binprefs_copy_description, _xpc_binprefs_count,
- _xpc_binprefs_cpu_subtype, _xpc_binprefs_cpu_type, _xpc_binprefs_equal,
- _xpc_binprefs_init, _xpc_binprefs_is_noop, _xpc_binprefs_set_psattr,
- _xpc_bool_create, _xpc_bool_get_value, _xpc_bs_main, _xpc_bundle_copy_info_dictionary,
- _xpc_bundle_copy_normalized_cryptex_path, _xpc_bundle_copy_resource_path,
- _xpc_bundle_copy_services, _xpc_bundle_create, _xpc_bundle_create_from_origin,
- _xpc_bundle_create_main, _xpc_bundle_get_error, _xpc_bundle_get_executable_path,
- _xpc_bundle_get_info_dictionary, _xpc_bundle_get_path, _xpc_bundle_get_property,
- _xpc_bundle_get_xpcservice_dictionary, _xpc_bundle_populate,
- _xpc_bundle_resolve, _xpc_bundle_resolve_on_queue, _xpc_bundle_resolve_sync,
- _xpc_coalition_copy_info, _xpc_coalition_history_pipe_async,
- _xpc_connection_activate, _xpc_connection_cancel, _xpc_connection_copy_bundle_id,
- _xpc_connection_copy_entitlement_value, _xpc_connection_copy_invalidation_reason,
- _xpc_connection_create, _xpc_connection_create_bs_service_listener,
- _xpc_connection_create_from_endpoint, _xpc_connection_create_listener,
- _xpc_connection_create_mach_service, _xpc_connection_enable_sim2host_4sim,
- _xpc_connection_enable_termination_imminent_event, _xpc_connection_get_asid,
- _xpc_connection_get_audit_token, _xpc_connection_get_bs_type,
- _xpc_connection_get_context, _xpc_connection_get_egid, _xpc_connection_get_euid,
- _xpc_connection_get_filter_policy_id_4test, _xpc_connection_get_instance,
- _xpc_connection_get_name, _xpc_connection_get_peer_instance,
- _xpc_connection_get_pid, _xpc_connection_is_extension, _xpc_connection_kill,
- _xpc_connection_resume, _xpc_connection_send_barrier, _xpc_connection_send_message,
- _xpc_connection_send_message_with_reply, _xpc_connection_send_message_with_reply_sync,
- _xpc_connection_send_notification, _xpc_connection_set_bootstrap,
- _xpc_connection_set_bs_type, _xpc_connection_set_context,
- _xpc_connection_set_distorter, _xpc_connection_set_event_channel,
- _xpc_connection_set_event_handler, _xpc_connection_set_finalizer_f,
- _xpc_connection_set_instance, _xpc_connection_set_instance_binpref,
- _xpc_connection_set_legacy, _xpc_connection_set_non_launching,
- _xpc_connection_set_oneshot_instance, _xpc_connection_set_peer_code_signing_requirement,
- _xpc_connection_set_privileged, _xpc_connection_set_qos_class_fallback,
- _xpc_connection_set_qos_class_floor, _xpc_connection_set_target_queue,
- _xpc_connection_set_target_uid, _xpc_connection_set_target_user_session_uid,
- _xpc_connection_suspend, _xpc_copy, _xpc_copy_bootstrap, _xpc_copy_clean_description,
- _xpc_copy_code_signing_identity_for_token, _xpc_copy_debug_description,
- _xpc_copy_description, _xpc_copy_domain, _xpc_copy_entitlement_for_self,
- _xpc_copy_entitlement_for_token, _xpc_copy_entitlements_data_for_token,
- _xpc_copy_entitlements_for_pid, _xpc_copy_entitlements_for_self,
- _xpc_copy_event, _xpc_copy_event_entitlements, _xpc_copy_short_description,
- _xpc_create_from_ce_der, _xpc_create_from_ce_der_with_key,
- _xpc_create_from_plist, _xpc_create_from_plist_descriptor,
- _xpc_create_from_serialization, _xpc_create_from_serialization_with_ool,
- _xpc_create_reply_with_format, _xpc_create_reply_with_format_and_arguments,
- _xpc_create_with_format, _xpc_create_with_format_and_arguments,
- _xpc_data_create, _xpc_data_create_with_dispatch_data, _xpc_data_get_bytes,
- _xpc_data_get_bytes_ptr, _xpc_data_get_bytes_ptr_and_length,
- _xpc_data_get_inline_max, _xpc_data_get_length, _xpc_date_create,
- _xpc_date_create_absolute, _xpc_date_create_from_current,
- _xpc_date_get_value, _xpc_date_get_value_absolute, _xpc_date_is_int64_range,
- _xpc_dictionary_apply, _xpc_dictionary_apply_f, _xpc_dictionary_copy_basic_description,
- _xpc_dictionary_copy_mach_send, _xpc_dictionary_create, _xpc_dictionary_create_connection,
- _xpc_dictionary_create_empty, _xpc_dictionary_create_reply,
- _xpc_dictionary_dup_fd, _xpc_dictionary_expects_reply, _xpc_dictionary_extract_mach_recv,
- _xpc_dictionary_get_array, _xpc_dictionary_get_audit_token,
- _xpc_dictionary_get_bool, _xpc_dictionary_get_connection,
- _xpc_dictionary_get_count, _xpc_dictionary_get_data, _xpc_dictionary_get_date,
- _xpc_dictionary_get_dictionary, _xpc_dictionary_get_double,
- _xpc_dictionary_get_int64, _xpc_dictionary_get_pointer, _xpc_dictionary_get_remote_connection,
- _xpc_dictionary_get_string, _xpc_dictionary_get_uint64, _xpc_dictionary_get_uuid,
- _xpc_dictionary_get_value, _xpc_dictionary_handoff_reply,
- _xpc_dictionary_handoff_reply_f, _xpc_dictionary_send_reply,
- _xpc_dictionary_send_reply_4SWIFT, _xpc_dictionary_set_bool,
- _xpc_dictionary_set_connection, _xpc_dictionary_set_data,
- _xpc_dictionary_set_date, _xpc_dictionary_set_double, _xpc_dictionary_set_fd,
- _xpc_dictionary_set_int64, _xpc_dictionary_set_mach_recv,
- _xpc_dictionary_set_mach_send, _xpc_dictionary_set_pointer,
- _xpc_dictionary_set_string, _xpc_dictionary_set_uint64, _xpc_dictionary_set_uuid,
- _xpc_dictionary_set_value, _xpc_double_create, _xpc_double_get_value,
- _xpc_endpoint_compare, _xpc_endpoint_copy_listener_port_4sim,
- _xpc_endpoint_create, _xpc_endpoint_create_bs_named, _xpc_endpoint_create_bs_service,
- _xpc_endpoint_create_mach_port_4sim, _xpc_endpoint_get_bs_job_handle,
- _xpc_equal, _xpc_event_publisher_activate, _xpc_event_publisher_copy_event,
- _xpc_event_publisher_create, _xpc_event_publisher_fire, _xpc_event_publisher_fire_noboost,
- _xpc_event_publisher_fire_with_reply, _xpc_event_publisher_fire_with_reply_sync,
- _xpc_event_publisher_get_subscriber_asid, _xpc_event_publisher_set_error_handler,
- _xpc_event_publisher_set_event, _xpc_event_publisher_set_handler,
- _xpc_event_publisher_set_initial_load_completed_handler_4remoted,
- _xpc_event_publisher_set_subscriber_keepalive, _xpc_event_stream_check_in,
- _xpc_event_stream_check_in2, _xpc_exit_reason_get_label, _xpc_extension_type_init,
- _xpc_fd_create, _xpc_fd_dup, _xpc_file_transfer_cancel, _xpc_file_transfer_copy_io,
- _xpc_file_transfer_create_with_fd, _xpc_file_transfer_create_with_path,
- _xpc_file_transfer_get_size, _xpc_file_transfer_get_transfer_id,
- _xpc_file_transfer_send_finished, _xpc_file_transfer_set_transport_writing_callbacks,
- _xpc_file_transfer_write_finished, _xpc_file_transfer_write_to_fd,
- _xpc_file_transfer_write_to_path, _xpc_generate_audit_token,
- _xpc_get_attachment_endpoint, _xpc_get_class4NSXPC, _xpc_get_event_name,
- _xpc_get_instance, _xpc_get_type, _xpc_handle_service, _xpc_handle_subservice,
- _xpc_hash, _xpc_impersonate_user, _xpc_init_services, _xpc_inspect_copy_description,
- _xpc_inspect_copy_description_local, _xpc_inspect_copy_short_description,
- _xpc_inspect_copy_short_description_local, _xpc_install_remote_hooks,
- _xpc_int64_create, _xpc_int64_get_value, _xpc_is_kind_of_xpc_object4NSXPC,
- _xpc_is_system_session, _xpc_listener_activate, _xpc_listener_cancel,
- _xpc_listener_copy_description, _xpc_listener_create, _xpc_listener_create_anonymous,
- _xpc_listener_create_endpoint, _xpc_listener_reject_peer,
- _xpc_mach_recv_create, _xpc_mach_recv_extract_right, _xpc_mach_send_copy_right,
- _xpc_mach_send_create, _xpc_mach_send_create_with_disposition,
- _xpc_mach_send_get_right, _xpc_mach_send_once_create, _xpc_mach_send_once_extract_right,
- _xpc_main, _xpc_make_serialization, _xpc_make_serialization_with_ool,
- _xpc_null_create, _xpc_pipe_create, _xpc_pipe_create_from_port,
- _xpc_pipe_create_reply_from_port, _xpc_pipe_create_with_user_session_uid,
- _xpc_pipe_invalidate, _xpc_pipe_receive, _xpc_pipe_routine,
- _xpc_pipe_routine_async, _xpc_pipe_routine_forward, _xpc_pipe_routine_reply,
- _xpc_pipe_routine_with_flags, _xpc_pipe_simpleroutine, _xpc_pipe_try_receive,
- _xpc_pointer_create, _xpc_pointer_get_value, _xpc_receive_mach_msg,
- _xpc_receive_remote_msg, _xpc_release, _xpc_retain, _xpc_rich_error_can_retry,
- _xpc_rich_error_copy_description, _xpc_service_attach, _xpc_service_attach_with_flags,
- _xpc_service_create, _xpc_service_create_from_specifier, _xpc_service_get_rendezvous_token,
- _xpc_service_instance_dup2, _xpc_service_instance_get_context,
- _xpc_service_instance_get_host_pid, _xpc_service_instance_get_pid,
- _xpc_service_instance_get_type, _xpc_service_instance_is_configurable,
- _xpc_service_instance_run, _xpc_service_instance_set_binpref,
- _xpc_service_instance_set_context, _xpc_service_instance_set_cwd,
- _xpc_service_instance_set_endpoint, _xpc_service_instance_set_environment,
- _xpc_service_instance_set_finalizer_f, _xpc_service_instance_set_jetsam_properties,
- _xpc_service_instance_set_path, _xpc_service_instance_set_start_suspended,
- _xpc_service_kickstart, _xpc_service_kickstart_with_flags,
- _xpc_service_set_attach_handler, _xpc_session_activate, _xpc_session_cancel,
- _xpc_session_copy_description, _xpc_session_create_mach_service,
- _xpc_session_create_xpc_endpoint, _xpc_session_create_xpc_service,
- _xpc_session_send_message, _xpc_session_send_message_with_reply_async,
- _xpc_session_send_message_with_reply_sync, _xpc_session_set_cancel_handler,
- _xpc_session_set_incoming_message_handler, _xpc_session_set_target_queue,
- _xpc_session_set_target_user_session_uid, _xpc_set_event,
- _xpc_set_event_state, _xpc_set_event_stream_handler, _xpc_set_event_with_flags,
- _xpc_set_idle_handler, _xpc_shmem_create, _xpc_shmem_create_readonly,
- _xpc_shmem_get_length, _xpc_shmem_map, _xpc_strerror, _xpc_string_create,
- _xpc_string_create_no_copy, _xpc_string_create_with_format,
- _xpc_string_create_with_format_and_arguments, _xpc_string_get_length,
- _xpc_string_get_string_ptr, _xpc_test_symbols_exported, _xpc_track_activity,
- _xpc_transaction_begin, _xpc_transaction_end, _xpc_transaction_exit_clean,
- _xpc_transaction_interrupt_clean_exit, _xpc_transaction_try_exit_clean,
- _xpc_transactions_enable, _xpc_traverse_serialized_data, _xpc_type_get_name,
- _xpc_uint64_create, _xpc_uint64_get_value, _xpc_user_sessions_enabled,
- _xpc_user_sessions_get_foreground_uid, _xpc_user_sessions_get_session_uid,
- _xpc_uuid_create, _xpc_uuid_get_bytes ]
- objc-classes: [ OS_xpc_object ]
-...
diff --git a/lib/libc/glibc/LICENSES b/lib/libc/glibc/LICENSES
deleted file mode 100644
index 530893b..0000000
--- a/lib/libc/glibc/LICENSES
+++ /dev/null
@@ -1,391 +0,0 @@
-This file contains the copying permission notices for various files in the
-GNU C Library distribution that have copyright owners other than the Free
-Software Foundation. These notices all require that a copy of the notice
-be included in the accompanying documentation and be distributed with
-binary distributions of the code, so be sure to include this file along
-with any binary distributions derived from the GNU C Library.
-
-
-All code incorporated from 4.4 BSD is distributed under the following
-license:
-
-Copyright (C) 1991 Regents of the University of California.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. [This condition was removed.]
-4. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-The DNS resolver code, taken from BIND 4.9.5, is copyrighted by UC
-Berkeley, by Digital Equipment Corporation and by Internet Software
-Consortium. The DEC portions are under the following license:
-
-Portions Copyright (C) 1993 by Digital Equipment Corporation.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies, and
-that the name of Digital Equipment Corporation not be used in
-advertising or publicity pertaining to distribution of the document or
-software without specific, written prior permission.
-
-THE SOFTWARE IS PROVIDED ``AS IS'' AND DIGITAL EQUIPMENT CORP.
-DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
-DIGITAL EQUIPMENT CORPORATION BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
-FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
-NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
-WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
-
-The ISC portions are under the following license:
-
-Portions Copyright (c) 1996-1999 by Internet Software Consortium.
-
-Permission to use, copy, modify, and distribute this software for any
-purpose with or without fee is hereby granted, provided that the above
-copyright notice and this permission notice appear in all copies.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM DISCLAIMS
-ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES
-OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL INTERNET SOFTWARE
-CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL
-DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR
-PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
-ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
-SOFTWARE.
-
-The Sun RPC support (from rpcsrc-4.0) is covered by the following
-license:
-
-Copyright (c) 2010, Oracle America, Inc.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
- * Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- * Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the following
- disclaimer in the documentation and/or other materials
- provided with the distribution.
- * Neither the name of the "Oracle America, Inc." nor the names of its
- contributors may be used to endorse or promote products derived
- from this software without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
- "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
- LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
- FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
- COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
- INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
- WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-
-The following CMU license covers some of the support code for Mach,
-derived from Mach 3.0:
-
-Mach Operating System
-Copyright (C) 1991,1990,1989 Carnegie Mellon University
-All Rights Reserved.
-
-Permission to use, copy, modify and distribute this software and its
-documentation is hereby granted, provided that both the copyright
-notice and this permission notice appear in all copies of the
-software, derivative works or modified versions, and any portions
-thereof, and that both notices appear in supporting documentation.
-
-CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS ``AS IS''
-CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND FOR
-ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
-
-Carnegie Mellon requests users of this software to return to
-
- Software Distribution Coordinator
- School of Computer Science
- Carnegie Mellon University
- Pittsburgh PA 15213-3890
-
-or Software.Distribution@CS.CMU.EDU any improvements or
-extensions that they make and grant Carnegie Mellon the rights to
-redistribute these changes.
-
-The file if_ppp.h is under the following CMU license:
-
- Redistribution and use in source and binary forms, with or without
- modification, are permitted provided that the following conditions
- are met:
- 1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
- 2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
- 3. Neither the name of the University nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
- THIS SOFTWARE IS PROVIDED BY CARNEGIE MELLON UNIVERSITY AND
- CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- IN NO EVENT SHALL THE UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
- GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
- INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
- IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
- OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
- IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-The following license covers the files from Intel's "Highly Optimized
-Mathematical Functions for Itanium" collection:
-
-Intel License Agreement
-
-Copyright (c) 2000, Intel Corporation
-
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-* Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright
-notice, this list of conditions and the following disclaimer in the
-documentation and/or other materials provided with the distribution.
-
-* The name of Intel Corporation may not be used to endorse or promote
-products derived from this software without specific prior written
-permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL INTEL OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
-EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
-PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
-PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
-LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
-NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
-The files inet/getnameinfo.c and sysdeps/posix/getaddrinfo.c are copyright
-(C) by Craig Metz and are distributed under the following license:
-
-/* The Inner Net License, Version 2.00
-
- The author(s) grant permission for redistribution and use in source and
-binary forms, with or without modification, of the software and documentation
-provided that the following conditions are met:
-
-0. If you receive a version of the software that is specifically labelled
- as not being for redistribution (check the version message and/or README),
- you are not permitted to redistribute that version of the software in any
- way or form.
-1. All terms of the all other applicable copyrights and licenses must be
- followed.
-2. Redistributions of source code must retain the authors' copyright
- notice(s), this list of conditions, and the following disclaimer.
-3. Redistributions in binary form must reproduce the authors' copyright
- notice(s), this list of conditions, and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-4. [The copyright holder has authorized the removal of this clause.]
-5. Neither the name(s) of the author(s) nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY ITS AUTHORS AND CONTRIBUTORS ``AS IS'' AND ANY
-EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
-WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY
-DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
-(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
-ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-
- If these license terms cause you a real problem, contact the author. */
-
-The file sunrpc/des_impl.c is copyright Eric Young:
-
-Copyright (C) 1992 Eric Young
-Collected from libdes and modified for SECURE RPC by Martin Kuck 1994
-This file is distributed under the terms of the GNU Lesser General
-Public License, version 2.1 or later - see the file COPYING.LIB for details.
-If you did not receive a copy of the license with this program, please
-see to obtain a copy.
-
-The file inet/rcmd.c is under a UCB copyright and the following:
-
-Copyright (C) 1998 WIDE Project.
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions
-are met:
-1. Redistributions of source code must retain the above copyright
- notice, this list of conditions and the following disclaimer.
-2. Redistributions in binary form must reproduce the above copyright
- notice, this list of conditions and the following disclaimer in the
- documentation and/or other materials provided with the distribution.
-3. Neither the name of the project nor the names of its contributors
- may be used to endorse or promote products derived from this software
- without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND
-ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
-ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
-OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
-HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
-LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGE.
-
-The file posix/runtests.c is copyright Tom Lord:
-
-Copyright 1995 by Tom Lord
-
- All Rights Reserved
-
-Permission to use, copy, modify, and distribute this software and its
-documentation for any purpose and without fee is hereby granted,
-provided that the above copyright notice appear in all copies and that
-both that copyright notice and this permission notice appear in
-supporting documentation, and that the name of the copyright holder not be
-used in advertising or publicity pertaining to distribution of the
-software without specific, written prior permission.
-
-Tom Lord DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
-INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
-EVENT SHALL TOM LORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
-CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
-USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-
-The posix/rxspencer tests are copyright Henry Spencer:
-
-Copyright 1992, 1993, 1994, 1997 Henry Spencer. All rights reserved.
-This software is not subject to any license of the American Telephone
-and Telegraph Company or of the Regents of the University of California.
-
-Permission is granted to anyone to use this software for any purpose on
-any computer system, and to alter it and redistribute it, subject
-to the following restrictions:
-
-1. The author is not responsible for the consequences of use of this
- software, no matter how awful, even if they arise from flaws in it.
-
-2. The origin of this software must not be misrepresented, either by
- explicit claim or by omission. Since few users ever read sources,
- credits must appear in the documentation.
-
-3. Altered versions must be plainly marked as such, and must not be
- misrepresented as being the original software. Since few users
- ever read sources, credits must appear in the documentation.
-
-4. This notice may not be removed or altered.
-
-The file posix/PCRE.tests is copyright University of Cambridge:
-
-Copyright (c) 1997-2003 University of Cambridge
-
-Permission is granted to anyone to use this software for any purpose on any
-computer system, and to redistribute it freely, subject to the following
-restrictions:
-
-1. This software is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-
-2. The origin of this software must not be misrepresented, either by
- explicit claim or by omission. In practice, this means that if you use
- PCRE in software that you distribute to others, commercially or
- otherwise, you must put a sentence like this
-
- Regular expression support is provided by the PCRE library package,
- which is open source software, written by Philip Hazel, and copyright
- by the University of Cambridge, England.
-
- somewhere reasonably visible in your documentation and in any relevant
- files or online help data or similar. A reference to the ftp site for
- the source, that is, to
-
- ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/
-
- should also be given in the documentation. However, this condition is not
- intended to apply to whole chains of software. If package A includes PCRE,
- it must acknowledge it, but if package B is software that includes package
- A, the condition is not imposed on package B (unless it uses PCRE
- independently).
-
-3. Altered versions must be plainly marked as such, and must not be
- misrepresented as being the original software.
-
-4. If PCRE is embedded in any software that is released under the GNU
- General Purpose Licence (GPL), or Lesser General Purpose Licence (LGPL),
- then the terms of that licence shall supersede any condition above with
- which it is incompatible.
-
-Files from Sun fdlibm are copyright Sun Microsystems, Inc.:
-
-Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
-
-Developed at SunPro, a Sun Microsystems, Inc. business.
-Permission to use, copy, modify, and distribute this
-software is freely granted, provided that this notice
-is preserved.
-
-Various long double libm functions are copyright Stephen L. Moshier:
-
-Copyright 2001 by Stephen L. Moshier
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with this library; if not, see
- . */
diff --git a/lib/libc/glibc/README.md b/lib/libc/glibc/README.md
deleted file mode 100644
index 0bcf23a..0000000
--- a/lib/libc/glibc/README.md
+++ /dev/null
@@ -1,83 +0,0 @@
-# Zig GNU C Library ("glibc") Support
-
-Zig supports building binaries that will dynamically link against the
-[GNU C Library ("glibc")](https://www.gnu.org/software/libc/) when run.
-This support extends across a range of glibc versions.
-
-By default, Zig binaries will not depend on any external C library, but
-they can be linked against one with the `-lc` option. The target ABI defines
-which C library: `musl` for the [musl C library](https://musl.libc.org/) or
-`gnu` for the GNU C library.
-
-A specific GNU C library version can be chosen with an appropriate
-`-target`. For example, `-target native-native-gnu.2.19` will use the
-default CPU and OS targets, but will link in a run-time dependency on
-glibc v2.19 (or later). Use `zig env` to show the default target and
-version.
-
-Glibc symbols are defined in the `std.c.` namespace in Zig, though the
-`std.os.` namespace is generally what should be used to access C-library
-APIs in Zig code (it is defined depending on the linked C library).
-
-See `src/glibc.zig` for how Zig will build the glibc components. The
-generated shared object files are sufficient only for compile-time
-linking. They are stub libraries that only indicate that which symbols
-will be present at run-time, along with their type and size. The symbols
-do not reference an actual implementation.
-
-## Targets
-
-The GNU C Library supports a very wide set of platforms and architectures.
-The current Zig support for glibc only includes Linux.
-
-Zig supports glibc versions back to v2.17 (2012) as the Zig standard
-library depends on symbols that were introduced in 2.17.
-
-## Glibc stubs
-
-The file `lib/libc/glibc/abilist` is a Zig-specific binary blob that
-defines the supported glibc versions and the set of symbols each version
-must define. See https://github.com/ziglang/glibc-abi-tool for the
-tooling to generate this blob. The code in `glibc.zig` parses the abilist
-to build version-specific stub libraries on demand.
-
-The generated stub library is used for compile-time linking, with the
-expectation that at run-time the real glibc library will provide the
-actual symbol implementations.
-
-### Public Headers
-
-The glibc headers are in `lib/libc/include/generic-glibc/`. These are
-customized and have a couple Zig-specific `#ifdef`s to make the single set
-of headers represent any of the supported glibc versions. There are
-currently a handful of patches to these headers to represent new features
-(e.g. `reallocarray`) or changes in implementation (e.g., the `stat()`
-family of functions).
-
-The related Zig https://github.com/ziglang/universal-headers is a project
-designed to more robustly build multi-version header files suitable for
-compilation across a variety of target C library versions.
-
-## Glibc static C-Runtime object files and libraries
-
-Linking against glibc also implies linking against several, generally
-"invisible" glibc C Runtime libraries: `crti.o`, `crtn.o`, `Scrt1.o` and
-`libc_nonshared.a`. These objects are linked into generated Zig binaries
-and are not run-time linking dependencies. Generally they provide
-bootstrapping, initialization, and mapping of un-versioned public APIs to
-glibc-private versioned APIs.
-
-Like the public headers, these files contain a couple customiziations for
-Zig to be able to build for any supported glibc version. E.g., for glibc
-versions before v2.32, `libc_nonshared.a` contained stubs that directed
-the `fstat()` call to a versioned `__fxstat()` call.
-
-These files used for these objects are in `lib/libc/glibc`. See the
-`tools/update_glibc.zig` tool for updating content in here from the
-upstream glibc.
-
-# More Information
-
-See
-https://github.com/ziglang/zig/commit/2314051acaad37dd5630dd7eca08571d620d6496
-for an example commit that updates glibc (to v2.38).
diff --git a/lib/libc/glibc/abilists b/lib/libc/glibc/abilists
deleted file mode 100644
index 5e98c56..0000000
Binary files a/lib/libc/glibc/abilists and /dev/null differ
diff --git a/lib/libc/glibc/bits/byteswap.h b/lib/libc/glibc/bits/byteswap.h
deleted file mode 100644
index 456dd17..0000000
--- a/lib/libc/glibc/bits/byteswap.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/* Macros and inline functions to swap the order of bytes in integer values.
- Copyright (C) 1997-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#if !defined _BYTESWAP_H && !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use directly; include instead."
-#endif
-
-#ifndef _BITS_BYTESWAP_H
-#define _BITS_BYTESWAP_H 1
-
-#include
-#include
-
-/* Swap bytes in 16-bit value. */
-#define __bswap_constant_16(x) \
- ((__uint16_t) ((((x) >> 8) & 0xff) | (((x) & 0xff) << 8)))
-
-static __inline __uint16_t
-__bswap_16 (__uint16_t __bsx)
-{
-#if __GNUC_PREREQ (4, 8)
- return __builtin_bswap16 (__bsx);
-#else
- return __bswap_constant_16 (__bsx);
-#endif
-}
-
-/* Swap bytes in 32-bit value. */
-#define __bswap_constant_32(x) \
- ((((x) & 0xff000000u) >> 24) | (((x) & 0x00ff0000u) >> 8) \
- | (((x) & 0x0000ff00u) << 8) | (((x) & 0x000000ffu) << 24))
-
-static __inline __uint32_t
-__bswap_32 (__uint32_t __bsx)
-{
-#if __GNUC_PREREQ (4, 3)
- return __builtin_bswap32 (__bsx);
-#else
- return __bswap_constant_32 (__bsx);
-#endif
-}
-
-/* Swap bytes in 64-bit value. */
-#define __bswap_constant_64(x) \
- ((((x) & 0xff00000000000000ull) >> 56) \
- | (((x) & 0x00ff000000000000ull) >> 40) \
- | (((x) & 0x0000ff0000000000ull) >> 24) \
- | (((x) & 0x000000ff00000000ull) >> 8) \
- | (((x) & 0x00000000ff000000ull) << 8) \
- | (((x) & 0x0000000000ff0000ull) << 24) \
- | (((x) & 0x000000000000ff00ull) << 40) \
- | (((x) & 0x00000000000000ffull) << 56))
-
-__extension__ static __inline __uint64_t
-__bswap_64 (__uint64_t __bsx)
-{
-#if __GNUC_PREREQ (4, 3)
- return __builtin_bswap64 (__bsx);
-#else
- return __bswap_constant_64 (__bsx);
-#endif
-}
-
-#endif /* _BITS_BYTESWAP_H */
diff --git a/lib/libc/glibc/bits/endian.h b/lib/libc/glibc/bits/endian.h
deleted file mode 100644
index 45afd4a..0000000
--- a/lib/libc/glibc/bits/endian.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/* This file should define __BYTE_ORDER as appropriate for the machine
- in question. See string/endian.h for how to define it.
-
- If only the stub bits/endian.h applies to a particular configuration,
- bytesex.h is generated by running a program on the host machine.
- So if cross-compiling to a machine with a different byte order,
- the bits/endian.h file for that machine must exist. */
-
-#ifndef _ENDIAN_H
-# error "Never use directly; include instead."
-#endif
-
-#error Machine byte order unknown.
diff --git a/lib/libc/glibc/bits/floatn-common.h b/lib/libc/glibc/bits/floatn-common.h
deleted file mode 100644
index 23306c9..0000000
--- a/lib/libc/glibc/bits/floatn-common.h
+++ /dev/null
@@ -1,329 +0,0 @@
-/* Macros to control TS 18661-3 glibc features where the same
- definitions are appropriate for all platforms.
- Copyright (C) 2017-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_FLOATN_COMMON_H
-#define _BITS_FLOATN_COMMON_H
-
-#include
-#include
-
-/* This header should be included at the bottom of each bits/floatn.h.
- It defines the following macros for each _FloatN and _FloatNx type,
- where the same definitions, or definitions based only on the macros
- in bits/floatn.h, are appropriate for all glibc configurations. */
-
-/* Defined to 1 if the current compiler invocation provides a
- floating-point type with the right format for this type, and this
- glibc includes corresponding *fN or *fNx interfaces for it. */
-#define __HAVE_FLOAT16 0
-#define __HAVE_FLOAT32 1
-#define __HAVE_FLOAT64 1
-#define __HAVE_FLOAT32X 1
-#define __HAVE_FLOAT128X 0
-
-/* Defined to 1 if the corresponding __HAVE_ macro is 1 and the
- type is the first with its format in the sequence of (the default
- choices for) float, double, long double, _Float16, _Float32,
- _Float64, _Float128, _Float32x, _Float64x, _Float128x for this
- glibc; that is, if functions present once per floating-point format
- rather than once per type are present for this type.
-
- All configurations supported by glibc have _Float32 the same format
- as float, _Float64 and _Float32x the same format as double, the
- _Float64x the same format as either long double or _Float128. No
- configurations support _Float128x or, as of GCC 7, have compiler
- support for a type meeting the requirements for _Float128x. */
-#define __HAVE_DISTINCT_FLOAT16 __HAVE_FLOAT16
-#define __HAVE_DISTINCT_FLOAT32 0
-#define __HAVE_DISTINCT_FLOAT64 0
-#define __HAVE_DISTINCT_FLOAT32X 0
-#define __HAVE_DISTINCT_FLOAT64X 0
-#define __HAVE_DISTINCT_FLOAT128X __HAVE_FLOAT128X
-
-/* Defined to 1 if the corresponding _FloatN type is not binary compatible
- with the corresponding ISO C type in the current compilation unit as
- opposed to __HAVE_DISTINCT_FLOATN, which indicates the default types built
- in glibc. */
-#define __HAVE_FLOAT128_UNLIKE_LDBL (__HAVE_DISTINCT_FLOAT128 \
- && __LDBL_MANT_DIG__ != 113)
-
-/* Defined to 1 if any _FloatN or _FloatNx types that are not
- ABI-distinct are however distinct types at the C language level (so
- for the purposes of __builtin_types_compatible_p and _Generic). */
-#if __GNUC_PREREQ (7, 0) && !defined __cplusplus
-# define __HAVE_FLOATN_NOT_TYPEDEF 1
-#else
-# define __HAVE_FLOATN_NOT_TYPEDEF 0
-#endif
-
-#ifndef __ASSEMBLER__
-
-/* Defined to concatenate the literal suffix to be used with _FloatN
- or _FloatNx types, if __HAVE_ is 1. The corresponding
- literal suffixes exist since GCC 7, for C only. */
-# if __HAVE_FLOAT16
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-/* No corresponding suffix available for this type. */
-# define __f16(x) ((_Float16) x##f)
-# else
-# define __f16(x) x##f16
-# endif
-# endif
-
-# if __HAVE_FLOAT32
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# define __f32(x) x##f
-# else
-# define __f32(x) x##f32
-# endif
-# endif
-
-# if __HAVE_FLOAT64
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# ifdef __NO_LONG_DOUBLE_MATH
-# define __f64(x) x##l
-# else
-# define __f64(x) x
-# endif
-# else
-# define __f64(x) x##f64
-# endif
-# endif
-
-# if __HAVE_FLOAT32X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# define __f32x(x) x
-# else
-# define __f32x(x) x##f32x
-# endif
-# endif
-
-# if __HAVE_FLOAT64X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-# define __f64x(x) x##l
-# else
-# define __f64x(x) __f128 (x)
-# endif
-# else
-# define __f64x(x) x##f64x
-# endif
-# endif
-
-# if __HAVE_FLOAT128X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# error "_Float128X supported but no constant suffix"
-# else
-# define __f128x(x) x##f128x
-# endif
-# endif
-
-/* Defined to a complex type if __HAVE_ is 1. */
-# if __HAVE_FLOAT16
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef _Complex float __cfloat16 __attribute__ ((__mode__ (__HC__)));
-# define __CFLOAT16 __cfloat16
-# else
-# define __CFLOAT16 _Complex _Float16
-# endif
-# endif
-
-# if __HAVE_FLOAT32
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# define __CFLOAT32 _Complex float
-# else
-# define __CFLOAT32 _Complex _Float32
-# endif
-# endif
-
-# if __HAVE_FLOAT64
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# ifdef __NO_LONG_DOUBLE_MATH
-# define __CFLOAT64 _Complex long double
-# else
-# define __CFLOAT64 _Complex double
-# endif
-# else
-# define __CFLOAT64 _Complex _Float64
-# endif
-# endif
-
-# if __HAVE_FLOAT32X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# define __CFLOAT32X _Complex double
-# else
-# define __CFLOAT32X _Complex _Float32x
-# endif
-# endif
-
-# if __HAVE_FLOAT64X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-# define __CFLOAT64X _Complex long double
-# else
-# define __CFLOAT64X __CFLOAT128
-# endif
-# else
-# define __CFLOAT64X _Complex _Float64x
-# endif
-# endif
-
-# if __HAVE_FLOAT128X
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# error "_Float128X supported but no complex type"
-# else
-# define __CFLOAT128X _Complex _Float128x
-# endif
-# endif
-
-/* The remaining of this file provides support for older compilers. */
-# if __HAVE_FLOAT16
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef float _Float16 __attribute__ ((__mode__ (__HF__)));
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf16() ((_Float16) __builtin_huge_val ())
-# define __builtin_inff16() ((_Float16) __builtin_inf ())
-# define __builtin_nanf16(x) ((_Float16) __builtin_nan (x))
-# define __builtin_nansf16(x) ((_Float16) __builtin_nans (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT32
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef float _Float32;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf32() (__builtin_huge_valf ())
-# define __builtin_inff32() (__builtin_inff ())
-# define __builtin_nanf32(x) (__builtin_nanf (x))
-# define __builtin_nansf32(x) (__builtin_nansf (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT64
-
-/* If double, long double and _Float64 all have the same set of
- values, TS 18661-3 requires the usual arithmetic conversions on
- long double and _Float64 to produce _Float64. For this to be the
- case when building with a compiler without a distinct _Float64
- type, _Float64 must be a typedef for long double, not for
- double. */
-
-# ifdef __NO_LONG_DOUBLE_MATH
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef long double _Float64;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64() (__builtin_huge_vall ())
-# define __builtin_inff64() (__builtin_infl ())
-# define __builtin_nanf64(x) (__builtin_nanl (x))
-# define __builtin_nansf64(x) (__builtin_nansl (x))
-# endif
-
-# else
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef double _Float64;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64() (__builtin_huge_val ())
-# define __builtin_inff64() (__builtin_inf ())
-# define __builtin_nanf64(x) (__builtin_nan (x))
-# define __builtin_nansf64(x) (__builtin_nans (x))
-# endif
-
-# endif
-
-# endif
-
-# if __HAVE_FLOAT32X
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef double _Float32x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf32x() (__builtin_huge_val ())
-# define __builtin_inff32x() (__builtin_inf ())
-# define __builtin_nanf32x(x) (__builtin_nan (x))
-# define __builtin_nansf32x(x) (__builtin_nans (x))
-# endif
-
-# endif
-
-# if __HAVE_FLOAT64X
-
-# if __HAVE_FLOAT64X_LONG_DOUBLE
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef long double _Float64x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64x() (__builtin_huge_vall ())
-# define __builtin_inff64x() (__builtin_infl ())
-# define __builtin_nanf64x(x) (__builtin_nanl (x))
-# define __builtin_nansf64x(x) (__builtin_nansl (x))
-# endif
-
-# else
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-typedef _Float128 _Float64x;
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf64x() (__builtin_huge_valf128 ())
-# define __builtin_inff64x() (__builtin_inff128 ())
-# define __builtin_nanf64x(x) (__builtin_nanf128 (x))
-# define __builtin_nansf64x(x) (__builtin_nansf128 (x))
-# endif
-
-# endif
-
-# endif
-
-# if __HAVE_FLOAT128X
-
-# if !__GNUC_PREREQ (7, 0) || (defined __cplusplus && !__GNUC_PREREQ (13, 0))
-# error "_Float128x supported but no type"
-# endif
-
-# if !__GNUC_PREREQ (7, 0)
-# define __builtin_huge_valf128x() ((_Float128x) __builtin_huge_val ())
-# define __builtin_inff128x() ((_Float128x) __builtin_inf ())
-# define __builtin_nanf128x(x) ((_Float128x) __builtin_nan (x))
-# define __builtin_nansf128x(x) ((_Float128x) __builtin_nans (x))
-# endif
-
-# endif
-
-#endif /* !__ASSEMBLER__. */
-
-#endif /* _BITS_FLOATN_COMMON_H */
diff --git a/lib/libc/glibc/bits/libc-header-start.h b/lib/libc/glibc/bits/libc-header-start.h
deleted file mode 100644
index 73af2af..0000000
--- a/lib/libc/glibc/bits/libc-header-start.h
+++ /dev/null
@@ -1,110 +0,0 @@
-/* Handle feature test macros at the start of a header.
- Copyright (C) 2016-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-/* This header is internal to glibc and should not be included outside
- of glibc headers. Headers including it must define
- __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION first. This header
- cannot have multiple include guards because ISO C feature test
- macros depend on the definition of the macro when an affected
- header is included, not when the first system header is
- included. */
-
-#ifndef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-# error "Never include directly."
-#endif
-
-#undef __GLIBC_INTERNAL_STARTING_HEADER_IMPLEMENTATION
-
-#include
-
-/* ISO/IEC TR 24731-2:2010 defines the __STDC_WANT_LIB_EXT2__
- macro. */
-#undef __GLIBC_USE_LIB_EXT2
-#if (defined __USE_GNU \
- || (defined __STDC_WANT_LIB_EXT2__ && __STDC_WANT_LIB_EXT2__ > 0))
-# define __GLIBC_USE_LIB_EXT2 1
-#else
-# define __GLIBC_USE_LIB_EXT2 0
-#endif
-
-/* ISO/IEC TS 18661-1:2014 defines the __STDC_WANT_IEC_60559_BFP_EXT__
- macro. Most but not all symbols enabled by that macro in TS
- 18661-1 are enabled unconditionally in C2X. In C2X, the symbols in
- Annex F still require a new feature test macro
- __STDC_WANT_IEC_60559_EXT__ instead (C2X does not define
- __STDC_WANT_IEC_60559_BFP_EXT__), while a few features from TS
- 18661-1 are not included in C2X (and thus should depend on
- __STDC_WANT_IEC_60559_BFP_EXT__ even when C2X features are
- enabled).
-
- __GLIBC_USE (IEC_60559_BFP_EXT) controls those features from TS
- 18661-1 not included in C2X.
-
- __GLIBC_USE (IEC_60559_BFP_EXT_C2X) controls those features from TS
- 18661-1 that are also included in C2X (with no feature test macro
- required in C2X).
-
- __GLIBC_USE (IEC_60559_EXT) controls those features from TS 18661-1
- that are included in C2X but conditional on
- __STDC_WANT_IEC_60559_EXT__. (There are currently no features
- conditional on __STDC_WANT_IEC_60559_EXT__ that are not in TS
- 18661-1.) */
-#undef __GLIBC_USE_IEC_60559_BFP_EXT
-#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_BFP_EXT__
-# define __GLIBC_USE_IEC_60559_BFP_EXT 1
-#else
-# define __GLIBC_USE_IEC_60559_BFP_EXT 0
-#endif
-#undef __GLIBC_USE_IEC_60559_BFP_EXT_C2X
-#if __GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X)
-# define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 1
-#else
-# define __GLIBC_USE_IEC_60559_BFP_EXT_C2X 0
-#endif
-#undef __GLIBC_USE_IEC_60559_EXT
-#if __GLIBC_USE (IEC_60559_BFP_EXT) || defined __STDC_WANT_IEC_60559_EXT__
-# define __GLIBC_USE_IEC_60559_EXT 1
-#else
-# define __GLIBC_USE_IEC_60559_EXT 0
-#endif
-
-/* ISO/IEC TS 18661-4:2015 defines the
- __STDC_WANT_IEC_60559_FUNCS_EXT__ macro. Other than the reduction
- functions, the symbols from this TS are enabled unconditionally in
- C2X. */
-#undef __GLIBC_USE_IEC_60559_FUNCS_EXT
-#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_FUNCS_EXT__
-# define __GLIBC_USE_IEC_60559_FUNCS_EXT 1
-#else
-# define __GLIBC_USE_IEC_60559_FUNCS_EXT 0
-#endif
-#undef __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X
-#if __GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X)
-# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 1
-#else
-# define __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X 0
-#endif
-
-/* ISO/IEC TS 18661-3:2015 defines the
- __STDC_WANT_IEC_60559_TYPES_EXT__ macro. */
-#undef __GLIBC_USE_IEC_60559_TYPES_EXT
-#if defined __USE_GNU || defined __STDC_WANT_IEC_60559_TYPES_EXT__
-# define __GLIBC_USE_IEC_60559_TYPES_EXT 1
-#else
-# define __GLIBC_USE_IEC_60559_TYPES_EXT 0
-#endif
diff --git a/lib/libc/glibc/bits/long-double.h b/lib/libc/glibc/bits/long-double.h
deleted file mode 100644
index 74edf3b..0000000
--- a/lib/libc/glibc/bits/long-double.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/* Properties of long double type.
- Copyright (C) 2016-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-/* This header is included by .
-
- If long double is ABI-compatible with double, it should define
- __NO_LONG_DOUBLE_MATH to 1; otherwise, it should leave
- __NO_LONG_DOUBLE_MATH undefined.
-
- If this build of the GNU C Library supports both long double
- ABI-compatible with double and some other long double format not
- ABI-compatible with double, it should define
- __LONG_DOUBLE_MATH_OPTIONAL to 1; otherwise, it should leave
- __LONG_DOUBLE_MATH_OPTIONAL undefined.
-
- If __NO_LONG_DOUBLE_MATH is already defined, this header must not
- define anything; this is needed to work with the definition of
- __NO_LONG_DOUBLE_MATH in nldbl-compat.h. */
-
-/* In the default version of this header, long double is
- ABI-compatible with double. */
-#ifndef __NO_LONG_DOUBLE_MATH
-# define __NO_LONG_DOUBLE_MATH 1
-#endif
-
-/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
- choice of the underlying ABI of long double. It will always assume
- a constant value for each translation unit.
-
- If the value is non-zero, any API which is parameterized by the long
- double type (i.e the scanf/printf family of functions or the explicitly
- parameterized math.h functions) will be redirected to a compatible
- implementation using _Float128 ABI via symbols suffixed with ieee128.
-
- The mechanism this macro uses to acquire may be a function
- of architecture, or target specific options used to invoke the
- compiler. */
-#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
diff --git a/lib/libc/glibc/bits/pthreadtypes.h b/lib/libc/glibc/bits/pthreadtypes.h
deleted file mode 100644
index 0e26952..0000000
--- a/lib/libc/glibc/bits/pthreadtypes.h
+++ /dev/null
@@ -1 +0,0 @@
-/* No thread support. */
diff --git a/lib/libc/glibc/bits/select.h b/lib/libc/glibc/bits/select.h
deleted file mode 100644
index 061d67f..0000000
--- a/lib/libc/glibc/bits/select.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/* Copyright (C) 1997-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _SYS_SELECT_H
-# error "Never use directly; include instead."
-#endif
-
-
-/* We don't use `memset' because this would require a prototype and
- the array isn't too big. */
-#define __FD_ZERO(s) \
- do { \
- unsigned int __i; \
- fd_set *__arr = (s); \
- for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
- __FDS_BITS (__arr)[__i] = 0; \
- } while (0)
-#define __FD_SET(d, s) \
- ((void) (__FDS_BITS (s)[__FD_ELT(d)] |= __FD_MASK(d)))
-#define __FD_CLR(d, s) \
- ((void) (__FDS_BITS (s)[__FD_ELT(d)] &= ~__FD_MASK(d)))
-#define __FD_ISSET(d, s) \
- ((__FDS_BITS (s)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
diff --git a/lib/libc/glibc/bits/signum-generic.h b/lib/libc/glibc/bits/signum-generic.h
deleted file mode 100644
index e01b4dc..0000000
--- a/lib/libc/glibc/bits/signum-generic.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/* Signal number constants. Generic template.
- Copyright (C) 1991-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_SIGNUM_GENERIC_H
-#define _BITS_SIGNUM_GENERIC_H 1
-
-#ifndef _SIGNAL_H
-#error "Never include directly; use instead."
-#endif
-
-/* Fake signal functions. */
-
-#define SIG_ERR ((__sighandler_t) -1) /* Error return. */
-#define SIG_DFL ((__sighandler_t) 0) /* Default action. */
-#define SIG_IGN ((__sighandler_t) 1) /* Ignore signal. */
-
-#ifdef __USE_XOPEN
-# define SIG_HOLD ((__sighandler_t) 2) /* Add signal to hold mask. */
-#endif
-
-/* We define here all the signal names listed in POSIX (1003.1-2008);
- as of 1003.1-2013, no additional signals have been added by POSIX.
- We also define here signal names that historically exist in every
- real-world POSIX variant (e.g. SIGWINCH).
-
- Signals in the 1-15 range are defined with their historical numbers.
- For other signals, we use the BSD numbers.
- There are two unallocated signal numbers in the 1-31 range: 7 and 29.
- Signal number 0 is reserved for use as kill(pid, 0), to test whether
- a process exists without sending it a signal. */
-
-/* ISO C99 signals. */
-#define SIGINT 2 /* Interactive attention signal. */
-#define SIGILL 4 /* Illegal instruction. */
-#define SIGABRT 6 /* Abnormal termination. */
-#define SIGFPE 8 /* Erroneous arithmetic operation. */
-#define SIGSEGV 11 /* Invalid access to storage. */
-#define SIGTERM 15 /* Termination request. */
-
-/* Historical signals specified by POSIX. */
-#define SIGHUP 1 /* Hangup. */
-#define SIGQUIT 3 /* Quit. */
-#define SIGTRAP 5 /* Trace/breakpoint trap. */
-#define SIGKILL 9 /* Killed. */
-#define SIGPIPE 13 /* Broken pipe. */
-#define SIGALRM 14 /* Alarm clock. */
-
-/* Archaic names for compatibility. */
-#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
-#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
-#define SIGCLD SIGCHLD /* Old System V name */
-
-/* Not all systems support real-time signals. bits/signum.h indicates
- that they are supported by overriding __SIGRTMAX to a value greater
- than __SIGRTMIN. These constants give the kernel-level hard limits,
- but some real-time signals may be used internally by glibc. Do not
- use these constants in application code; use SIGRTMIN and SIGRTMAX
- (defined in signal.h) instead. */
-
-/* Include system specific bits. */
-#include
-
-/* Biggest signal number + 1 (including real-time signals). */
-#define _NSIG (__SIGRTMAX + 1)
-
-#endif /* bits/signum-generic.h. */
diff --git a/lib/libc/glibc/bits/stat.h b/lib/libc/glibc/bits/stat.h
deleted file mode 100644
index 8a6ca29..0000000
--- a/lib/libc/glibc/bits/stat.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/* Copyright (C) 1992-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#if !defined _SYS_STAT_H && !defined _FCNTL_H
-# error "Never include directly; use instead."
-#endif
-
-#ifndef _BITS_STAT_H
-#define _BITS_STAT_H 1
-
-/* This structure needs to be defined in accordance with the
- implementation of __stat, __fstat, and __lstat. */
-
-#include
-
-/* Structure describing file characteristics. */
-struct stat
- {
- /* These are the members that POSIX.1 requires. */
-
- __mode_t st_mode; /* File mode. */
-#ifndef __USE_FILE_OFFSET64
- __ino_t st_ino; /* File serial number. */
-#else
- __ino64_t st_ino; /* File serial number. */
-#endif
- __dev_t st_dev; /* Device containing the file. */
- __nlink_t st_nlink; /* Link count. */
-
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group. */
-#ifndef __USE_FILE_OFFSET64
- __off_t st_size; /* Size of file, in bytes. */
-#else
- __off64_t st_size; /* Size of file, in bytes. */
-#endif
-
- __time_t st_atime; /* Time of last access. */
- __time_t st_mtime; /* Time of last modification. */
- __time_t st_ctime; /* Time of last status change. */
-
- /* This should be defined if there is a `st_blksize' member. */
-#undef _STATBUF_ST_BLKSIZE
- };
-
-/* Encoding of the file mode. These are the standard Unix values,
- but POSIX.1 does not specify what values should be used. */
-
-#define __S_IFMT 0170000 /* These bits determine file type. */
-
-/* File types. */
-#define __S_IFDIR 0040000 /* Directory. */
-#define __S_IFCHR 0020000 /* Character device. */
-#define __S_IFBLK 0060000 /* Block device. */
-#define __S_IFREG 0100000 /* Regular file. */
-#define __S_IFIFO 0010000 /* FIFO. */
-
-/* POSIX.1b objects. */
-#define __S_TYPEISMQ(buf) 0
-#define __S_TYPEISSEM(buf) 0
-#define __S_TYPEISSHM(buf) 0
-
-/* Protection bits. */
-
-#define __S_ISUID 04000 /* Set user ID on execution. */
-#define __S_ISGID 02000 /* Set group ID on execution. */
-#define __S_IREAD 0400 /* Read by owner. */
-#define __S_IWRITE 0200 /* Write by owner. */
-#define __S_IEXEC 0100 /* Execute by owner. */
-
-#ifdef __USE_LARGEFILE64
-struct stat64
- {
- __mode_t st_mode; /* File mode. */
- __ino64_t st_ino; /* File serial number. */
- __dev_t st_dev; /* Device. */
- __nlink_t st_nlink; /* Link count. */
-
- __uid_t st_uid; /* User ID of the file's owner. */
- __gid_t st_gid; /* Group ID of the file's group.*/
- __off64_t st_size; /* Size of file, in bytes. */
-
- __time_t st_atime; /* Time of last access. */
- __time_t st_mtime; /* Time of last modification. */
- __time_t st_ctime; /* Time of last status change. */
- };
-#endif
-
-#endif /* bits/stat.h */
diff --git a/lib/libc/glibc/bits/stdint-intn.h b/lib/libc/glibc/bits/stdint-intn.h
deleted file mode 100644
index 3d943a8..0000000
--- a/lib/libc/glibc/bits/stdint-intn.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/* Define intN_t types.
- Copyright (C) 2017-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_STDINT_INTN_H
-#define _BITS_STDINT_INTN_H 1
-
-#include
-
-typedef __int8_t int8_t;
-typedef __int16_t int16_t;
-typedef __int32_t int32_t;
-typedef __int64_t int64_t;
-
-#endif /* bits/stdint-intn.h */
diff --git a/lib/libc/glibc/bits/stdlib-bsearch.h b/lib/libc/glibc/bits/stdlib-bsearch.h
deleted file mode 100644
index 4dcf90c..0000000
--- a/lib/libc/glibc/bits/stdlib-bsearch.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/* Perform binary search - inline version.
- Copyright (C) 1991-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-__extern_inline void *
-bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
- __compar_fn_t __compar)
-{
- size_t __l, __u, __idx;
- const void *__p;
- int __comparison;
-
- __l = 0;
- __u = __nmemb;
- while (__l < __u)
- {
- __idx = (__l + __u) / 2;
- __p = (const void *) (((const char *) __base) + (__idx * __size));
- __comparison = (*__compar) (__key, __p);
- if (__comparison < 0)
- __u = __idx;
- else if (__comparison > 0)
- __l = __idx + 1;
- else
- {
-#if __GNUC_PREREQ(4, 6)
-# pragma GCC diagnostic push
-# pragma GCC diagnostic ignored "-Wcast-qual"
-#endif
- return (void *) __p;
-#if __GNUC_PREREQ(4, 6)
-# pragma GCC diagnostic pop
-#endif
- }
- }
-
- return NULL;
-}
diff --git a/lib/libc/glibc/bits/time64.h b/lib/libc/glibc/bits/time64.h
deleted file mode 100644
index 723db1e..0000000
--- a/lib/libc/glibc/bits/time64.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/* bits/time64.h -- underlying types for __time64_t. Generic version.
- Copyright (C) 2018-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_TYPES_H
-# error "Never include directly; use instead."
-#endif
-
-#ifndef _BITS_TIME64_H
-#define _BITS_TIME64_H 1
-
-/* Define __TIME64_T_TYPE so that it is always a 64-bit type. */
-
-#if __TIMESIZE == 64
-/* If we already have 64-bit time type then use it. */
-# define __TIME64_T_TYPE __TIME_T_TYPE
-#else
-/* Define a 64-bit time type alongsize the 32-bit one. */
-# define __TIME64_T_TYPE __SQUAD_TYPE
-#endif
-
-#endif /* bits/time64.h */
diff --git a/lib/libc/glibc/bits/timesize.h b/lib/libc/glibc/bits/timesize.h
deleted file mode 100644
index 700653a..0000000
--- a/lib/libc/glibc/bits/timesize.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/* Bit size of the time_t type at glibc build time, general case.
- Copyright (C) 2018-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-/* Size in bits of the 'time_t' type of the default ABI. */
-#define __TIMESIZE 64
diff --git a/lib/libc/glibc/bits/types/__sigset_t.h b/lib/libc/glibc/bits/types/__sigset_t.h
deleted file mode 100644
index c90d760..0000000
--- a/lib/libc/glibc/bits/types/__sigset_t.h
+++ /dev/null
@@ -1,7 +0,0 @@
-#ifndef ____sigset_t_defined
-#define ____sigset_t_defined 1
-
-/* A `sigset_t' has a bit for each signal. */
-typedef unsigned long int __sigset_t;
-
-#endif
diff --git a/lib/libc/glibc/bits/types/struct_sched_param.h b/lib/libc/glibc/bits/types/struct_sched_param.h
deleted file mode 100644
index 7b08044..0000000
--- a/lib/libc/glibc/bits/types/struct_sched_param.h
+++ /dev/null
@@ -1,28 +0,0 @@
-/* Sched parameter structure. Generic version.
- Copyright (C) 1996-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_TYPES_STRUCT_SCHED_PARAM
-#define _BITS_TYPES_STRUCT_SCHED_PARAM 1
-
-/* Data structure to describe a process' schedulability. */
-struct sched_param
-{
- int sched_priority;
-};
-
-#endif /* bits/types/struct_sched_param.h */
diff --git a/lib/libc/glibc/bits/typesizes.h b/lib/libc/glibc/bits/typesizes.h
deleted file mode 100644
index 5dd1700..0000000
--- a/lib/libc/glibc/bits/typesizes.h
+++ /dev/null
@@ -1,95 +0,0 @@
-/* bits/typesizes.h -- underlying types for *_t. Generic version.
- Copyright (C) 2002-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _BITS_TYPES_H
-# error "Never include directly; use instead."
-#endif
-
-#ifndef _BITS_TYPESIZES_H
-#define _BITS_TYPESIZES_H 1
-
-/* See for the meaning of these macros. This file exists so
- that need not vary across different GNU platforms. */
-
-#define __DEV_T_TYPE __UQUAD_TYPE
-#define __UID_T_TYPE __U32_TYPE
-#define __GID_T_TYPE __U32_TYPE
-#define __INO_T_TYPE __ULONGWORD_TYPE
-#define __INO64_T_TYPE __UQUAD_TYPE
-#define __MODE_T_TYPE __U32_TYPE
-#define __NLINK_T_TYPE __UWORD_TYPE
-#define __OFF_T_TYPE __SLONGWORD_TYPE
-#define __OFF64_T_TYPE __SQUAD_TYPE
-#define __PID_T_TYPE __S32_TYPE
-#define __RLIM_T_TYPE __ULONGWORD_TYPE
-#define __RLIM64_T_TYPE __UQUAD_TYPE
-#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
-#define __BLKCNT64_T_TYPE __SQUAD_TYPE
-#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
-#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
-#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
-#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
-#define __FSWORD_T_TYPE __SWORD_TYPE
-#define __ID_T_TYPE __U32_TYPE
-#define __CLOCK_T_TYPE __SLONGWORD_TYPE
-#define __TIME_T_TYPE __SLONGWORD_TYPE
-#define __USECONDS_T_TYPE __U32_TYPE
-#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
-#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
-#define __DADDR_T_TYPE __S32_TYPE
-#define __KEY_T_TYPE __S32_TYPE
-#define __CLOCKID_T_TYPE __S32_TYPE
-#define __TIMER_T_TYPE void *
-#define __BLKSIZE_T_TYPE __SLONGWORD_TYPE
-#define __FSID_T_TYPE struct { int __val[2]; }
-#define __SSIZE_T_TYPE __SWORD_TYPE
-#define __SYSCALL_SLONG_TYPE __SLONGWORD_TYPE
-#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
-#define __CPU_MASK_TYPE __ULONGWORD_TYPE
-
-#ifdef __LP64__
-/* Tell the libc code that off_t and off64_t are actually the same type
- for all ABI purposes, even if possibly expressed as different base types
- for C type-checking purposes. */
-# define __OFF_T_MATCHES_OFF64_T 1
-
-/* Same for ino_t and ino64_t. */
-# define __INO_T_MATCHES_INO64_T 1
-
-/* And for rlim_t and rlim64_t. */
-# define __RLIM_T_MATCHES_RLIM64_T 1
-
-/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
-# define __STATFS_MATCHES_STATFS64 1
-
-/* And for getitimer, setitimer and rusage */
-# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
-#else
-# define __RLIM_T_MATCHES_RLIM64_T 0
-
-# define __STATFS_MATCHES_STATFS64 0
-
-/* And for getitimer, setitimer and rusage */
-# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
-#endif
-
-/* Number of descriptors that can fit in an `fd_set'. */
-#define __FD_SETSIZE 1024
-
-
-#endif /* bits/typesizes.h */
diff --git a/lib/libc/glibc/bits/uintn-identity.h b/lib/libc/glibc/bits/uintn-identity.h
deleted file mode 100644
index c2d523c..0000000
--- a/lib/libc/glibc/bits/uintn-identity.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/* Inline functions to return unsigned integer values unchanged.
- Copyright (C) 2017-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#if !defined _NETINET_IN_H && !defined _ENDIAN_H
-# error "Never use directly; include or instead."
-#endif
-
-#ifndef _BITS_UINTN_IDENTITY_H
-#define _BITS_UINTN_IDENTITY_H 1
-
-#include
-
-/* These inline functions are to ensure the appropriate type
- conversions and associated diagnostics from macros that convert to
- a given endianness. */
-
-static __inline __uint16_t
-__uint16_identity (__uint16_t __x)
-{
- return __x;
-}
-
-static __inline __uint32_t
-__uint32_identity (__uint32_t __x)
-{
- return __x;
-}
-
-static __inline __uint64_t
-__uint64_identity (__uint64_t __x)
-{
- return __x;
-}
-
-#endif /* _BITS_UINTN_IDENTITY_H. */
diff --git a/lib/libc/glibc/bits/waitflags.h b/lib/libc/glibc/bits/waitflags.h
deleted file mode 100644
index 291a271..0000000
--- a/lib/libc/glibc/bits/waitflags.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/* Definitions of flag bits for `waitpid' et al.
- Copyright (C) 1992-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#if !defined _SYS_WAIT_H && !defined _STDLIB_H
-# error "Never include directly; use instead."
-#endif
-
-
-/* Bits in the third argument to `waitpid'. */
-#define WNOHANG 1 /* Don't block waiting. */
-#define WUNTRACED 2 /* Report status of stopped children. */
-
-/* Bits in the fourth argument to `waitid'. */
-#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8
-# define WSTOPPED WUNTRACED /* Report stopped child. */
-# define WCONTINUED 4 /* Report continued child. */
-# define WNOWAIT 8 /* Don't reap, just poll status. */
-# define WEXITED 16 /* Report dead child. */
-#endif
diff --git a/lib/libc/glibc/bits/waitstatus.h b/lib/libc/glibc/bits/waitstatus.h
deleted file mode 100644
index ec7c076..0000000
--- a/lib/libc/glibc/bits/waitstatus.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/* Definitions of status bits for `wait' et al.
- Copyright (C) 1992-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#if !defined _SYS_WAIT_H && !defined _STDLIB_H
-# error "Never include directly; use instead."
-#endif
-
-
-/* Everything extant so far uses these same bits. */
-
-
-/* If WIFEXITED(STATUS), the low-order 8 bits of the status. */
-#define __WEXITSTATUS(status) (((status) & 0xff00) >> 8)
-
-/* If WIFSIGNALED(STATUS), the terminating signal. */
-#define __WTERMSIG(status) ((status) & 0x7f)
-
-/* If WIFSTOPPED(STATUS), the signal that stopped the child. */
-#define __WSTOPSIG(status) __WEXITSTATUS(status)
-
-/* Nonzero if STATUS indicates normal termination. */
-#define __WIFEXITED(status) (__WTERMSIG(status) == 0)
-
-/* Nonzero if STATUS indicates termination by a signal. */
-#define __WIFSIGNALED(status) \
- (((signed char) (((status) & 0x7f) + 1) >> 1) > 0)
-
-/* Nonzero if STATUS indicates the child is stopped. */
-#define __WIFSTOPPED(status) (((status) & 0xff) == 0x7f)
-
-/* Nonzero if STATUS indicates the child continued after a stop. We only
- define this if provides the WCONTINUED flag bit. */
-#ifdef WCONTINUED
-# define __WIFCONTINUED(status) ((status) == __W_CONTINUED)
-#endif
-
-/* Nonzero if STATUS indicates the child dumped core. */
-#define __WCOREDUMP(status) ((status) & __WCOREFLAG)
-
-/* Macros for constructing status values. */
-#define __W_EXITCODE(ret, sig) ((ret) << 8 | (sig))
-#define __W_STOPCODE(sig) ((sig) << 8 | 0x7f)
-#define __W_CONTINUED 0xffff
-#define __WCOREFLAG 0x80
diff --git a/lib/libc/glibc/csu/abi-note.S b/lib/libc/glibc/csu/abi-note.S
deleted file mode 100644
index 2b4b5f8..0000000
--- a/lib/libc/glibc/csu/abi-note.S
+++ /dev/null
@@ -1,72 +0,0 @@
-/* Special .init and .fini section support.
- Copyright (C) 1997-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-/* Define an ELF note identifying the operating-system ABI that the
- executable was created for. The ELF note information identifies a
- particular OS or coordinated development effort within which the
- ELF header's e_machine value plus (for dynamically linked programs)
- the PT_INTERP dynamic linker name and DT_NEEDED shared library
- names fully identify the runtime environment required by an
- executable.
-
- The general format of ELF notes is as follows.
- Offsets and lengths are bytes or (parenthetical references) to the
- values in other fields.
-
-offset length contents
-0 4 length of name
-4 4 length of data
-8 4 note type
-12 (0) vendor name
- - null-terminated ASCII string, padded to 4-byte alignment
-12+(0) (4) note data,
-
- The GNU project and cooperating development efforts (including the
- Linux community) use note type 1 and a vendor name string of "GNU"
- for a note descriptor that indicates ABI requirements. The note data
- is four 32-bit words. The first of these is an operating system
- number (0=Linux, 1=Hurd, 2=Solaris, ...) and the remaining three
- identify the earliest release of that OS that supports this ABI.
- See abi-tags (top level) for details. */
-
-#include
-#include /* OS-specific ABI tag value */
-
-/* The linker (GNU ld 2.8 and later) recognizes an allocated section whose
- name begins with `.note' and creates a PT_NOTE program header entry
- pointing at it. */
-
- .section ".note.ABI-tag", "a"
- .p2align 2
- .long 1f - 0f /* name length */
- .long 3f - 2f /* data length */
- .long 1 /* note type */
-0: .asciz "GNU" /* vendor name */
-1: .p2align 2
-2: .long __ABI_TAG_OS /* note data: the ABI tag */
- .long __ABI_TAG_VERSION
-3: .p2align 2 /* pad out section */
diff --git a/lib/libc/glibc/csu/abi-tag.h b/lib/libc/glibc/csu/abi-tag.h
deleted file mode 100644
index 85db374..0000000
--- a/lib/libc/glibc/csu/abi-tag.h
+++ /dev/null
@@ -1,4 +0,0 @@
-#define __ABI_TAG_OS 0
-#ifndef __ABI_TAG_VERSION
-# define __ABI_TAG_VERSION 2,0,0
-#endif
diff --git a/lib/libc/glibc/csu/elf-init-2.33.c b/lib/libc/glibc/csu/elf-init-2.33.c
deleted file mode 100644
index b713c8b..0000000
--- a/lib/libc/glibc/csu/elf-init-2.33.c
+++ /dev/null
@@ -1,106 +0,0 @@
-/* Startup support for ELF initializers/finalizers in the main executable.
- Copyright (C) 2002-2020 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#include
-
-
-/* These magic symbols are provided by the linker. */
-extern void (*__preinit_array_start []) (int, char **, char **)
- attribute_hidden;
-extern void (*__preinit_array_end []) (int, char **, char **)
- attribute_hidden;
-extern void (*__init_array_start []) (int, char **, char **)
- attribute_hidden;
-extern void (*__init_array_end []) (int, char **, char **)
- attribute_hidden;
-extern void (*__fini_array_start []) (void) attribute_hidden;
-extern void (*__fini_array_end []) (void) attribute_hidden;
-
-
-#ifndef NO_INITFINI
-/* These function symbols are provided for the .init/.fini section entry
- points automagically by the linker. */
-extern void _init (void);
-extern void _fini (void);
-#endif
-
-
-/* These functions are passed to __libc_start_main by the startup code.
- These get statically linked into each program. For dynamically linked
- programs, this module will come from libc_nonshared.a and differs from
- the libc.a module in that it doesn't call the preinit array. */
-
-
-void
-__libc_csu_init (int argc, char **argv, char **envp)
-{
- /* For dynamically linked executables the preinit array is executed by
- the dynamic linker (before initializing any shared object). */
-
-#ifndef LIBC_NONSHARED
- /* For static executables, preinit happens right before init. */
- {
- const size_t size = __preinit_array_end - __preinit_array_start;
- size_t i;
- for (i = 0; i < size; i++)
- (*__preinit_array_start [i]) (argc, argv, envp);
- }
-#endif
-
-#ifndef NO_INITFINI
- _init ();
-#endif
-
- const size_t size = __init_array_end - __init_array_start;
- for (size_t i = 0; i < size; i++)
- (*__init_array_start [i]) (argc, argv, envp);
-}
-
-/* This function should not be used anymore. We run the executable's
- destructor now just like any other. We cannot remove the function,
- though. */
-void
-__libc_csu_fini (void)
-{
-#ifndef LIBC_NONSHARED
- size_t i = __fini_array_end - __fini_array_start;
- while (i-- > 0)
- (*__fini_array_start [i]) ();
-
-# ifndef NO_INITFINI
- _fini ();
-# endif
-#endif
-}
diff --git a/lib/libc/glibc/csu/errno.c b/lib/libc/glibc/csu/errno.c
deleted file mode 100644
index 34f4906..0000000
--- a/lib/libc/glibc/csu/errno.c
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Definition of `errno' variable. Canonical version.
- Copyright (C) 2002-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#include
-#include
-#include
-#undef errno
-
-#if RTLD_PRIVATE_ERRNO
-
-/* Code compiled for rtld refers only to this name. */
-int rtld_errno attribute_hidden;
-
-#else
-
-__thread int errno;
-extern __thread int __libc_errno __attribute__ ((alias ("errno")))
- attribute_hidden;
-
-#endif
diff --git a/lib/libc/glibc/debug/stack_chk_fail_local.c b/lib/libc/glibc/debug/stack_chk_fail_local.c
deleted file mode 100644
index 68b6908..0000000
--- a/lib/libc/glibc/debug/stack_chk_fail_local.c
+++ /dev/null
@@ -1,46 +0,0 @@
-/* Copyright (C) 2005-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- In addition to the permissions in the GNU Lesser General Public
- License, the Free Software Foundation gives you unlimited
- permission to link the compiled version of this file with other
- programs, and to distribute those programs without any restriction
- coming from the use of this file. (The GNU Lesser General Public
- License restrictions do apply in other respects; for example, they
- cover modification of the file, and distribution when not linked
- into another program.)
-
- Note that people who make modified versions of this file are not
- obligated to grant this special exception for their modified
- versions; it is their choice whether to do so. The GNU Lesser
- General Public License gives permission to release a modified
- version without this exception; this exception also makes it
- possible to release a modified version which carries forward this
- exception.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#include
-
-extern void __stack_chk_fail (void) __attribute__ ((noreturn));
-
-/* On some architectures, this helps needless PIC pointer setup
- that would be needed just for the __stack_chk_fail call. */
-
-void __attribute__ ((noreturn)) attribute_hidden
-__stack_chk_fail_local (void)
-{
- __stack_chk_fail ();
-}
diff --git a/lib/libc/glibc/elf/elf.h b/lib/libc/glibc/elf/elf.h
deleted file mode 100644
index 89fc802..0000000
--- a/lib/libc/glibc/elf/elf.h
+++ /dev/null
@@ -1,4334 +0,0 @@
-/* This file defines standard ELF types, structures, and macros.
- Copyright (C) 1995-2023 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
-
- The GNU C Library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Lesser General Public
- License as published by the Free Software Foundation; either
- version 2.1 of the License, or (at your option) any later version.
-
- The GNU C Library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Lesser General Public License for more details.
-
- You should have received a copy of the GNU Lesser General Public
- License along with the GNU C Library; if not, see
- . */
-
-#ifndef _ELF_H
-#define _ELF_H 1
-
-/* Standard ELF types. */
-
-#include
-
-/* Type for a 16-bit quantity. */
-typedef uint16_t Elf32_Half;
-typedef uint16_t Elf64_Half;
-
-/* Types for signed and unsigned 32-bit quantities. */
-typedef uint32_t Elf32_Word;
-typedef int32_t Elf32_Sword;
-typedef uint32_t Elf64_Word;
-typedef int32_t Elf64_Sword;
-
-/* Types for signed and unsigned 64-bit quantities. */
-typedef uint64_t Elf32_Xword;
-typedef int64_t Elf32_Sxword;
-typedef uint64_t Elf64_Xword;
-typedef int64_t Elf64_Sxword;
-
-/* Type of addresses. */
-typedef uint32_t Elf32_Addr;
-typedef uint64_t Elf64_Addr;
-
-/* Type of file offsets. */
-typedef uint32_t Elf32_Off;
-typedef uint64_t Elf64_Off;
-
-/* Type for section indices, which are 16-bit quantities. */
-typedef uint16_t Elf32_Section;
-typedef uint16_t Elf64_Section;
-
-/* Type for version symbol information. */
-typedef Elf32_Half Elf32_Versym;
-typedef Elf64_Half Elf64_Versym;
-
-
-/* The ELF file header. This appears at the start of every ELF file. */
-
-#define EI_NIDENT (16)
-
-typedef struct
-{
- unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */
- Elf32_Half e_type; /* Object file type */
- Elf32_Half e_machine; /* Architecture */
- Elf32_Word e_version; /* Object file version */
- Elf32_Addr e_entry; /* Entry point virtual address */
- Elf32_Off e_phoff; /* Program header table file offset */
- Elf32_Off e_shoff; /* Section header table file offset */
- Elf32_Word e_flags; /* Processor-specific flags */
- Elf32_Half e_ehsize; /* ELF header size in bytes */
- Elf32_Half e_phentsize; /* Program header table entry size */
- Elf32_Half e_phnum; /* Program header table entry count */
- Elf32_Half e_shentsize; /* Section header table entry size */
- Elf32_Half e_shnum; /* Section header table entry count */
- Elf32_Half e_shstrndx; /* Section header string table index */
-} Elf32_Ehdr;
-
-typedef struct
-{
- unsigned char e_ident[EI_NIDENT]; /* Magic number and other info */
- Elf64_Half e_type; /* Object file type */
- Elf64_Half e_machine; /* Architecture */
- Elf64_Word e_version; /* Object file version */
- Elf64_Addr e_entry; /* Entry point virtual address */
- Elf64_Off e_phoff; /* Program header table file offset */
- Elf64_Off e_shoff; /* Section header table file offset */
- Elf64_Word e_flags; /* Processor-specific flags */
- Elf64_Half e_ehsize; /* ELF header size in bytes */
- Elf64_Half e_phentsize; /* Program header table entry size */
- Elf64_Half e_phnum; /* Program header table entry count */
- Elf64_Half e_shentsize; /* Section header table entry size */
- Elf64_Half e_shnum; /* Section header table entry count */
- Elf64_Half e_shstrndx; /* Section header string table index */
-} Elf64_Ehdr;
-
-/* Fields in the e_ident array. The EI_* macros are indices into the
- array. The macros under each EI_* macro are the values the byte
- may have. */
-
-#define EI_MAG0 0 /* File identification byte 0 index */
-#define ELFMAG0 0x7f /* Magic number byte 0 */
-
-#define EI_MAG1 1 /* File identification byte 1 index */
-#define ELFMAG1 'E' /* Magic number byte 1 */
-
-#define EI_MAG2 2 /* File identification byte 2 index */
-#define ELFMAG2 'L' /* Magic number byte 2 */
-
-#define EI_MAG3 3 /* File identification byte 3 index */
-#define ELFMAG3 'F' /* Magic number byte 3 */
-
-/* Conglomeration of the identification bytes, for easy testing as a word. */
-#define ELFMAG "\177ELF"
-#define SELFMAG 4
-
-#define EI_CLASS 4 /* File class byte index */
-#define ELFCLASSNONE 0 /* Invalid class */
-#define ELFCLASS32 1 /* 32-bit objects */
-#define ELFCLASS64 2 /* 64-bit objects */
-#define ELFCLASSNUM 3
-
-#define EI_DATA 5 /* Data encoding byte index */
-#define ELFDATANONE 0 /* Invalid data encoding */
-#define ELFDATA2LSB 1 /* 2's complement, little endian */
-#define ELFDATA2MSB 2 /* 2's complement, big endian */
-#define ELFDATANUM 3
-
-#define EI_VERSION 6 /* File version byte index */
- /* Value must be EV_CURRENT */
-
-#define EI_OSABI 7 /* OS ABI identification */
-#define ELFOSABI_NONE 0 /* UNIX System V ABI */
-#define ELFOSABI_SYSV 0 /* Alias. */
-#define ELFOSABI_HPUX 1 /* HP-UX */
-#define ELFOSABI_NETBSD 2 /* NetBSD. */
-#define ELFOSABI_GNU 3 /* Object uses GNU ELF extensions. */
-#define ELFOSABI_LINUX ELFOSABI_GNU /* Compatibility alias. */
-#define ELFOSABI_SOLARIS 6 /* Sun Solaris. */
-#define ELFOSABI_AIX 7 /* IBM AIX. */
-#define ELFOSABI_IRIX 8 /* SGI Irix. */
-#define ELFOSABI_FREEBSD 9 /* FreeBSD. */
-#define ELFOSABI_TRU64 10 /* Compaq TRU64 UNIX. */
-#define ELFOSABI_MODESTO 11 /* Novell Modesto. */
-#define ELFOSABI_OPENBSD 12 /* OpenBSD. */
-#define ELFOSABI_ARM_AEABI 64 /* ARM EABI */
-#define ELFOSABI_ARM 97 /* ARM */
-#define ELFOSABI_STANDALONE 255 /* Standalone (embedded) application */
-
-#define EI_ABIVERSION 8 /* ABI version */
-
-#define EI_PAD 9 /* Byte index of padding bytes */
-
-/* Legal values for e_type (object file type). */
-
-#define ET_NONE 0 /* No file type */
-#define ET_REL 1 /* Relocatable file */
-#define ET_EXEC 2 /* Executable file */
-#define ET_DYN 3 /* Shared object file */
-#define ET_CORE 4 /* Core file */
-#define ET_NUM 5 /* Number of defined types */
-#define ET_LOOS 0xfe00 /* OS-specific range start */
-#define ET_HIOS 0xfeff /* OS-specific range end */
-#define ET_LOPROC 0xff00 /* Processor-specific range start */
-#define ET_HIPROC 0xffff /* Processor-specific range end */
-
-/* Legal values for e_machine (architecture). */
-
-#define EM_NONE 0 /* No machine */
-#define EM_M32 1 /* AT&T WE 32100 */
-#define EM_SPARC 2 /* SUN SPARC */
-#define EM_386 3 /* Intel 80386 */
-#define EM_68K 4 /* Motorola m68k family */
-#define EM_88K 5 /* Motorola m88k family */
-#define EM_IAMCU 6 /* Intel MCU */
-#define EM_860 7 /* Intel 80860 */
-#define EM_MIPS 8 /* MIPS R3000 big-endian */
-#define EM_S370 9 /* IBM System/370 */
-#define EM_MIPS_RS3_LE 10 /* MIPS R3000 little-endian */
- /* reserved 11-14 */
-#define EM_PARISC 15 /* HPPA */
- /* reserved 16 */
-#define EM_VPP500 17 /* Fujitsu VPP500 */
-#define EM_SPARC32PLUS 18 /* Sun's "v8plus" */
-#define EM_960 19 /* Intel 80960 */
-#define EM_PPC 20 /* PowerPC */
-#define EM_PPC64 21 /* PowerPC 64-bit */
-#define EM_S390 22 /* IBM S390 */
-#define EM_SPU 23 /* IBM SPU/SPC */
- /* reserved 24-35 */
-#define EM_V800 36 /* NEC V800 series */
-#define EM_FR20 37 /* Fujitsu FR20 */
-#define EM_RH32 38 /* TRW RH-32 */
-#define EM_RCE 39 /* Motorola RCE */
-#define EM_ARM 40 /* ARM */
-#define EM_FAKE_ALPHA 41 /* Digital Alpha */
-#define EM_SH 42 /* Hitachi SH */
-#define EM_SPARCV9 43 /* SPARC v9 64-bit */
-#define EM_TRICORE 44 /* Siemens Tricore */
-#define EM_ARC 45 /* Argonaut RISC Core */
-#define EM_H8_300 46 /* Hitachi H8/300 */
-#define EM_H8_300H 47 /* Hitachi H8/300H */
-#define EM_H8S 48 /* Hitachi H8S */
-#define EM_H8_500 49 /* Hitachi H8/500 */
-#define EM_IA_64 50 /* Intel Merced */
-#define EM_MIPS_X 51 /* Stanford MIPS-X */
-#define EM_COLDFIRE 52 /* Motorola Coldfire */
-#define EM_68HC12 53 /* Motorola M68HC12 */
-#define EM_MMA 54 /* Fujitsu MMA Multimedia Accelerator */
-#define EM_PCP 55 /* Siemens PCP */
-#define EM_NCPU 56 /* Sony nCPU embedded RISC */
-#define EM_NDR1 57 /* Denso NDR1 microprocessor */
-#define EM_STARCORE 58 /* Motorola Start*Core processor */
-#define EM_ME16 59 /* Toyota ME16 processor */
-#define EM_ST100 60 /* STMicroelectronic ST100 processor */
-#define EM_TINYJ 61 /* Advanced Logic Corp. Tinyj emb.fam */
-#define EM_X86_64 62 /* AMD x86-64 architecture */
-#define EM_PDSP 63 /* Sony DSP Processor */
-#define EM_PDP10 64 /* Digital PDP-10 */
-#define EM_PDP11 65 /* Digital PDP-11 */
-#define EM_FX66 66 /* Siemens FX66 microcontroller */
-#define EM_ST9PLUS 67 /* STMicroelectronics ST9+ 8/16 mc */
-#define EM_ST7 68 /* STmicroelectronics ST7 8 bit mc */
-#define EM_68HC16 69 /* Motorola MC68HC16 microcontroller */
-#define EM_68HC11 70 /* Motorola MC68HC11 microcontroller */
-#define EM_68HC08 71 /* Motorola MC68HC08 microcontroller */
-#define EM_68HC05 72 /* Motorola MC68HC05 microcontroller */
-#define EM_SVX 73 /* Silicon Graphics SVx */
-#define EM_ST19 74 /* STMicroelectronics ST19 8 bit mc */
-#define EM_VAX 75 /* Digital VAX */
-#define EM_CRIS 76 /* Axis Communications 32-bit emb.proc */
-#define EM_JAVELIN 77 /* Infineon Technologies 32-bit emb.proc */
-#define EM_FIREPATH 78 /* Element 14 64-bit DSP Processor */
-#define EM_ZSP 79 /* LSI Logic 16-bit DSP Processor */
-#define EM_MMIX 80 /* Donald Knuth's educational 64-bit proc */
-#define EM_HUANY 81 /* Harvard University machine-independent object files */
-#define EM_PRISM 82 /* SiTera Prism */
-#define EM_AVR 83 /* Atmel AVR 8-bit microcontroller */
-#define EM_FR30 84 /* Fujitsu FR30 */
-#define EM_D10V 85 /* Mitsubishi D10V */
-#define EM_D30V 86 /* Mitsubishi D30V */
-#define EM_V850 87 /* NEC v850 */
-#define EM_M32R 88 /* Mitsubishi M32R */
-#define EM_MN10300 89 /* Matsushita MN10300 */
-#define EM_MN10200 90 /* Matsushita MN10200 */
-#define EM_PJ 91 /* picoJava */
-#define EM_OPENRISC 92 /* OpenRISC 32-bit embedded processor */
-#define EM_ARC_COMPACT 93 /* ARC International ARCompact */
-#define EM_XTENSA 94 /* Tensilica Xtensa Architecture */
-#define EM_VIDEOCORE 95 /* Alphamosaic VideoCore */
-#define EM_TMM_GPP 96 /* Thompson Multimedia General Purpose Proc */
-#define EM_NS32K 97 /* National Semi. 32000 */
-#define EM_TPC 98 /* Tenor Network TPC */
-#define EM_SNP1K 99 /* Trebia SNP 1000 */
-#define EM_ST200 100 /* STMicroelectronics ST200 */
-#define EM_IP2K 101 /* Ubicom IP2xxx */
-#define EM_MAX 102 /* MAX processor */
-#define EM_CR 103 /* National Semi. CompactRISC */
-#define EM_F2MC16 104 /* Fujitsu F2MC16 */
-#define EM_MSP430 105 /* Texas Instruments msp430 */
-#define EM_BLACKFIN 106 /* Analog Devices Blackfin DSP */
-#define EM_SE_C33 107 /* Seiko Epson S1C33 family */
-#define EM_SEP 108 /* Sharp embedded microprocessor */
-#define EM_ARCA 109 /* Arca RISC */
-#define EM_UNICORE 110 /* PKU-Unity & MPRC Peking Uni. mc series */
-#define EM_EXCESS 111 /* eXcess configurable cpu */
-#define EM_DXP 112 /* Icera Semi. Deep Execution Processor */
-#define EM_ALTERA_NIOS2 113 /* Altera Nios II */
-#define EM_CRX 114 /* National Semi. CompactRISC CRX */
-#define EM_XGATE 115 /* Motorola XGATE */
-#define EM_C166 116 /* Infineon C16x/XC16x */
-#define EM_M16C 117 /* Renesas M16C */
-#define EM_DSPIC30F 118 /* Microchip Technology dsPIC30F */
-#define EM_CE 119 /* Freescale Communication Engine RISC */
-#define EM_M32C 120 /* Renesas M32C */
- /* reserved 121-130 */
-#define EM_TSK3000 131 /* Altium TSK3000 */
-#define EM_RS08 132 /* Freescale RS08 */
-#define EM_SHARC 133 /* Analog Devices SHARC family */
-#define EM_ECOG2 134 /* Cyan Technology eCOG2 */
-#define EM_SCORE7 135 /* Sunplus S+core7 RISC */
-#define EM_DSP24 136 /* New Japan Radio (NJR) 24-bit DSP */
-#define EM_VIDEOCORE3 137 /* Broadcom VideoCore III */
-#define EM_LATTICEMICO32 138 /* RISC for Lattice FPGA */
-#define EM_SE_C17 139 /* Seiko Epson C17 */
-#define EM_TI_C6000 140 /* Texas Instruments TMS320C6000 DSP */
-#define EM_TI_C2000 141 /* Texas Instruments TMS320C2000 DSP */
-#define EM_TI_C5500 142 /* Texas Instruments TMS320C55x DSP */
-#define EM_TI_ARP32 143 /* Texas Instruments App. Specific RISC */
-#define EM_TI_PRU 144 /* Texas Instruments Prog. Realtime Unit */
- /* reserved 145-159 */
-#define EM_MMDSP_PLUS 160 /* STMicroelectronics 64bit VLIW DSP */
-#define EM_CYPRESS_M8C 161 /* Cypress M8C */
-#define EM_R32C 162 /* Renesas R32C */
-#define EM_TRIMEDIA 163 /* NXP Semi. TriMedia */
-#define EM_QDSP6 164 /* QUALCOMM DSP6 */
-#define EM_8051 165 /* Intel 8051 and variants */
-#define EM_STXP7X 166 /* STMicroelectronics STxP7x */
-#define EM_NDS32 167 /* Andes Tech. compact code emb. RISC */
-#define EM_ECOG1X 168 /* Cyan Technology eCOG1X */
-#define EM_MAXQ30 169 /* Dallas Semi. MAXQ30 mc */
-#define EM_XIMO16 170 /* New Japan Radio (NJR) 16-bit DSP */
-#define EM_MANIK 171 /* M2000 Reconfigurable RISC */
-#define EM_CRAYNV2 172 /* Cray NV2 vector architecture */
-#define EM_RX 173 /* Renesas RX */
-#define EM_METAG 174 /* Imagination Tech. META */
-#define EM_MCST_ELBRUS 175 /* MCST Elbrus */
-#define EM_ECOG16 176 /* Cyan Technology eCOG16 */
-#define EM_CR16 177 /* National Semi. CompactRISC CR16 */
-#define EM_ETPU 178 /* Freescale Extended Time Processing Unit */
-#define EM_SLE9X 179 /* Infineon Tech. SLE9X */
-#define EM_L10M 180 /* Intel L10M */
-#define EM_K10M 181 /* Intel K10M */
- /* reserved 182 */
-#define EM_AARCH64 183 /* ARM AARCH64 */
- /* reserved 184 */
-#define EM_AVR32 185 /* Amtel 32-bit microprocessor */
-#define EM_STM8 186 /* STMicroelectronics STM8 */
-#define EM_TILE64 187 /* Tilera TILE64 */
-#define EM_TILEPRO 188 /* Tilera TILEPro */
-#define EM_MICROBLAZE 189 /* Xilinx MicroBlaze */
-#define EM_CUDA 190 /* NVIDIA CUDA */
-#define EM_TILEGX 191 /* Tilera TILE-Gx */
-#define EM_CLOUDSHIELD 192 /* CloudShield */
-#define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
-#define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */
-#define EM_ARCV2 195 /* Synopsys ARCv2 ISA. */
-#define EM_OPEN8 196 /* Open8 RISC */
-#define EM_RL78 197 /* Renesas RL78 */
-#define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
-#define EM_78KOR 199 /* Renesas 78KOR */
-#define EM_56800EX 200 /* Freescale 56800EX DSC */
-#define EM_BA1 201 /* Beyond BA1 */
-#define EM_BA2 202 /* Beyond BA2 */
-#define EM_XCORE 203 /* XMOS xCORE */
-#define EM_MCHP_PIC 204 /* Microchip 8-bit PIC(r) */
-#define EM_INTELGT 205 /* Intel Graphics Technology */
- /* reserved 206-209 */
-#define EM_KM32 210 /* KM211 KM32 */
-#define EM_KMX32 211 /* KM211 KMX32 */
-#define EM_EMX16 212 /* KM211 KMX16 */
-#define EM_EMX8 213 /* KM211 KMX8 */
-#define EM_KVARC 214 /* KM211 KVARC */
-#define EM_CDP 215 /* Paneve CDP */
-#define EM_COGE 216 /* Cognitive Smart Memory Processor */
-#define EM_COOL 217 /* Bluechip CoolEngine */
-#define EM_NORC 218 /* Nanoradio Optimized RISC */
-#define EM_CSR_KALIMBA 219 /* CSR Kalimba */
-#define EM_Z80 220 /* Zilog Z80 */
-#define EM_VISIUM 221 /* Controls and Data Services VISIUMcore */
-#define EM_FT32 222 /* FTDI Chip FT32 */
-#define EM_MOXIE 223 /* Moxie processor */
-#define EM_AMDGPU 224 /* AMD GPU */
- /* reserved 225-242 */
-#define EM_RISCV 243 /* RISC-V */
-
-#define EM_BPF 247 /* Linux BPF -- in-kernel virtual machine */
-#define EM_CSKY 252 /* C-SKY */
-#define EM_LOONGARCH 258 /* LoongArch */
-
-#define EM_NUM 259
-
-/* Old spellings/synonyms. */
-
-#define EM_ARC_A5 EM_ARC_COMPACT
-
-/* If it is necessary to assign new unofficial EM_* values, please
- pick large random numbers (0x8523, 0xa7f2, etc.) to minimize the
- chances of collision with official or non-GNU unofficial values. */
-
-#define EM_ALPHA 0x9026
-
-/* Legal values for e_version (version). */
-
-#define EV_NONE 0 /* Invalid ELF version */
-#define EV_CURRENT 1 /* Current version */
-#define EV_NUM 2
-
-/* Section header. */
-
-typedef struct
-{
- Elf32_Word sh_name; /* Section name (string tbl index) */
- Elf32_Word sh_type; /* Section type */
- Elf32_Word sh_flags; /* Section flags */
- Elf32_Addr sh_addr; /* Section virtual addr at execution */
- Elf32_Off sh_offset; /* Section file offset */
- Elf32_Word sh_size; /* Section size in bytes */
- Elf32_Word sh_link; /* Link to another section */
- Elf32_Word sh_info; /* Additional section information */
- Elf32_Word sh_addralign; /* Section alignment */
- Elf32_Word sh_entsize; /* Entry size if section holds table */
-} Elf32_Shdr;
-
-typedef struct
-{
- Elf64_Word sh_name; /* Section name (string tbl index) */
- Elf64_Word sh_type; /* Section type */
- Elf64_Xword sh_flags; /* Section flags */
- Elf64_Addr sh_addr; /* Section virtual addr at execution */
- Elf64_Off sh_offset; /* Section file offset */
- Elf64_Xword sh_size; /* Section size in bytes */
- Elf64_Word sh_link; /* Link to another section */
- Elf64_Word sh_info; /* Additional section information */
- Elf64_Xword sh_addralign; /* Section alignment */
- Elf64_Xword sh_entsize; /* Entry size if section holds table */
-} Elf64_Shdr;
-
-/* Special section indices. */
-
-#define SHN_UNDEF 0 /* Undefined section */
-#define SHN_LORESERVE 0xff00 /* Start of reserved indices */
-#define SHN_LOPROC 0xff00 /* Start of processor-specific */
-#define SHN_BEFORE 0xff00 /* Order section before all others
- (Solaris). */
-#define SHN_AFTER 0xff01 /* Order section after all others
- (Solaris). */
-#define SHN_HIPROC 0xff1f /* End of processor-specific */
-#define SHN_LOOS 0xff20 /* Start of OS-specific */
-#define SHN_HIOS 0xff3f /* End of OS-specific */
-#define SHN_ABS 0xfff1 /* Associated symbol is absolute */
-#define SHN_COMMON 0xfff2 /* Associated symbol is common */
-#define SHN_XINDEX 0xffff /* Index is in extra table. */
-#define SHN_HIRESERVE 0xffff /* End of reserved indices */
-
-/* Legal values for sh_type (section type). */
-
-#define SHT_NULL 0 /* Section header table entry unused */
-#define SHT_PROGBITS 1 /* Program data */
-#define SHT_SYMTAB 2 /* Symbol table */
-#define SHT_STRTAB 3 /* String table */
-#define SHT_RELA 4 /* Relocation entries with addends */
-#define SHT_HASH 5 /* Symbol hash table */
-#define SHT_DYNAMIC 6 /* Dynamic linking information */
-#define SHT_NOTE 7 /* Notes */
-#define SHT_NOBITS 8 /* Program space with no data (bss) */
-#define SHT_REL 9 /* Relocation entries, no addends */
-#define SHT_SHLIB 10 /* Reserved */
-#define SHT_DYNSYM 11 /* Dynamic linker symbol table */
-#define SHT_INIT_ARRAY 14 /* Array of constructors */
-#define SHT_FINI_ARRAY 15 /* Array of destructors */
-#define SHT_PREINIT_ARRAY 16 /* Array of pre-constructors */
-#define SHT_GROUP 17 /* Section group */
-#define SHT_SYMTAB_SHNDX 18 /* Extended section indices */
-#define SHT_RELR 19 /* RELR relative relocations */
-#define SHT_NUM 20 /* Number of defined types. */
-#define SHT_LOOS 0x60000000 /* Start OS-specific. */
-#define SHT_GNU_ATTRIBUTES 0x6ffffff5 /* Object attributes. */
-#define SHT_GNU_HASH 0x6ffffff6 /* GNU-style hash table. */
-#define SHT_GNU_LIBLIST 0x6ffffff7 /* Prelink library list */
-#define SHT_CHECKSUM 0x6ffffff8 /* Checksum for DSO content. */
-#define SHT_LOSUNW 0x6ffffffa /* Sun-specific low bound. */
-#define SHT_SUNW_move 0x6ffffffa
-#define SHT_SUNW_COMDAT 0x6ffffffb
-#define SHT_SUNW_syminfo 0x6ffffffc
-#define SHT_GNU_verdef 0x6ffffffd /* Version definition section. */
-#define SHT_GNU_verneed 0x6ffffffe /* Version needs section. */
-#define SHT_GNU_versym 0x6fffffff /* Version symbol table. */
-#define SHT_HISUNW 0x6fffffff /* Sun-specific high bound. */
-#define SHT_HIOS 0x6fffffff /* End OS-specific type */
-#define SHT_LOPROC 0x70000000 /* Start of processor-specific */
-#define SHT_HIPROC 0x7fffffff /* End of processor-specific */
-#define SHT_LOUSER 0x80000000 /* Start of application-specific */
-#define SHT_HIUSER 0x8fffffff /* End of application-specific */
-
-/* Legal values for sh_flags (section flags). */
-
-#define SHF_WRITE (1 << 0) /* Writable */
-#define SHF_ALLOC (1 << 1) /* Occupies memory during execution */
-#define SHF_EXECINSTR (1 << 2) /* Executable */
-#define SHF_MERGE (1 << 4) /* Might be merged */
-#define SHF_STRINGS (1 << 5) /* Contains nul-terminated strings */
-#define SHF_INFO_LINK (1 << 6) /* `sh_info' contains SHT index */
-#define SHF_LINK_ORDER (1 << 7) /* Preserve order after combining */
-#define SHF_OS_NONCONFORMING (1 << 8) /* Non-standard OS specific handling
- required */
-#define SHF_GROUP (1 << 9) /* Section is member of a group. */
-#define SHF_TLS (1 << 10) /* Section hold thread-local data. */
-#define SHF_COMPRESSED (1 << 11) /* Section with compressed data. */
-#define SHF_MASKOS 0x0ff00000 /* OS-specific. */
-#define SHF_MASKPROC 0xf0000000 /* Processor-specific */
-#define SHF_GNU_RETAIN (1 << 21) /* Not to be GCed by linker. */
-#define SHF_ORDERED (1 << 30) /* Special ordering requirement
- (Solaris). */
-#define SHF_EXCLUDE (1U << 31) /* Section is excluded unless
- referenced or allocated (Solaris).*/
-
-/* Section compression header. Used when SHF_COMPRESSED is set. */
-
-typedef struct
-{
- Elf32_Word ch_type; /* Compression format. */
- Elf32_Word ch_size; /* Uncompressed data size. */
- Elf32_Word ch_addralign; /* Uncompressed data alignment. */
-} Elf32_Chdr;
-
-typedef struct
-{
- Elf64_Word ch_type; /* Compression format. */
- Elf64_Word ch_reserved;
- Elf64_Xword ch_size; /* Uncompressed data size. */
- Elf64_Xword ch_addralign; /* Uncompressed data alignment. */
-} Elf64_Chdr;
-
-/* Legal values for ch_type (compression algorithm). */
-#define ELFCOMPRESS_ZLIB 1 /* ZLIB/DEFLATE algorithm. */
-#define ELFCOMPRESS_ZSTD 2 /* Zstandard algorithm. */
-#define ELFCOMPRESS_LOOS 0x60000000 /* Start of OS-specific. */
-#define ELFCOMPRESS_HIOS 0x6fffffff /* End of OS-specific. */
-#define ELFCOMPRESS_LOPROC 0x70000000 /* Start of processor-specific. */
-#define ELFCOMPRESS_HIPROC 0x7fffffff /* End of processor-specific. */
-
-/* Section group handling. */
-#define GRP_COMDAT 0x1 /* Mark group as COMDAT. */
-
-/* Symbol table entry. */
-
-typedef struct
-{
- Elf32_Word st_name; /* Symbol name (string tbl index) */
- Elf32_Addr st_value; /* Symbol value */
- Elf32_Word st_size; /* Symbol size */
- unsigned char st_info; /* Symbol type and binding */
- unsigned char st_other; /* Symbol visibility */
- Elf32_Section st_shndx; /* Section index */
-} Elf32_Sym;
-
-typedef struct
-{
- Elf64_Word st_name; /* Symbol name (string tbl index) */
- unsigned char st_info; /* Symbol type and binding */
- unsigned char st_other; /* Symbol visibility */
- Elf64_Section st_shndx; /* Section index */
- Elf64_Addr st_value; /* Symbol value */
- Elf64_Xword st_size; /* Symbol size */
-} Elf64_Sym;
-
-/* The syminfo section if available contains additional information about
- every dynamic symbol. */
-
-typedef struct
-{
- Elf32_Half si_boundto; /* Direct bindings, symbol bound to */
- Elf32_Half si_flags; /* Per symbol flags */
-} Elf32_Syminfo;
-
-typedef struct
-{
- Elf64_Half si_boundto; /* Direct bindings, symbol bound to */
- Elf64_Half si_flags; /* Per symbol flags */
-} Elf64_Syminfo;
-
-/* Possible values for si_boundto. */
-#define SYMINFO_BT_SELF 0xffff /* Symbol bound to self */
-#define SYMINFO_BT_PARENT 0xfffe /* Symbol bound to parent */
-#define SYMINFO_BT_LOWRESERVE 0xff00 /* Beginning of reserved entries */
-
-/* Possible bitmasks for si_flags. */
-#define SYMINFO_FLG_DIRECT 0x0001 /* Direct bound symbol */
-#define SYMINFO_FLG_PASSTHRU 0x0002 /* Pass-through symbol for translator */
-#define SYMINFO_FLG_COPY 0x0004 /* Symbol is a copy-reloc */
-#define SYMINFO_FLG_LAZYLOAD 0x0008 /* Symbol bound to object to be lazy
- loaded */
-/* Syminfo version values. */
-#define SYMINFO_NONE 0
-#define SYMINFO_CURRENT 1
-#define SYMINFO_NUM 2
-
-
-/* How to extract and insert information held in the st_info field. */
-
-#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4)
-#define ELF32_ST_TYPE(val) ((val) & 0xf)
-#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
-
-/* Both Elf32_Sym and Elf64_Sym use the same one-byte st_info field. */
-#define ELF64_ST_BIND(val) ELF32_ST_BIND (val)
-#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val)
-#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type))
-
-/* Legal values for ST_BIND subfield of st_info (symbol binding). */
-
-#define STB_LOCAL 0 /* Local symbol */
-#define STB_GLOBAL 1 /* Global symbol */
-#define STB_WEAK 2 /* Weak symbol */
-#define STB_NUM 3 /* Number of defined types. */
-#define STB_LOOS 10 /* Start of OS-specific */
-#define STB_GNU_UNIQUE 10 /* Unique symbol. */
-#define STB_HIOS 12 /* End of OS-specific */
-#define STB_LOPROC 13 /* Start of processor-specific */
-#define STB_HIPROC 15 /* End of processor-specific */
-
-/* Legal values for ST_TYPE subfield of st_info (symbol type). */
-
-#define STT_NOTYPE 0 /* Symbol type is unspecified */
-#define STT_OBJECT 1 /* Symbol is a data object */
-#define STT_FUNC 2 /* Symbol is a code object */
-#define STT_SECTION 3 /* Symbol associated with a section */
-#define STT_FILE 4 /* Symbol's name is file name */
-#define STT_COMMON 5 /* Symbol is a common data object */
-#define STT_TLS 6 /* Symbol is thread-local data object*/
-#define STT_NUM 7 /* Number of defined types. */
-#define STT_LOOS 10 /* Start of OS-specific */
-#define STT_GNU_IFUNC 10 /* Symbol is indirect code object */
-#define STT_HIOS 12 /* End of OS-specific */
-#define STT_LOPROC 13 /* Start of processor-specific */
-#define STT_HIPROC 15 /* End of processor-specific */
-
-
-/* Symbol table indices are found in the hash buckets and chain table
- of a symbol hash table section. This special index value indicates
- the end of a chain, meaning no further symbols are found in that bucket. */
-
-#define STN_UNDEF 0 /* End of a chain. */
-
-
-/* How to extract and insert information held in the st_other field. */
-
-#define ELF32_ST_VISIBILITY(o) ((o) & 0x03)
-
-/* For ELF64 the definitions are the same. */
-#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o)
-
-/* Symbol visibility specification encoded in the st_other field. */
-#define STV_DEFAULT 0 /* Default symbol visibility rules */
-#define STV_INTERNAL 1 /* Processor specific hidden class */
-#define STV_HIDDEN 2 /* Sym unavailable in other modules */
-#define STV_PROTECTED 3 /* Not preemptible, not exported */
-
-
-/* Relocation table entry without addend (in section of type SHT_REL). */
-
-typedef struct
-{
- Elf32_Addr r_offset; /* Address */
- Elf32_Word r_info; /* Relocation type and symbol index */
-} Elf32_Rel;
-
-/* I have seen two different definitions of the Elf64_Rel and
- Elf64_Rela structures, so we'll leave them out until Novell (or
- whoever) gets their act together. */
-/* The following, at least, is used on Sparc v9, MIPS, and Alpha. */
-
-typedef struct
-{
- Elf64_Addr r_offset; /* Address */
- Elf64_Xword r_info; /* Relocation type and symbol index */
-} Elf64_Rel;
-
-/* Relocation table entry with addend (in section of type SHT_RELA). */
-
-typedef struct
-{
- Elf32_Addr r_offset; /* Address */
- Elf32_Word r_info; /* Relocation type and symbol index */
- Elf32_Sword r_addend; /* Addend */
-} Elf32_Rela;
-
-typedef struct
-{
- Elf64_Addr r_offset; /* Address */
- Elf64_Xword r_info; /* Relocation type and symbol index */
- Elf64_Sxword r_addend; /* Addend */
-} Elf64_Rela;
-
-/* RELR relocation table entry */
-
-typedef Elf32_Word Elf32_Relr;
-typedef Elf64_Xword Elf64_Relr;
-
-/* How to extract and insert information held in the r_info field. */
-
-#define ELF32_R_SYM(val) ((val) >> 8)
-#define ELF32_R_TYPE(val) ((val) & 0xff)
-#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
-
-#define ELF64_R_SYM(i) ((i) >> 32)
-#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
-#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type))
-
-/* Program segment header. */
-
-typedef struct
-{
- Elf32_Word p_type; /* Segment type */
- Elf32_Off p_offset; /* Segment file offset */
- Elf32_Addr p_vaddr; /* Segment virtual address */
- Elf32_Addr p_paddr; /* Segment physical address */
- Elf32_Word p_filesz; /* Segment size in file */
- Elf32_Word p_memsz; /* Segment size in memory */
- Elf32_Word p_flags; /* Segment flags */
- Elf32_Word p_align; /* Segment alignment */
-} Elf32_Phdr;
-
-typedef struct
-{
- Elf64_Word p_type; /* Segment type */
- Elf64_Word p_flags; /* Segment flags */
- Elf64_Off p_offset; /* Segment file offset */
- Elf64_Addr p_vaddr; /* Segment virtual address */
- Elf64_Addr p_paddr; /* Segment physical address */
- Elf64_Xword p_filesz; /* Segment size in file */
- Elf64_Xword p_memsz; /* Segment size in memory */
- Elf64_Xword p_align; /* Segment alignment */
-} Elf64_Phdr;
-
-/* Special value for e_phnum. This indicates that the real number of
- program headers is too large to fit into e_phnum. Instead the real
- value is in the field sh_info of section 0. */
-
-#define PN_XNUM 0xffff
-
-/* Legal values for p_type (segment type). */
-
-#define PT_NULL 0 /* Program header table entry unused */
-#define PT_LOAD 1 /* Loadable program segment */
-#define PT_DYNAMIC 2 /* Dynamic linking information */
-#define PT_INTERP 3 /* Program interpreter */
-#define PT_NOTE 4 /* Auxiliary information */
-#define PT_SHLIB 5 /* Reserved */
-#define PT_PHDR 6 /* Entry for header table itself */
-#define PT_TLS 7 /* Thread-local storage segment */
-#define PT_NUM 8 /* Number of defined types */
-#define PT_LOOS 0x60000000 /* Start of OS-specific */
-#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
-#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
-#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
-#define PT_GNU_PROPERTY 0x6474e553 /* GNU property */
-#define PT_GNU_SFRAME 0x6474e554 /* SFrame segment. */
-#define PT_LOSUNW 0x6ffffffa
-#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
-#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
-#define PT_HISUNW 0x6fffffff
-#define PT_HIOS 0x6fffffff /* End of OS-specific */
-#define PT_LOPROC 0x70000000 /* Start of processor-specific */
-#define PT_HIPROC 0x7fffffff /* End of processor-specific */
-
-/* Legal values for p_flags (segment flags). */
-
-#define PF_X (1 << 0) /* Segment is executable */
-#define PF_W (1 << 1) /* Segment is writable */
-#define PF_R (1 << 2) /* Segment is readable */
-#define PF_MASKOS 0x0ff00000 /* OS-specific */
-#define PF_MASKPROC 0xf0000000 /* Processor-specific */
-
-/* Legal values for note segment descriptor types for core files. */
-
-#define NT_PRSTATUS 1 /* Contains copy of prstatus struct */
-#define NT_PRFPREG 2 /* Contains copy of fpregset
- struct. */
-#define NT_FPREGSET 2 /* Contains copy of fpregset struct */
-#define NT_PRPSINFO 3 /* Contains copy of prpsinfo struct */
-#define NT_PRXREG 4 /* Contains copy of prxregset struct */
-#define NT_TASKSTRUCT 4 /* Contains copy of task structure */
-#define NT_PLATFORM 5 /* String from sysinfo(SI_PLATFORM) */
-#define NT_AUXV 6 /* Contains copy of auxv array */
-#define NT_GWINDOWS 7 /* Contains copy of gwindows struct */
-#define NT_ASRS 8 /* Contains copy of asrset struct */
-#define NT_PSTATUS 10 /* Contains copy of pstatus struct */
-#define NT_PSINFO 13 /* Contains copy of psinfo struct */
-#define NT_PRCRED 14 /* Contains copy of prcred struct */
-#define NT_UTSNAME 15 /* Contains copy of utsname struct */
-#define NT_LWPSTATUS 16 /* Contains copy of lwpstatus struct */
-#define NT_LWPSINFO 17 /* Contains copy of lwpinfo struct */
-#define NT_PRFPXREG 20 /* Contains copy of fprxregset struct */
-#define NT_SIGINFO 0x53494749 /* Contains copy of siginfo_t,
- size might increase */
-#define NT_FILE 0x46494c45 /* Contains information about mapped
- files */
-#define NT_PRXFPREG 0x46e62b7f /* Contains copy of user_fxsr_struct */
-#define NT_PPC_VMX 0x100 /* PowerPC Altivec/VMX registers */
-#define NT_PPC_SPE 0x101 /* PowerPC SPE/EVR registers */
-#define NT_PPC_VSX 0x102 /* PowerPC VSX registers */
-#define NT_PPC_TAR 0x103 /* Target Address Register */
-#define NT_PPC_PPR 0x104 /* Program Priority Register */
-#define NT_PPC_DSCR 0x105 /* Data Stream Control Register */
-#define NT_PPC_EBB 0x106 /* Event Based Branch Registers */
-#define NT_PPC_PMU 0x107 /* Performance Monitor Registers */
-#define NT_PPC_TM_CGPR 0x108 /* TM checkpointed GPR Registers */
-#define NT_PPC_TM_CFPR 0x109 /* TM checkpointed FPR Registers */
-#define NT_PPC_TM_CVMX 0x10a /* TM checkpointed VMX Registers */
-#define NT_PPC_TM_CVSX 0x10b /* TM checkpointed VSX Registers */
-#define NT_PPC_TM_SPR 0x10c /* TM Special Purpose Registers */
-#define NT_PPC_TM_CTAR 0x10d /* TM checkpointed Target Address
- Register */
-#define NT_PPC_TM_CPPR 0x10e /* TM checkpointed Program Priority
- Register */
-#define NT_PPC_TM_CDSCR 0x10f /* TM checkpointed Data Stream Control
- Register */
-#define NT_PPC_PKEY 0x110 /* Memory Protection Keys
- registers. */
-#define NT_386_TLS 0x200 /* i386 TLS slots (struct user_desc) */
-#define NT_386_IOPERM 0x201 /* x86 io permission bitmap (1=deny) */
-#define NT_X86_XSTATE 0x202 /* x86 extended state using xsave */
-#define NT_S390_HIGH_GPRS 0x300 /* s390 upper register halves */
-#define NT_S390_TIMER 0x301 /* s390 timer register */
-#define NT_S390_TODCMP 0x302 /* s390 TOD clock comparator register */
-#define NT_S390_TODPREG 0x303 /* s390 TOD programmable register */
-#define NT_S390_CTRS 0x304 /* s390 control registers */
-#define NT_S390_PREFIX 0x305 /* s390 prefix register */
-#define NT_S390_LAST_BREAK 0x306 /* s390 breaking event address */
-#define NT_S390_SYSTEM_CALL 0x307 /* s390 system call restart data */
-#define NT_S390_TDB 0x308 /* s390 transaction diagnostic block */
-#define NT_S390_VXRS_LOW 0x309 /* s390 vector registers 0-15
- upper half. */
-#define NT_S390_VXRS_HIGH 0x30a /* s390 vector registers 16-31. */
-#define NT_S390_GS_CB 0x30b /* s390 guarded storage registers. */
-#define NT_S390_GS_BC 0x30c /* s390 guarded storage
- broadcast control block. */
-#define NT_S390_RI_CB 0x30d /* s390 runtime instrumentation. */
-#define NT_S390_PV_CPU_DATA 0x30e /* s390 protvirt cpu dump data. */
-#define NT_ARM_VFP 0x400 /* ARM VFP/NEON registers */
-#define NT_ARM_TLS 0x401 /* ARM TLS register */
-#define NT_ARM_HW_BREAK 0x402 /* ARM hardware breakpoint registers */
-#define NT_ARM_HW_WATCH 0x403 /* ARM hardware watchpoint registers */
-#define NT_ARM_SYSTEM_CALL 0x404 /* ARM system call number */
-#define NT_ARM_SVE 0x405 /* ARM Scalable Vector Extension
- registers */
-#define NT_ARM_PAC_MASK 0x406 /* ARM pointer authentication
- code masks. */
-#define NT_ARM_PACA_KEYS 0x407 /* ARM pointer authentication
- address keys. */
-#define NT_ARM_PACG_KEYS 0x408 /* ARM pointer authentication
- generic key. */
-#define NT_ARM_TAGGED_ADDR_CTRL 0x409 /* AArch64 tagged address
- control. */
-#define NT_ARM_PAC_ENABLED_KEYS 0x40a /* AArch64 pointer authentication
- enabled keys. */
-#define NT_VMCOREDD 0x700 /* Vmcore Device Dump Note. */
-#define NT_MIPS_DSP 0x800 /* MIPS DSP ASE registers. */
-#define NT_MIPS_FP_MODE 0x801 /* MIPS floating-point mode. */
-#define NT_MIPS_MSA 0x802 /* MIPS SIMD registers. */
-#define NT_LOONGARCH_CPUCFG 0xa00 /* LoongArch CPU config registers. */
-#define NT_LOONGARCH_CSR 0xa01 /* LoongArch control and
- status registers. */
-#define NT_LOONGARCH_LSX 0xa02 /* LoongArch Loongson SIMD
- Extension registers. */
-#define NT_LOONGARCH_LASX 0xa03 /* LoongArch Loongson Advanced
- SIMD Extension registers. */
-#define NT_LOONGARCH_LBT 0xa04 /* LoongArch Loongson Binary
- Translation registers. */
-
-/* Legal values for the note segment descriptor types for object files. */
-
-#define NT_VERSION 1 /* Contains a version string. */
-
-
-/* Dynamic section entry. */
-
-typedef struct
-{
- Elf32_Sword d_tag; /* Dynamic entry type */
- union
- {
- Elf32_Word d_val; /* Integer value */
- Elf32_Addr d_ptr; /* Address value */
- } d_un;
-} Elf32_Dyn;
-
-typedef struct
-{
- Elf64_Sxword d_tag; /* Dynamic entry type */
- union
- {
- Elf64_Xword d_val; /* Integer value */
- Elf64_Addr d_ptr; /* Address value */
- } d_un;
-} Elf64_Dyn;
-
-/* Legal values for d_tag (dynamic entry type). */
-
-#define DT_NULL 0 /* Marks end of dynamic section */
-#define DT_NEEDED 1 /* Name of needed library */
-#define DT_PLTRELSZ 2 /* Size in bytes of PLT relocs */
-#define DT_PLTGOT 3 /* Processor defined value */
-#define DT_HASH 4 /* Address of symbol hash table */
-#define DT_STRTAB 5 /* Address of string table */
-#define DT_SYMTAB 6 /* Address of symbol table */
-#define DT_RELA 7 /* Address of Rela relocs */
-#define DT_RELASZ 8 /* Total size of Rela relocs */
-#define DT_RELAENT 9 /* Size of one Rela reloc */
-#define DT_STRSZ 10 /* Size of string table */
-#define DT_SYMENT 11 /* Size of one symbol table entry */
-#define DT_INIT 12 /* Address of init function */
-#define DT_FINI 13 /* Address of termination function */
-#define DT_SONAME 14 /* Name of shared object */
-#define DT_RPATH 15 /* Library search path (deprecated) */
-#define DT_SYMBOLIC 16 /* Start symbol search here */
-#define DT_REL 17 /* Address of Rel relocs */
-#define DT_RELSZ 18 /* Total size of Rel relocs */
-#define DT_RELENT 19 /* Size of one Rel reloc */
-#define DT_PLTREL 20 /* Type of reloc in PLT */
-#define DT_DEBUG 21 /* For debugging; unspecified */
-#define DT_TEXTREL 22 /* Reloc might modify .text */
-#define DT_JMPREL 23 /* Address of PLT relocs */
-#define DT_BIND_NOW 24 /* Process relocations of object */
-#define DT_INIT_ARRAY 25 /* Array with addresses of init fct */
-#define DT_FINI_ARRAY 26 /* Array with addresses of fini fct */
-#define DT_INIT_ARRAYSZ 27 /* Size in bytes of DT_INIT_ARRAY */
-#define DT_FINI_ARRAYSZ 28 /* Size in bytes of DT_FINI_ARRAY */
-#define DT_RUNPATH 29 /* Library search path */
-#define DT_FLAGS 30 /* Flags for the object being loaded */
-#define DT_ENCODING 32 /* Start of encoded range */
-#define DT_PREINIT_ARRAY 32 /* Array with addresses of preinit fct*/
-#define DT_PREINIT_ARRAYSZ 33 /* size in bytes of DT_PREINIT_ARRAY */
-#define DT_SYMTAB_SHNDX 34 /* Address of SYMTAB_SHNDX section */
-#define DT_RELRSZ 35 /* Total size of RELR relative relocations */
-#define DT_RELR 36 /* Address of RELR relative relocations */
-#define DT_RELRENT 37 /* Size of one RELR relative relocaction */
-#define DT_NUM 38 /* Number used */
-#define DT_LOOS 0x6000000d /* Start of OS-specific */
-#define DT_HIOS 0x6ffff000 /* End of OS-specific */
-#define DT_LOPROC 0x70000000 /* Start of processor-specific */
-#define DT_HIPROC 0x7fffffff /* End of processor-specific */
-#define DT_PROCNUM DT_MIPS_NUM /* Most used by any processor */
-
-/* DT_* entries which fall between DT_VALRNGHI & DT_VALRNGLO use the
- Dyn.d_un.d_val field of the Elf*_Dyn structure. This follows Sun's
- approach. */
-#define DT_VALRNGLO 0x6ffffd00
-#define DT_GNU_PRELINKED 0x6ffffdf5 /* Prelinking timestamp */
-#define DT_GNU_CONFLICTSZ 0x6ffffdf6 /* Size of conflict section */
-#define DT_GNU_LIBLISTSZ 0x6ffffdf7 /* Size of library list */
-#define DT_CHECKSUM 0x6ffffdf8
-#define DT_PLTPADSZ 0x6ffffdf9
-#define DT_MOVEENT 0x6ffffdfa
-#define DT_MOVESZ 0x6ffffdfb
-#define DT_FEATURE_1 0x6ffffdfc /* Feature selection (DTF_*). */
-#define DT_POSFLAG_1 0x6ffffdfd /* Flags for DT_* entries, effecting
- the following DT_* entry. */
-#define DT_SYMINSZ 0x6ffffdfe /* Size of syminfo table (in bytes) */
-#define DT_SYMINENT 0x6ffffdff /* Entry size of syminfo */
-#define DT_VALRNGHI 0x6ffffdff
-#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag)) /* Reverse order! */
-#define DT_VALNUM 12
-
-/* DT_* entries which fall between DT_ADDRRNGHI & DT_ADDRRNGLO use the
- Dyn.d_un.d_ptr field of the Elf*_Dyn structure.
-
- If any adjustment is made to the ELF object after it has been
- built these entries will need to be adjusted. */
-#define DT_ADDRRNGLO 0x6ffffe00
-#define DT_GNU_HASH 0x6ffffef5 /* GNU-style hash table. */
-#define DT_TLSDESC_PLT 0x6ffffef6
-#define DT_TLSDESC_GOT 0x6ffffef7
-#define DT_GNU_CONFLICT 0x6ffffef8 /* Start of conflict section */
-#define DT_GNU_LIBLIST 0x6ffffef9 /* Library list */
-#define DT_CONFIG 0x6ffffefa /* Configuration information. */
-#define DT_DEPAUDIT 0x6ffffefb /* Dependency auditing. */
-#define DT_AUDIT 0x6ffffefc /* Object auditing. */
-#define DT_PLTPAD 0x6ffffefd /* PLT padding. */
-#define DT_MOVETAB 0x6ffffefe /* Move table. */
-#define DT_SYMINFO 0x6ffffeff /* Syminfo table. */
-#define DT_ADDRRNGHI 0x6ffffeff
-#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag)) /* Reverse order! */
-#define DT_ADDRNUM 11
-
-/* The versioning entry types. The next are defined as part of the
- GNU extension. */
-#define DT_VERSYM 0x6ffffff0
-
-#define DT_RELACOUNT 0x6ffffff9
-#define DT_RELCOUNT 0x6ffffffa
-
-/* These were chosen by Sun. */
-#define DT_FLAGS_1 0x6ffffffb /* State flags, see DF_1_* below. */
-#define DT_VERDEF 0x6ffffffc /* Address of version definition
- table */
-#define DT_VERDEFNUM 0x6ffffffd /* Number of version definitions */
-#define DT_VERNEED 0x6ffffffe /* Address of table with needed
- versions */
-#define DT_VERNEEDNUM 0x6fffffff /* Number of needed versions */
-#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag)) /* Reverse order! */
-#define DT_VERSIONTAGNUM 16
-
-/* Sun added these machine-independent extensions in the "processor-specific"
- range. Be compatible. */
-#define DT_AUXILIARY 0x7ffffffd /* Shared object to load before self */
-#define DT_FILTER 0x7fffffff /* Shared object to get values from */
-#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
-#define DT_EXTRANUM 3
-
-/* Values of `d_un.d_val' in the DT_FLAGS entry. */
-#define DF_ORIGIN 0x00000001 /* Object may use DF_ORIGIN */
-#define DF_SYMBOLIC 0x00000002 /* Symbol resolutions starts here */
-#define DF_TEXTREL 0x00000004 /* Object contains text relocations */
-#define DF_BIND_NOW 0x00000008 /* No lazy binding for this object */
-#define DF_STATIC_TLS 0x00000010 /* Module uses the static TLS model */
-
-/* State flags selectable in the `d_un.d_val' element of the DT_FLAGS_1
- entry in the dynamic section. */
-#define DF_1_NOW 0x00000001 /* Set RTLD_NOW for this object. */
-#define DF_1_GLOBAL 0x00000002 /* Set RTLD_GLOBAL for this object. */
-#define DF_1_GROUP 0x00000004 /* Set RTLD_GROUP for this object. */
-#define DF_1_NODELETE 0x00000008 /* Set RTLD_NODELETE for this object.*/
-#define DF_1_LOADFLTR 0x00000010 /* Trigger filtee loading at runtime.*/
-#define DF_1_INITFIRST 0x00000020 /* Set RTLD_INITFIRST for this object*/
-#define DF_1_NOOPEN 0x00000040 /* Set RTLD_NOOPEN for this object. */
-#define DF_1_ORIGIN 0x00000080 /* $ORIGIN must be handled. */
-#define DF_1_DIRECT 0x00000100 /* Direct binding enabled. */
-#define DF_1_TRANS 0x00000200
-#define DF_1_INTERPOSE 0x00000400 /* Object is used to interpose. */
-#define DF_1_NODEFLIB 0x00000800 /* Ignore default lib search path. */
-#define DF_1_NODUMP 0x00001000 /* Object can't be dldump'ed. */
-#define DF_1_CONFALT 0x00002000 /* Configuration alternative created.*/
-#define DF_1_ENDFILTEE 0x00004000 /* Filtee terminates filters search. */
-#define DF_1_DISPRELDNE 0x00008000 /* Disp reloc applied at build time. */
-#define DF_1_DISPRELPND 0x00010000 /* Disp reloc applied at run-time. */
-#define DF_1_NODIRECT 0x00020000 /* Object has no-direct binding. */
-#define DF_1_IGNMULDEF 0x00040000
-#define DF_1_NOKSYMS 0x00080000
-#define DF_1_NOHDR 0x00100000
-#define DF_1_EDITED 0x00200000 /* Object is modified after built. */
-#define DF_1_NORELOC 0x00400000
-#define DF_1_SYMINTPOSE 0x00800000 /* Object has individual interposers. */
-#define DF_1_GLOBAUDIT 0x01000000 /* Global auditing required. */
-#define DF_1_SINGLETON 0x02000000 /* Singleton symbols are used. */
-#define DF_1_STUB 0x04000000
-#define DF_1_PIE 0x08000000
-#define DF_1_KMOD 0x10000000
-#define DF_1_WEAKFILTER 0x20000000
-#define DF_1_NOCOMMON 0x40000000
-
-/* Flags for the feature selection in DT_FEATURE_1. */
-#define DTF_1_PARINIT 0x00000001
-#define DTF_1_CONFEXP 0x00000002
-
-/* Flags in the DT_POSFLAG_1 entry effecting only the next DT_* entry. */
-#define DF_P1_LAZYLOAD 0x00000001 /* Lazyload following object. */
-#define DF_P1_GROUPPERM 0x00000002 /* Symbols from next object are not
- generally available. */
-
-/* Version definition sections. */
-
-typedef struct
-{
- Elf32_Half vd_version; /* Version revision */
- Elf32_Half vd_flags; /* Version information */
- Elf32_Half vd_ndx; /* Version Index */
- Elf32_Half vd_cnt; /* Number of associated aux entries */
- Elf32_Word vd_hash; /* Version name hash value */
- Elf32_Word vd_aux; /* Offset in bytes to verdaux array */
- Elf32_Word vd_next; /* Offset in bytes to next verdef
- entry */
-} Elf32_Verdef;
-
-typedef struct
-{
- Elf64_Half vd_version; /* Version revision */
- Elf64_Half vd_flags; /* Version information */
- Elf64_Half vd_ndx; /* Version Index */
- Elf64_Half vd_cnt; /* Number of associated aux entries */
- Elf64_Word vd_hash; /* Version name hash value */
- Elf64_Word vd_aux; /* Offset in bytes to verdaux array */
- Elf64_Word vd_next; /* Offset in bytes to next verdef
- entry */
-} Elf64_Verdef;
-
-
-/* Legal values for vd_version (version revision). */
-#define VER_DEF_NONE 0 /* No version */
-#define VER_DEF_CURRENT 1 /* Current version */
-#define VER_DEF_NUM 2 /* Given version number */
-
-/* Legal values for vd_flags (version information flags). */
-#define VER_FLG_BASE 0x1 /* Version definition of file itself */
-#define VER_FLG_WEAK 0x2 /* Weak version identifier. Also
- used by vna_flags below. */
-
-/* Versym symbol index values. */
-#define VER_NDX_LOCAL 0 /* Symbol is local. */
-#define VER_NDX_GLOBAL 1 /* Symbol is global. */
-#define VER_NDX_LORESERVE 0xff00 /* Beginning of reserved entries. */
-#define VER_NDX_ELIMINATE 0xff01 /* Symbol is to be eliminated. */
-
-/* Auxiliary version information. */
-
-typedef struct
-{
- Elf32_Word vda_name; /* Version or dependency names */
- Elf32_Word vda_next; /* Offset in bytes to next verdaux
- entry */
-} Elf32_Verdaux;
-
-typedef struct
-{
- Elf64_Word vda_name; /* Version or dependency names */
- Elf64_Word vda_next; /* Offset in bytes to next verdaux
- entry */
-} Elf64_Verdaux;
-
-
-/* Version dependency section. */
-
-typedef struct
-{
- Elf32_Half vn_version; /* Version of structure */
- Elf32_Half vn_cnt; /* Number of associated aux entries */
- Elf32_Word vn_file; /* Offset of filename for this
- dependency */
- Elf32_Word vn_aux; /* Offset in bytes to vernaux array */
- Elf32_Word vn_next; /* Offset in bytes to next verneed
- entry */
-} Elf32_Verneed;
-
-typedef struct
-{
- Elf64_Half vn_version; /* Version of structure */
- Elf64_Half vn_cnt; /* Number of associated aux entries */
- Elf64_Word vn_file; /* Offset of filename for this
- dependency */
- Elf64_Word vn_aux; /* Offset in bytes to vernaux array */
- Elf64_Word vn_next; /* Offset in bytes to next verneed
- entry */
-} Elf64_Verneed;
-
-
-/* Legal values for vn_version (version revision). */
-#define VER_NEED_NONE 0 /* No version */
-#define VER_NEED_CURRENT 1 /* Current version */
-#define VER_NEED_NUM 2 /* Given version number */
-
-/* Auxiliary needed version information. */
-
-typedef struct
-{
- Elf32_Word vna_hash; /* Hash value of dependency name */
- Elf32_Half vna_flags; /* Dependency specific information */
- Elf32_Half vna_other; /* Unused */
- Elf32_Word vna_name; /* Dependency name string offset */
- Elf32_Word vna_next; /* Offset in bytes to next vernaux
- entry */
-} Elf32_Vernaux;
-
-typedef struct
-{
- Elf64_Word vna_hash; /* Hash value of dependency name */
- Elf64_Half vna_flags; /* Dependency specific information */
- Elf64_Half vna_other; /* Unused */
- Elf64_Word vna_name; /* Dependency name string offset */
- Elf64_Word vna_next; /* Offset in bytes to next vernaux
- entry */
-} Elf64_Vernaux;
-
-
-/* Auxiliary vector. */
-
-/* This vector is normally only used by the program interpreter. The
- usual definition in an ABI supplement uses the name auxv_t. The
- vector is not usually defined in a standard file, but it
- can't hurt. We rename it to avoid conflicts. The sizes of these
- types are an arrangement between the exec server and the program
- interpreter, so we don't fully specify them here. */
-
-typedef struct
-{
- uint32_t a_type; /* Entry type */
- union
- {
- uint32_t a_val; /* Integer value */
- /* We use to have pointer elements added here. We cannot do that,
- though, since it does not work when using 32-bit definitions
- on 64-bit platforms and vice versa. */
- } a_un;
-} Elf32_auxv_t;
-
-typedef struct
-{
- uint64_t a_type; /* Entry type */
- union
- {
- uint64_t a_val; /* Integer value */
- /* We use to have pointer elements added here. We cannot do that,
- though, since it does not work when using 32-bit definitions
- on 64-bit platforms and vice versa. */
- } a_un;
-} Elf64_auxv_t;
-
-/* Legal values for a_type (entry type). */
-
-#define AT_NULL 0 /* End of vector */
-#define AT_IGNORE 1 /* Entry should be ignored */
-#define AT_EXECFD 2 /* File descriptor of program */
-#define AT_PHDR 3 /* Program headers for program */
-#define AT_PHENT 4 /* Size of program header entry */
-#define AT_PHNUM 5 /* Number of program headers */
-#define AT_PAGESZ 6 /* System page size */
-#define AT_BASE 7 /* Base address of interpreter */
-#define AT_FLAGS 8 /* Flags */
-#define AT_ENTRY 9 /* Entry point of program */
-#define AT_NOTELF 10 /* Program is not ELF */
-#define AT_UID 11 /* Real uid */
-#define AT_EUID 12 /* Effective uid */
-#define AT_GID 13 /* Real gid */
-#define AT_EGID 14 /* Effective gid */
-#define AT_CLKTCK 17 /* Frequency of times() */
-
-/* Some more special a_type values describing the hardware. */
-#define AT_PLATFORM 15 /* String identifying platform. */
-#define AT_HWCAP 16 /* Machine-dependent hints about
- processor capabilities. */
-
-/* This entry gives some information about the FPU initialization
- performed by the kernel. */
-#define AT_FPUCW 18 /* Used FPU control word. */
-
-/* Cache block sizes. */
-#define AT_DCACHEBSIZE 19 /* Data cache block size. */
-#define AT_ICACHEBSIZE 20 /* Instruction cache block size. */
-#define AT_UCACHEBSIZE 21 /* Unified cache block size. */
-
-/* A special ignored value for PPC, used by the kernel to control the
- interpretation of the AUXV. Must be > 16. */
-#define AT_IGNOREPPC 22 /* Entry should be ignored. */
-
-#define AT_SECURE 23 /* Boolean, was exec setuid-like? */
-
-#define AT_BASE_PLATFORM 24 /* String identifying real platforms.*/
-
-#define AT_RANDOM 25 /* Address of 16 random bytes. */
-
-#define AT_HWCAP2 26 /* More machine-dependent hints about
- processor capabilities. */
-
-#define AT_RSEQ_FEATURE_SIZE 27 /* rseq supported feature size. */
-#define AT_RSEQ_ALIGN 28 /* rseq allocation alignment. */
-
-#define AT_EXECFN 31 /* Filename of executable. */
-
-/* Pointer to the global system page used for system calls and other
- nice things. */
-#define AT_SYSINFO 32
-#define AT_SYSINFO_EHDR 33
-
-/* Shapes of the caches. Bits 0-3 contains associativity; bits 4-7 contains
- log2 of line size; mask those to get cache size. */
-#define AT_L1I_CACHESHAPE 34
-#define AT_L1D_CACHESHAPE 35
-#define AT_L2_CACHESHAPE 36
-#define AT_L3_CACHESHAPE 37
-
-/* Shapes of the caches, with more room to describe them.
- *GEOMETRY are comprised of cache line size in bytes in the bottom 16 bits
- and the cache associativity in the next 16 bits. */
-#define AT_L1I_CACHESIZE 40
-#define AT_L1I_CACHEGEOMETRY 41
-#define AT_L1D_CACHESIZE 42
-#define AT_L1D_CACHEGEOMETRY 43
-#define AT_L2_CACHESIZE 44
-#define AT_L2_CACHEGEOMETRY 45
-#define AT_L3_CACHESIZE 46
-#define AT_L3_CACHEGEOMETRY 47
-
-#define AT_MINSIGSTKSZ 51 /* Stack needed for signal delivery */
-
-/* Note section contents. Each entry in the note section begins with
- a header of a fixed form. */
-
-typedef struct
-{
- Elf32_Word n_namesz; /* Length of the note's name. */
- Elf32_Word n_descsz; /* Length of the note's descriptor. */
- Elf32_Word n_type; /* Type of the note. */
-} Elf32_Nhdr;
-
-typedef struct
-{
- Elf64_Word n_namesz; /* Length of the note's name. */
- Elf64_Word n_descsz; /* Length of the note's descriptor. */
- Elf64_Word n_type; /* Type of the note. */
-} Elf64_Nhdr;
-
-/* Known names of notes. */
-
-/* Solaris entries in the note section have this name. */
-#define ELF_NOTE_SOLARIS "SUNW Solaris"
-
-/* Note entries for GNU systems have this name. */
-#define ELF_NOTE_GNU "GNU"
-
-/* Note entries for freedesktop.org have this name. */
-#define ELF_NOTE_FDO "FDO"
-
-/* Defined types of notes for Solaris. */
-
-/* Value of descriptor (one word) is desired pagesize for the binary. */
-#define ELF_NOTE_PAGESIZE_HINT 1
-
-
-/* Defined note types for GNU systems. */
-
-/* ABI information. The descriptor consists of words:
- word 0: OS descriptor
- word 1: major version of the ABI
- word 2: minor version of the ABI
- word 3: subminor version of the ABI
-*/
-#define NT_GNU_ABI_TAG 1
-#define ELF_NOTE_ABI NT_GNU_ABI_TAG /* Old name. */
-
-/* Known OSes. These values can appear in word 0 of an
- NT_GNU_ABI_TAG note section entry. */
-#define ELF_NOTE_OS_LINUX 0
-#define ELF_NOTE_OS_GNU 1
-#define ELF_NOTE_OS_SOLARIS2 2
-#define ELF_NOTE_OS_FREEBSD 3
-
-/* Synthetic hwcap information. The descriptor begins with two words:
- word 0: number of entries
- word 1: bitmask of enabled entries
- Then follow variable-length entries, one byte followed by a
- '\0'-terminated hwcap name string. The byte gives the bit
- number to test if enabled, (1U << bit) & bitmask. */
-#define NT_GNU_HWCAP 2
-
-/* Build ID bits as generated by ld --build-id.
- The descriptor consists of any nonzero number of bytes. */
-#define NT_GNU_BUILD_ID 3
-
-/* Version note generated by GNU gold containing a version string. */
-#define NT_GNU_GOLD_VERSION 4
-
-/* Program property. */
-#define NT_GNU_PROPERTY_TYPE_0 5
-
-/* Packaging metadata as defined on
- https://systemd.io/COREDUMP_PACKAGE_METADATA/ */
-#define NT_FDO_PACKAGING_METADATA 0xcafe1a7e
-
-/* Note section name of program property. */
-#define NOTE_GNU_PROPERTY_SECTION_NAME ".note.gnu.property"
-
-/* Values used in GNU .note.gnu.property notes (NT_GNU_PROPERTY_TYPE_0). */
-
-/* Stack size. */
-#define GNU_PROPERTY_STACK_SIZE 1
-/* No copy relocation on protected data symbol. */
-#define GNU_PROPERTY_NO_COPY_ON_PROTECTED 2
-
-/* A 4-byte unsigned integer property: A bit is set if it is set in all
- relocatable inputs. */
-#define GNU_PROPERTY_UINT32_AND_LO 0xb0000000
-#define GNU_PROPERTY_UINT32_AND_HI 0xb0007fff
-
-/* A 4-byte unsigned integer property: A bit is set if it is set in any
- relocatable inputs. */
-#define GNU_PROPERTY_UINT32_OR_LO 0xb0008000
-#define GNU_PROPERTY_UINT32_OR_HI 0xb000ffff
-
-/* The needed properties by the object file. */
-#define GNU_PROPERTY_1_NEEDED GNU_PROPERTY_UINT32_OR_LO
-
-/* Set if the object file requires canonical function pointers and
- cannot be used with copy relocation. */
-#define GNU_PROPERTY_1_NEEDED_INDIRECT_EXTERN_ACCESS (1U << 0)
-
-/* Processor-specific semantics, lo */
-#define GNU_PROPERTY_LOPROC 0xc0000000
-/* Processor-specific semantics, hi */
-#define GNU_PROPERTY_HIPROC 0xdfffffff
-/* Application-specific semantics, lo */
-#define GNU_PROPERTY_LOUSER 0xe0000000
-/* Application-specific semantics, hi */
-#define GNU_PROPERTY_HIUSER 0xffffffff
-
-/* AArch64 specific GNU properties. */
-#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
-
-#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
-#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1)
-
-/* The x86 instruction sets indicated by the corresponding bits are
- used in program. Their support in the hardware is optional. */
-#define GNU_PROPERTY_X86_ISA_1_USED 0xc0010002
-/* The x86 instruction sets indicated by the corresponding bits are
- used in program and they must be supported by the hardware. */
-#define GNU_PROPERTY_X86_ISA_1_NEEDED 0xc0008002
-/* X86 processor-specific features used in program. */
-#define GNU_PROPERTY_X86_FEATURE_1_AND 0xc0000002
-
-/* GNU_PROPERTY_X86_ISA_1_BASELINE: CMOV, CX8 (cmpxchg8b), FPU (fld),
- MMX, OSFXSR (fxsave), SCE (syscall), SSE and SSE2. */
-#define GNU_PROPERTY_X86_ISA_1_BASELINE (1U << 0)
-/* GNU_PROPERTY_X86_ISA_1_V2: GNU_PROPERTY_X86_ISA_1_BASELINE,
- CMPXCHG16B (cmpxchg16b), LAHF-SAHF (lahf), POPCNT (popcnt), SSE3,
- SSSE3, SSE4.1 and SSE4.2. */
-#define GNU_PROPERTY_X86_ISA_1_V2 (1U << 1)
-/* GNU_PROPERTY_X86_ISA_1_V3: GNU_PROPERTY_X86_ISA_1_V2, AVX, AVX2, BMI1,
- BMI2, F16C, FMA, LZCNT, MOVBE, XSAVE. */
-#define GNU_PROPERTY_X86_ISA_1_V3 (1U << 2)
-/* GNU_PROPERTY_X86_ISA_1_V4: GNU_PROPERTY_X86_ISA_1_V3, AVX512F,
- AVX512BW, AVX512CD, AVX512DQ and AVX512VL. */
-#define GNU_PROPERTY_X86_ISA_1_V4 (1U << 3)
-
-/* This indicates that all executable sections are compatible with
- IBT. */
-#define GNU_PROPERTY_X86_FEATURE_1_IBT (1U << 0)
-/* This indicates that all executable sections are compatible with
- SHSTK. */
-#define GNU_PROPERTY_X86_FEATURE_1_SHSTK (1U << 1)
-
-/* Move records. */
-typedef struct
-{
- Elf32_Xword m_value; /* Symbol value. */
- Elf32_Word m_info; /* Size and index. */
- Elf32_Word m_poffset; /* Symbol offset. */
- Elf32_Half m_repeat; /* Repeat count. */
- Elf32_Half m_stride; /* Stride info. */
-} Elf32_Move;
-
-typedef struct
-{
- Elf64_Xword m_value; /* Symbol value. */
- Elf64_Xword m_info; /* Size and index. */
- Elf64_Xword m_poffset; /* Symbol offset. */
- Elf64_Half m_repeat; /* Repeat count. */
- Elf64_Half m_stride; /* Stride info. */
-} Elf64_Move;
-
-/* Macro to construct move records. */
-#define ELF32_M_SYM(info) ((info) >> 8)
-#define ELF32_M_SIZE(info) ((unsigned char) (info))
-#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size))
-
-#define ELF64_M_SYM(info) ELF32_M_SYM (info)
-#define ELF64_M_SIZE(info) ELF32_M_SIZE (info)
-#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size)
-
-
-/* Motorola 68k specific definitions. */
-
-/* Values for Elf32_Ehdr.e_flags. */
-#define EF_CPU32 0x00810000
-
-/* m68k relocs. */
-
-#define R_68K_NONE 0 /* No reloc */
-#define R_68K_32 1 /* Direct 32 bit */
-#define R_68K_16 2 /* Direct 16 bit */
-#define R_68K_8 3 /* Direct 8 bit */
-#define R_68K_PC32 4 /* PC relative 32 bit */
-#define R_68K_PC16 5 /* PC relative 16 bit */
-#define R_68K_PC8 6 /* PC relative 8 bit */
-#define R_68K_GOT32 7 /* 32 bit PC relative GOT entry */
-#define R_68K_GOT16 8 /* 16 bit PC relative GOT entry */
-#define R_68K_GOT8 9 /* 8 bit PC relative GOT entry */
-#define R_68K_GOT32O 10 /* 32 bit GOT offset */
-#define R_68K_GOT16O 11 /* 16 bit GOT offset */
-#define R_68K_GOT8O 12 /* 8 bit GOT offset */
-#define R_68K_PLT32 13 /* 32 bit PC relative PLT address */
-#define R_68K_PLT16 14 /* 16 bit PC relative PLT address */
-#define R_68K_PLT8 15 /* 8 bit PC relative PLT address */
-#define R_68K_PLT32O 16 /* 32 bit PLT offset */
-#define R_68K_PLT16O 17 /* 16 bit PLT offset */
-#define R_68K_PLT8O 18 /* 8 bit PLT offset */
-#define R_68K_COPY 19 /* Copy symbol at runtime */
-#define R_68K_GLOB_DAT 20 /* Create GOT entry */
-#define R_68K_JMP_SLOT 21 /* Create PLT entry */
-#define R_68K_RELATIVE 22 /* Adjust by program base */
-#define R_68K_TLS_GD32 25 /* 32 bit GOT offset for GD */
-#define R_68K_TLS_GD16 26 /* 16 bit GOT offset for GD */
-#define R_68K_TLS_GD8 27 /* 8 bit GOT offset for GD */
-#define R_68K_TLS_LDM32 28 /* 32 bit GOT offset for LDM */
-#define R_68K_TLS_LDM16 29 /* 16 bit GOT offset for LDM */
-#define R_68K_TLS_LDM8 30 /* 8 bit GOT offset for LDM */
-#define R_68K_TLS_LDO32 31 /* 32 bit module-relative offset */
-#define R_68K_TLS_LDO16 32 /* 16 bit module-relative offset */
-#define R_68K_TLS_LDO8 33 /* 8 bit module-relative offset */
-#define R_68K_TLS_IE32 34 /* 32 bit GOT offset for IE */
-#define R_68K_TLS_IE16 35 /* 16 bit GOT offset for IE */
-#define R_68K_TLS_IE8 36 /* 8 bit GOT offset for IE */
-#define R_68K_TLS_LE32 37 /* 32 bit offset relative to
- static TLS block */
-#define R_68K_TLS_LE16 38 /* 16 bit offset relative to
- static TLS block */
-#define R_68K_TLS_LE8 39 /* 8 bit offset relative to
- static TLS block */
-#define R_68K_TLS_DTPMOD32 40 /* 32 bit module number */
-#define R_68K_TLS_DTPREL32 41 /* 32 bit module-relative offset */
-#define R_68K_TLS_TPREL32 42 /* 32 bit TP-relative offset */
-/* Keep this the last entry. */
-#define R_68K_NUM 43
-
-/* Intel 80386 specific definitions. */
-
-/* i386 relocs. */
-
-#define R_386_NONE 0 /* No reloc */
-#define R_386_32 1 /* Direct 32 bit */
-#define R_386_PC32 2 /* PC relative 32 bit */
-#define R_386_GOT32 3 /* 32 bit GOT entry */
-#define R_386_PLT32 4 /* 32 bit PLT address */
-#define R_386_COPY 5 /* Copy symbol at runtime */
-#define R_386_GLOB_DAT 6 /* Create GOT entry */
-#define R_386_JMP_SLOT 7 /* Create PLT entry */
-#define R_386_RELATIVE 8 /* Adjust by program base */
-#define R_386_GOTOFF 9 /* 32 bit offset to GOT */
-#define R_386_GOTPC 10 /* 32 bit PC relative offset to GOT */
-#define R_386_32PLT 11
-#define R_386_TLS_TPOFF 14 /* Offset in static TLS block */
-#define R_386_TLS_IE 15 /* Address of GOT entry for static TLS
- block offset */
-#define R_386_TLS_GOTIE 16 /* GOT entry for static TLS block
- offset */
-#define R_386_TLS_LE 17 /* Offset relative to static TLS
- block */
-#define R_386_TLS_GD 18 /* Direct 32 bit for GNU version of
- general dynamic thread local data */
-#define R_386_TLS_LDM 19 /* Direct 32 bit for GNU version of
- local dynamic thread local data
- in LE code */
-#define R_386_16 20
-#define R_386_PC16 21
-#define R_386_8 22
-#define R_386_PC8 23
-#define R_386_TLS_GD_32 24 /* Direct 32 bit for general dynamic
- thread local data */
-#define R_386_TLS_GD_PUSH 25 /* Tag for pushl in GD TLS code */
-#define R_386_TLS_GD_CALL 26 /* Relocation for call to
- __tls_get_addr() */
-#define R_386_TLS_GD_POP 27 /* Tag for popl in GD TLS code */
-#define R_386_TLS_LDM_32 28 /* Direct 32 bit for local dynamic
- thread local data in LE code */
-#define R_386_TLS_LDM_PUSH 29 /* Tag for pushl in LDM TLS code */
-#define R_386_TLS_LDM_CALL 30 /* Relocation for call to
- __tls_get_addr() in LDM code */
-#define R_386_TLS_LDM_POP 31 /* Tag for popl in LDM TLS code */
-#define R_386_TLS_LDO_32 32 /* Offset relative to TLS block */
-#define R_386_TLS_IE_32 33 /* GOT entry for negated static TLS
- block offset */
-#define R_386_TLS_LE_32 34 /* Negated offset relative to static
- TLS block */
-#define R_386_TLS_DTPMOD32 35 /* ID of module containing symbol */
-#define R_386_TLS_DTPOFF32 36 /* Offset in TLS block */
-#define R_386_TLS_TPOFF32 37 /* Negated offset in static TLS block */
-#define R_386_SIZE32 38 /* 32-bit symbol size */
-#define R_386_TLS_GOTDESC 39 /* GOT offset for TLS descriptor. */
-#define R_386_TLS_DESC_CALL 40 /* Marker of call through TLS
- descriptor for
- relaxation. */
-#define R_386_TLS_DESC 41 /* TLS descriptor containing
- pointer to code and to
- argument, returning the TLS
- offset for the symbol. */
-#define R_386_IRELATIVE 42 /* Adjust indirectly by program base */
-#define R_386_GOT32X 43 /* Load from 32 bit GOT entry,
- relaxable. */
-/* Keep this the last entry. */
-#define R_386_NUM 44
-
-/* SUN SPARC specific definitions. */
-
-/* Legal values for ST_TYPE subfield of st_info (symbol type). */
-
-#define STT_SPARC_REGISTER 13 /* Global register reserved to app. */
-
-/* Values for Elf64_Ehdr.e_flags. */
-
-#define EF_SPARCV9_MM 3
-#define EF_SPARCV9_TSO 0
-#define EF_SPARCV9_PSO 1
-#define EF_SPARCV9_RMO 2
-#define EF_SPARC_LEDATA 0x800000 /* little endian data */
-#define EF_SPARC_EXT_MASK 0xFFFF00
-#define EF_SPARC_32PLUS 0x000100 /* generic V8+ features */
-#define EF_SPARC_SUN_US1 0x000200 /* Sun UltraSPARC1 extensions */
-#define EF_SPARC_HAL_R1 0x000400 /* HAL R1 extensions */
-#define EF_SPARC_SUN_US3 0x000800 /* Sun UltraSPARCIII extensions */
-
-/* SPARC relocs. */
-
-#define R_SPARC_NONE 0 /* No reloc */
-#define R_SPARC_8 1 /* Direct 8 bit */
-#define R_SPARC_16 2 /* Direct 16 bit */
-#define R_SPARC_32 3 /* Direct 32 bit */
-#define R_SPARC_DISP8 4 /* PC relative 8 bit */
-#define R_SPARC_DISP16 5 /* PC relative 16 bit */
-#define R_SPARC_DISP32 6 /* PC relative 32 bit */
-#define R_SPARC_WDISP30 7 /* PC relative 30 bit shifted */
-#define R_SPARC_WDISP22 8 /* PC relative 22 bit shifted */
-#define R_SPARC_HI22 9 /* High 22 bit */
-#define R_SPARC_22 10 /* Direct 22 bit */
-#define R_SPARC_13 11 /* Direct 13 bit */
-#define R_SPARC_LO10 12 /* Truncated 10 bit */
-#define R_SPARC_GOT10 13 /* Truncated 10 bit GOT entry */
-#define R_SPARC_GOT13 14 /* 13 bit GOT entry */
-#define R_SPARC_GOT22 15 /* 22 bit GOT entry shifted */
-#define R_SPARC_PC10 16 /* PC relative 10 bit truncated */
-#define R_SPARC_PC22 17 /* PC relative 22 bit shifted */
-#define R_SPARC_WPLT30 18 /* 30 bit PC relative PLT address */
-#define R_SPARC_COPY 19 /* Copy symbol at runtime */
-#define R_SPARC_GLOB_DAT 20 /* Create GOT entry */
-#define R_SPARC_JMP_SLOT 21 /* Create PLT entry */
-#define R_SPARC_RELATIVE 22 /* Adjust by program base */
-#define R_SPARC_UA32 23 /* Direct 32 bit unaligned */
-
-/* Additional Sparc64 relocs. */
-
-#define R_SPARC_PLT32 24 /* Direct 32 bit ref to PLT entry */
-#define R_SPARC_HIPLT22 25 /* High 22 bit PLT entry */
-#define R_SPARC_LOPLT10 26 /* Truncated 10 bit PLT entry */
-#define R_SPARC_PCPLT32 27 /* PC rel 32 bit ref to PLT entry */
-#define R_SPARC_PCPLT22 28 /* PC rel high 22 bit PLT entry */
-#define R_SPARC_PCPLT10 29 /* PC rel trunc 10 bit PLT entry */
-#define R_SPARC_10 30 /* Direct 10 bit */
-#define R_SPARC_11 31 /* Direct 11 bit */
-#define R_SPARC_64 32 /* Direct 64 bit */
-#define R_SPARC_OLO10 33 /* 10bit with secondary 13bit addend */
-#define R_SPARC_HH22 34 /* Top 22 bits of direct 64 bit */
-#define R_SPARC_HM10 35 /* High middle 10 bits of ... */
-#define R_SPARC_LM22 36 /* Low middle 22 bits of ... */
-#define R_SPARC_PC_HH22 37 /* Top 22 bits of pc rel 64 bit */
-#define R_SPARC_PC_HM10 38 /* High middle 10 bit of ... */
-#define R_SPARC_PC_LM22 39 /* Low miggle 22 bits of ... */
-#define R_SPARC_WDISP16 40 /* PC relative 16 bit shifted */
-#define R_SPARC_WDISP19 41 /* PC relative 19 bit shifted */
-#define R_SPARC_GLOB_JMP 42 /* was part of v9 ABI but was removed */
-#define R_SPARC_7 43 /* Direct 7 bit */
-#define R_SPARC_5 44 /* Direct 5 bit */
-#define R_SPARC_6 45 /* Direct 6 bit */
-#define R_SPARC_DISP64 46 /* PC relative 64 bit */
-#define R_SPARC_PLT64 47 /* Direct 64 bit ref to PLT entry */
-#define R_SPARC_HIX22 48 /* High 22 bit complemented */
-#define R_SPARC_LOX10 49 /* Truncated 11 bit complemented */
-#define R_SPARC_H44 50 /* Direct high 12 of 44 bit */
-#define R_SPARC_M44 51 /* Direct mid 22 of 44 bit */
-#define R_SPARC_L44 52 /* Direct low 10 of 44 bit */
-#define R_SPARC_REGISTER 53 /* Global register usage */
-#define R_SPARC_UA64 54 /* Direct 64 bit unaligned */
-#define R_SPARC_UA16 55 /* Direct 16 bit unaligned */
-#define R_SPARC_TLS_GD_HI22 56
-#define R_SPARC_TLS_GD_LO10 57
-#define R_SPARC_TLS_GD_ADD 58
-#define R_SPARC_TLS_GD_CALL 59
-#define R_SPARC_TLS_LDM_HI22 60
-#define R_SPARC_TLS_LDM_LO10 61
-#define R_SPARC_TLS_LDM_ADD 62
-#define R_SPARC_TLS_LDM_CALL 63
-#define R_SPARC_TLS_LDO_HIX22 64
-#define R_SPARC_TLS_LDO_LOX10 65
-#define R_SPARC_TLS_LDO_ADD 66
-#define R_SPARC_TLS_IE_HI22 67
-#define R_SPARC_TLS_IE_LO10 68
-#define R_SPARC_TLS_IE_LD 69
-#define R_SPARC_TLS_IE_LDX 70
-#define R_SPARC_TLS_IE_ADD 71
-#define R_SPARC_TLS_LE_HIX22 72
-#define R_SPARC_TLS_LE_LOX10 73
-#define R_SPARC_TLS_DTPMOD32 74
-#define R_SPARC_TLS_DTPMOD64 75
-#define R_SPARC_TLS_DTPOFF32 76
-#define R_SPARC_TLS_DTPOFF64 77
-#define R_SPARC_TLS_TPOFF32 78
-#define R_SPARC_TLS_TPOFF64 79
-#define R_SPARC_GOTDATA_HIX22 80
-#define R_SPARC_GOTDATA_LOX10 81
-#define R_SPARC_GOTDATA_OP_HIX22 82
-#define R_SPARC_GOTDATA_OP_LOX10 83
-#define R_SPARC_GOTDATA_OP 84
-#define R_SPARC_H34 85
-#define R_SPARC_SIZE32 86
-#define R_SPARC_SIZE64 87
-#define R_SPARC_WDISP10 88
-#define R_SPARC_JMP_IREL 248
-#define R_SPARC_IRELATIVE 249
-#define R_SPARC_GNU_VTINHERIT 250
-#define R_SPARC_GNU_VTENTRY 251
-#define R_SPARC_REV32 252
-/* Keep this the last entry. */
-#define R_SPARC_NUM 253
-
-/* For Sparc64, legal values for d_tag of Elf64_Dyn. */
-
-#define DT_SPARC_REGISTER 0x70000001
-#define DT_SPARC_NUM 2
-
-/* MIPS R3000 specific definitions. */
-
-/* Legal values for e_flags field of Elf32_Ehdr. */
-
-#define EF_MIPS_NOREORDER 1 /* A .noreorder directive was used. */
-#define EF_MIPS_PIC 2 /* Contains PIC code. */
-#define EF_MIPS_CPIC 4 /* Uses PIC calling sequence. */
-#define EF_MIPS_XGOT 8
-#define EF_MIPS_64BIT_WHIRL 16
-#define EF_MIPS_ABI2 32
-#define EF_MIPS_ABI_ON32 64
-#define EF_MIPS_FP64 512 /* Uses FP64 (12 callee-saved). */
-#define EF_MIPS_NAN2008 1024 /* Uses IEEE 754-2008 NaN encoding. */
-#define EF_MIPS_ARCH 0xf0000000 /* MIPS architecture level. */
-
-/* Legal values for MIPS architecture level. */
-
-#define EF_MIPS_ARCH_1 0x00000000 /* -mips1 code. */
-#define EF_MIPS_ARCH_2 0x10000000 /* -mips2 code. */
-#define EF_MIPS_ARCH_3 0x20000000 /* -mips3 code. */
-#define EF_MIPS_ARCH_4 0x30000000 /* -mips4 code. */
-#define EF_MIPS_ARCH_5 0x40000000 /* -mips5 code. */
-#define EF_MIPS_ARCH_32 0x50000000 /* MIPS32 code. */
-#define EF_MIPS_ARCH_64 0x60000000 /* MIPS64 code. */
-#define EF_MIPS_ARCH_32R2 0x70000000 /* MIPS32r2 code. */
-#define EF_MIPS_ARCH_64R2 0x80000000 /* MIPS64r2 code. */
-
-/* The following are unofficial names and should not be used. */
-
-#define E_MIPS_ARCH_1 EF_MIPS_ARCH_1
-#define E_MIPS_ARCH_2 EF_MIPS_ARCH_2
-#define E_MIPS_ARCH_3 EF_MIPS_ARCH_3
-#define E_MIPS_ARCH_4 EF_MIPS_ARCH_4
-#define E_MIPS_ARCH_5 EF_MIPS_ARCH_5
-#define E_MIPS_ARCH_32 EF_MIPS_ARCH_32
-#define E_MIPS_ARCH_64 EF_MIPS_ARCH_64
-
-/* Special section indices. */
-
-#define SHN_MIPS_ACOMMON 0xff00 /* Allocated common symbols. */
-#define SHN_MIPS_TEXT 0xff01 /* Allocated test symbols. */
-#define SHN_MIPS_DATA 0xff02 /* Allocated data symbols. */
-#define SHN_MIPS_SCOMMON 0xff03 /* Small common symbols. */
-#define SHN_MIPS_SUNDEFINED 0xff04 /* Small undefined symbols. */
-
-/* Legal values for sh_type field of Elf32_Shdr. */
-
-#define SHT_MIPS_LIBLIST 0x70000000 /* Shared objects used in link. */
-#define SHT_MIPS_MSYM 0x70000001
-#define SHT_MIPS_CONFLICT 0x70000002 /* Conflicting symbols. */
-#define SHT_MIPS_GPTAB 0x70000003 /* Global data area sizes. */
-#define SHT_MIPS_UCODE 0x70000004 /* Reserved for SGI/MIPS compilers */
-#define SHT_MIPS_DEBUG 0x70000005 /* MIPS ECOFF debugging info. */
-#define SHT_MIPS_REGINFO 0x70000006 /* Register usage information. */
-#define SHT_MIPS_PACKAGE 0x70000007
-#define SHT_MIPS_PACKSYM 0x70000008
-#define SHT_MIPS_RELD 0x70000009
-#define SHT_MIPS_IFACE 0x7000000b
-#define SHT_MIPS_CONTENT 0x7000000c
-#define SHT_MIPS_OPTIONS 0x7000000d /* Miscellaneous options. */
-#define SHT_MIPS_SHDR 0x70000010
-#define SHT_MIPS_FDESC 0x70000011
-#define SHT_MIPS_EXTSYM 0x70000012
-#define SHT_MIPS_DENSE 0x70000013
-#define SHT_MIPS_PDESC 0x70000014
-#define SHT_MIPS_LOCSYM 0x70000015
-#define SHT_MIPS_AUXSYM 0x70000016
-#define SHT_MIPS_OPTSYM 0x70000017
-#define SHT_MIPS_LOCSTR 0x70000018
-#define SHT_MIPS_LINE 0x70000019
-#define SHT_MIPS_RFDESC 0x7000001a
-#define SHT_MIPS_DELTASYM 0x7000001b
-#define SHT_MIPS_DELTAINST 0x7000001c
-#define SHT_MIPS_DELTACLASS 0x7000001d
-#define SHT_MIPS_DWARF 0x7000001e /* DWARF debugging information. */
-#define SHT_MIPS_DELTADECL 0x7000001f
-#define SHT_MIPS_SYMBOL_LIB 0x70000020
-#define SHT_MIPS_EVENTS 0x70000021 /* Event section. */
-#define SHT_MIPS_TRANSLATE 0x70000022
-#define SHT_MIPS_PIXIE 0x70000023
-#define SHT_MIPS_XLATE 0x70000024
-#define SHT_MIPS_XLATE_DEBUG 0x70000025
-#define SHT_MIPS_WHIRL 0x70000026
-#define SHT_MIPS_EH_REGION 0x70000027
-#define SHT_MIPS_XLATE_OLD 0x70000028
-#define SHT_MIPS_PDR_EXCEPTION 0x70000029
-#define SHT_MIPS_XHASH 0x7000002b
-
-/* Legal values for sh_flags field of Elf32_Shdr. */
-
-#define SHF_MIPS_GPREL 0x10000000 /* Must be in global data area. */
-#define SHF_MIPS_MERGE 0x20000000
-#define SHF_MIPS_ADDR 0x40000000
-#define SHF_MIPS_STRINGS 0x80000000
-#define SHF_MIPS_NOSTRIP 0x08000000
-#define SHF_MIPS_LOCAL 0x04000000
-#define SHF_MIPS_NAMES 0x02000000
-#define SHF_MIPS_NODUPE 0x01000000
-
-
-/* Symbol tables. */
-
-/* MIPS specific values for `st_other'. */
-#define STO_MIPS_DEFAULT 0x0
-#define STO_MIPS_INTERNAL 0x1
-#define STO_MIPS_HIDDEN 0x2
-#define STO_MIPS_PROTECTED 0x3
-#define STO_MIPS_PLT 0x8
-#define STO_MIPS_SC_ALIGN_UNUSED 0xff
-
-/* MIPS specific values for `st_info'. */
-#define STB_MIPS_SPLIT_COMMON 13
-
-/* Entries found in sections of type SHT_MIPS_GPTAB. */
-
-typedef union
-{
- struct
- {
- Elf32_Word gt_current_g_value; /* -G value used for compilation. */
- Elf32_Word gt_unused; /* Not used. */
- } gt_header; /* First entry in section. */
- struct
- {
- Elf32_Word gt_g_value; /* If this value were used for -G. */
- Elf32_Word gt_bytes; /* This many bytes would be used. */
- } gt_entry; /* Subsequent entries in section. */
-} Elf32_gptab;
-
-/* Entry found in sections of type SHT_MIPS_REGINFO. */
-
-typedef struct
-{
- Elf32_Word ri_gprmask; /* General registers used. */
- Elf32_Word ri_cprmask[4]; /* Coprocessor registers used. */
- Elf32_Sword ri_gp_value; /* $gp register value. */
-} Elf32_RegInfo;
-
-/* Entries found in sections of type SHT_MIPS_OPTIONS. */
-
-typedef struct
-{
- unsigned char kind; /* Determines interpretation of the
- variable part of descriptor. */
- unsigned char size; /* Size of descriptor, including header. */
- Elf32_Section section; /* Section header index of section affected,
- 0 for global options. */
- Elf32_Word info; /* Kind-specific information. */
-} Elf_Options;
-
-/* Values for `kind' field in Elf_Options. */
-
-#define ODK_NULL 0 /* Undefined. */
-#define ODK_REGINFO 1 /* Register usage information. */
-#define ODK_EXCEPTIONS 2 /* Exception processing options. */
-#define ODK_PAD 3 /* Section padding options. */
-#define ODK_HWPATCH 4 /* Hardware workarounds performed */
-#define ODK_FILL 5 /* record the fill value used by the linker. */
-#define ODK_TAGS 6 /* reserve space for desktop tools to write. */
-#define ODK_HWAND 7 /* HW workarounds. 'AND' bits when merging. */
-#define ODK_HWOR 8 /* HW workarounds. 'OR' bits when merging. */
-
-/* Values for `info' in Elf_Options for ODK_EXCEPTIONS entries. */
-
-#define OEX_FPU_MIN 0x1f /* FPE's which MUST be enabled. */
-#define OEX_FPU_MAX 0x1f00 /* FPE's which MAY be enabled. */
-#define OEX_PAGE0 0x10000 /* page zero must be mapped. */
-#define OEX_SMM 0x20000 /* Force sequential memory mode? */
-#define OEX_FPDBUG 0x40000 /* Force floating point debug mode? */
-#define OEX_PRECISEFP OEX_FPDBUG
-#define OEX_DISMISS 0x80000 /* Dismiss invalid address faults? */
-
-#define OEX_FPU_INVAL 0x10
-#define OEX_FPU_DIV0 0x08
-#define OEX_FPU_OFLO 0x04
-#define OEX_FPU_UFLO 0x02
-#define OEX_FPU_INEX 0x01
-
-/* Masks for `info' in Elf_Options for an ODK_HWPATCH entry. */
-
-#define OHW_R4KEOP 0x1 /* R4000 end-of-page patch. */
-#define OHW_R8KPFETCH 0x2 /* may need R8000 prefetch patch. */
-#define OHW_R5KEOP 0x4 /* R5000 end-of-page patch. */
-#define OHW_R5KCVTL 0x8 /* R5000 cvt.[ds].l bug. clean=1. */
-
-#define OPAD_PREFIX 0x1
-#define OPAD_POSTFIX 0x2
-#define OPAD_SYMBOL 0x4
-
-/* Entry found in `.options' section. */
-
-typedef struct
-{
- Elf32_Word hwp_flags1; /* Extra flags. */
- Elf32_Word hwp_flags2; /* Extra flags. */
-} Elf_Options_Hw;
-
-/* Masks for `info' in ElfOptions for ODK_HWAND and ODK_HWOR entries. */
-
-#define OHWA0_R4KEOP_CHECKED 0x00000001
-#define OHWA1_R4KEOP_CLEAN 0x00000002
-
-/* MIPS relocs. */
-
-#define R_MIPS_NONE 0 /* No reloc */
-#define R_MIPS_16 1 /* Direct 16 bit */
-#define R_MIPS_32 2 /* Direct 32 bit */
-#define R_MIPS_REL32 3 /* PC relative 32 bit */
-#define R_MIPS_26 4 /* Direct 26 bit shifted */
-#define R_MIPS_HI16 5 /* High 16 bit */
-#define R_MIPS_LO16 6 /* Low 16 bit */
-#define R_MIPS_GPREL16 7 /* GP relative 16 bit */
-#define R_MIPS_LITERAL 8 /* 16 bit literal entry */
-#define R_MIPS_GOT16 9 /* 16 bit GOT entry */
-#define R_MIPS_PC16 10 /* PC relative 16 bit */
-#define R_MIPS_CALL16 11 /* 16 bit GOT entry for function */
-#define R_MIPS_GPREL32 12 /* GP relative 32 bit */
-
-#define R_MIPS_SHIFT5 16
-#define R_MIPS_SHIFT6 17
-#define R_MIPS_64 18
-#define R_MIPS_GOT_DISP 19
-#define R_MIPS_GOT_PAGE 20
-#define R_MIPS_GOT_OFST 21
-#define R_MIPS_GOT_HI16 22
-#define R_MIPS_GOT_LO16 23
-#define R_MIPS_SUB 24
-#define R_MIPS_INSERT_A 25
-#define R_MIPS_INSERT_B 26
-#define R_MIPS_DELETE 27
-#define R_MIPS_HIGHER 28
-#define R_MIPS_HIGHEST 29
-#define R_MIPS_CALL_HI16 30
-#define R_MIPS_CALL_LO16 31
-#define R_MIPS_SCN_DISP 32
-#define R_MIPS_REL16 33
-#define R_MIPS_ADD_IMMEDIATE 34
-#define R_MIPS_PJUMP 35
-#define R_MIPS_RELGOT 36
-#define R_MIPS_JALR 37
-#define R_MIPS_TLS_DTPMOD32 38 /* Module number 32 bit */
-#define R_MIPS_TLS_DTPREL32 39 /* Module-relative offset 32 bit */
-#define R_MIPS_TLS_DTPMOD64 40 /* Module number 64 bit */
-#define R_MIPS_TLS_DTPREL64 41 /* Module-relative offset 64 bit */
-#define R_MIPS_TLS_GD 42 /* 16 bit GOT offset for GD */
-#define R_MIPS_TLS_LDM 43 /* 16 bit GOT offset for LDM */
-#define R_MIPS_TLS_DTPREL_HI16 44 /* Module-relative offset, high 16 bits */
-#define R_MIPS_TLS_DTPREL_LO16 45 /* Module-relative offset, low 16 bits */
-#define R_MIPS_TLS_GOTTPREL 46 /* 16 bit GOT offset for IE */
-#define R_MIPS_TLS_TPREL32 47 /* TP-relative offset, 32 bit */
-#define R_MIPS_TLS_TPREL64 48 /* TP-relative offset, 64 bit */
-#define R_MIPS_TLS_TPREL_HI16 49 /* TP-relative offset, high 16 bits */
-#define R_MIPS_TLS_TPREL_LO16 50 /* TP-relative offset, low 16 bits */
-#define R_MIPS_GLOB_DAT 51
-#define R_MIPS_COPY 126
-#define R_MIPS_JUMP_SLOT 127
-/* Keep this the last entry. */
-#define R_MIPS_NUM 128
-
-/* Legal values for p_type field of Elf32_Phdr. */
-
-#define PT_MIPS_REGINFO 0x70000000 /* Register usage information. */
-#define PT_MIPS_RTPROC 0x70000001 /* Runtime procedure table. */
-#define PT_MIPS_OPTIONS 0x70000002
-#define PT_MIPS_ABIFLAGS 0x70000003 /* FP mode requirement. */
-
-/* Special program header types. */
-
-#define PF_MIPS_LOCAL 0x10000000
-
-/* Legal values for d_tag field of Elf32_Dyn. */
-
-#define DT_MIPS_RLD_VERSION 0x70000001 /* Runtime linker interface version */
-#define DT_MIPS_TIME_STAMP 0x70000002 /* Timestamp */
-#define DT_MIPS_ICHECKSUM 0x70000003 /* Checksum */
-#define DT_MIPS_IVERSION 0x70000004 /* Version string (string tbl index) */
-#define DT_MIPS_FLAGS 0x70000005 /* Flags */
-#define DT_MIPS_BASE_ADDRESS 0x70000006 /* Base address */
-#define DT_MIPS_MSYM 0x70000007
-#define DT_MIPS_CONFLICT 0x70000008 /* Address of CONFLICT section */
-#define DT_MIPS_LIBLIST 0x70000009 /* Address of LIBLIST section */
-#define DT_MIPS_LOCAL_GOTNO 0x7000000a /* Number of local GOT entries */
-#define DT_MIPS_CONFLICTNO 0x7000000b /* Number of CONFLICT entries */
-#define DT_MIPS_LIBLISTNO 0x70000010 /* Number of LIBLIST entries */
-#define DT_MIPS_SYMTABNO 0x70000011 /* Number of DYNSYM entries */
-#define DT_MIPS_UNREFEXTNO 0x70000012 /* First external DYNSYM */
-#define DT_MIPS_GOTSYM 0x70000013 /* First GOT entry in DYNSYM */
-#define DT_MIPS_HIPAGENO 0x70000014 /* Number of GOT page table entries */
-#define DT_MIPS_RLD_MAP 0x70000016 /* Address of run time loader map. */
-#define DT_MIPS_DELTA_CLASS 0x70000017 /* Delta C++ class definition. */
-#define DT_MIPS_DELTA_CLASS_NO 0x70000018 /* Number of entries in
- DT_MIPS_DELTA_CLASS. */
-#define DT_MIPS_DELTA_INSTANCE 0x70000019 /* Delta C++ class instances. */
-#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a /* Number of entries in
- DT_MIPS_DELTA_INSTANCE. */
-#define DT_MIPS_DELTA_RELOC 0x7000001b /* Delta relocations. */
-#define DT_MIPS_DELTA_RELOC_NO 0x7000001c /* Number of entries in
- DT_MIPS_DELTA_RELOC. */
-#define DT_MIPS_DELTA_SYM 0x7000001d /* Delta symbols that Delta
- relocations refer to. */
-#define DT_MIPS_DELTA_SYM_NO 0x7000001e /* Number of entries in
- DT_MIPS_DELTA_SYM. */
-#define DT_MIPS_DELTA_CLASSSYM 0x70000020 /* Delta symbols that hold the
- class declaration. */
-#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021 /* Number of entries in
- DT_MIPS_DELTA_CLASSSYM. */
-#define DT_MIPS_CXX_FLAGS 0x70000022 /* Flags indicating for C++ flavor. */
-#define DT_MIPS_PIXIE_INIT 0x70000023
-#define DT_MIPS_SYMBOL_LIB 0x70000024
-#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
-#define DT_MIPS_LOCAL_GOTIDX 0x70000026
-#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
-#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
-#define DT_MIPS_OPTIONS 0x70000029 /* Address of .options. */
-#define DT_MIPS_INTERFACE 0x7000002a /* Address of .interface. */
-#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
-#define DT_MIPS_INTERFACE_SIZE 0x7000002c /* Size of the .interface section. */
-#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d /* Address of rld_text_rsolve
- function stored in GOT. */
-#define DT_MIPS_PERF_SUFFIX 0x7000002e /* Default suffix of dso to be added
- by rld on dlopen() calls. */
-#define DT_MIPS_COMPACT_SIZE 0x7000002f /* (O32)Size of compact rel section. */
-#define DT_MIPS_GP_VALUE 0x70000030 /* GP value for aux GOTs. */
-#define DT_MIPS_AUX_DYNAMIC 0x70000031 /* Address of aux .dynamic. */
-/* The address of .got.plt in an executable using the new non-PIC ABI. */
-#define DT_MIPS_PLTGOT 0x70000032
-/* The base of the PLT in an executable using the new non-PIC ABI if that
- PLT is writable. For a non-writable PLT, this is omitted or has a zero
- value. */
-#define DT_MIPS_RWPLT 0x70000034
-/* An alternative description of the classic MIPS RLD_MAP that is usable
- in a PIE as it stores a relative offset from the address of the tag
- rather than an absolute address. */
-#define DT_MIPS_RLD_MAP_REL 0x70000035
-/* GNU-style hash table with xlat. */
-#define DT_MIPS_XHASH 0x70000036
-#define DT_MIPS_NUM 0x37
-
-/* Legal values for DT_MIPS_FLAGS Elf32_Dyn entry. */
-
-#define RHF_NONE 0 /* No flags */
-#define RHF_QUICKSTART (1 << 0) /* Use quickstart */
-#define RHF_NOTPOT (1 << 1) /* Hash size not power of 2 */
-#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2) /* Ignore LD_LIBRARY_PATH */
-#define RHF_NO_MOVE (1 << 3)
-#define RHF_SGI_ONLY (1 << 4)
-#define RHF_GUARANTEE_INIT (1 << 5)
-#define RHF_DELTA_C_PLUS_PLUS (1 << 6)
-#define RHF_GUARANTEE_START_INIT (1 << 7)
-#define RHF_PIXIE (1 << 8)
-#define RHF_DEFAULT_DELAY_LOAD (1 << 9)
-#define RHF_REQUICKSTART (1 << 10)
-#define RHF_REQUICKSTARTED (1 << 11)
-#define RHF_CORD (1 << 12)
-#define RHF_NO_UNRES_UNDEF (1 << 13)
-#define RHF_RLD_ORDER_SAFE (1 << 14)
-
-/* Entries found in sections of type SHT_MIPS_LIBLIST. */
-
-typedef struct
-{
- Elf32_Word l_name; /* Name (string table index) */
- Elf32_Word l_time_stamp; /* Timestamp */
- Elf32_Word l_checksum; /* Checksum */
- Elf32_Word l_version; /* Interface version */
- Elf32_Word l_flags; /* Flags */
-} Elf32_Lib;
-
-typedef struct
-{
- Elf64_Word l_name; /* Name (string table index) */
- Elf64_Word l_time_stamp; /* Timestamp */
- Elf64_Word l_checksum; /* Checksum */
- Elf64_Word l_version; /* Interface version */
- Elf64_Word l_flags; /* Flags */
-} Elf64_Lib;
-
-
-/* Legal values for l_flags. */
-
-#define LL_NONE 0
-#define LL_EXACT_MATCH (1 << 0) /* Require exact match */
-#define LL_IGNORE_INT_VER (1 << 1) /* Ignore interface version */
-#define LL_REQUIRE_MINOR (1 << 2)
-#define LL_EXPORTS (1 << 3)
-#define LL_DELAY_LOAD (1 << 4)
-#define LL_DELTA (1 << 5)
-
-/* Entries found in sections of type SHT_MIPS_CONFLICT. */
-
-typedef Elf32_Addr Elf32_Conflict;
-
-typedef struct
-{
- /* Version of flags structure. */
- Elf32_Half version;
- /* The level of the ISA: 1-5, 32, 64. */
- unsigned char isa_level;
- /* The revision of ISA: 0 for MIPS V and below, 1-n otherwise. */
- unsigned char isa_rev;
- /* The size of general purpose registers. */
- unsigned char gpr_size;
- /* The size of co-processor 1 registers. */
- unsigned char cpr1_size;
- /* The size of co-processor 2 registers. */
- unsigned char cpr2_size;
- /* The floating-point ABI. */
- unsigned char fp_abi;
- /* Processor-specific extension. */
- Elf32_Word isa_ext;
- /* Mask of ASEs used. */
- Elf32_Word ases;
- /* Mask of general flags. */
- Elf32_Word flags1;
- Elf32_Word flags2;
-} Elf_MIPS_ABIFlags_v0;
-
-/* Values for the register size bytes of an abi flags structure. */
-
-#define MIPS_AFL_REG_NONE 0x00 /* No registers. */
-#define MIPS_AFL_REG_32 0x01 /* 32-bit registers. */
-#define MIPS_AFL_REG_64 0x02 /* 64-bit registers. */
-#define MIPS_AFL_REG_128 0x03 /* 128-bit registers. */
-
-/* Masks for the ases word of an ABI flags structure. */
-
-#define MIPS_AFL_ASE_DSP 0x00000001 /* DSP ASE. */
-#define MIPS_AFL_ASE_DSPR2 0x00000002 /* DSP R2 ASE. */
-#define MIPS_AFL_ASE_EVA 0x00000004 /* Enhanced VA Scheme. */
-#define MIPS_AFL_ASE_MCU 0x00000008 /* MCU (MicroController) ASE. */
-#define MIPS_AFL_ASE_MDMX 0x00000010 /* MDMX ASE. */
-#define MIPS_AFL_ASE_MIPS3D 0x00000020 /* MIPS-3D ASE. */
-#define MIPS_AFL_ASE_MT 0x00000040 /* MT ASE. */
-#define MIPS_AFL_ASE_SMARTMIPS 0x00000080 /* SmartMIPS ASE. */
-#define MIPS_AFL_ASE_VIRT 0x00000100 /* VZ ASE. */
-#define MIPS_AFL_ASE_MSA 0x00000200 /* MSA ASE. */
-#define MIPS_AFL_ASE_MIPS16 0x00000400 /* MIPS16 ASE. */
-#define MIPS_AFL_ASE_MICROMIPS 0x00000800 /* MICROMIPS ASE. */
-#define MIPS_AFL_ASE_XPA 0x00001000 /* XPA ASE. */
-#define MIPS_AFL_ASE_MASK 0x00001fff /* All ASEs. */
-
-/* Values for the isa_ext word of an ABI flags structure. */
-
-#define MIPS_AFL_EXT_XLR 1 /* RMI Xlr instruction. */
-#define MIPS_AFL_EXT_OCTEON2 2 /* Cavium Networks Octeon2. */
-#define MIPS_AFL_EXT_OCTEONP 3 /* Cavium Networks OcteonP. */
-#define MIPS_AFL_EXT_LOONGSON_3A 4 /* Loongson 3A. */
-#define MIPS_AFL_EXT_OCTEON 5 /* Cavium Networks Octeon. */
-#define MIPS_AFL_EXT_5900 6 /* MIPS R5900 instruction. */
-#define MIPS_AFL_EXT_4650 7 /* MIPS R4650 instruction. */
-#define MIPS_AFL_EXT_4010 8 /* LSI R4010 instruction. */
-#define MIPS_AFL_EXT_4100 9 /* NEC VR4100 instruction. */
-#define MIPS_AFL_EXT_3900 10 /* Toshiba R3900 instruction. */
-#define MIPS_AFL_EXT_10000 11 /* MIPS R10000 instruction. */
-#define MIPS_AFL_EXT_SB1 12 /* Broadcom SB-1 instruction. */
-#define MIPS_AFL_EXT_4111 13 /* NEC VR4111/VR4181 instruction. */
-#define MIPS_AFL_EXT_4120 14 /* NEC VR4120 instruction. */
-#define MIPS_AFL_EXT_5400 15 /* NEC VR5400 instruction. */
-#define MIPS_AFL_EXT_5500 16 /* NEC VR5500 instruction. */
-#define MIPS_AFL_EXT_LOONGSON_2E 17 /* ST Microelectronics Loongson 2E. */
-#define MIPS_AFL_EXT_LOONGSON_2F 18 /* ST Microelectronics Loongson 2F. */
-
-/* Masks for the flags1 word of an ABI flags structure. */
-#define MIPS_AFL_FLAGS1_ODDSPREG 1 /* Uses odd single-precision registers. */
-
-/* Object attribute values. */
-enum
-{
- /* Not tagged or not using any ABIs affected by the differences. */
- Val_GNU_MIPS_ABI_FP_ANY = 0,
- /* Using hard-float -mdouble-float. */
- Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
- /* Using hard-float -msingle-float. */
- Val_GNU_MIPS_ABI_FP_SINGLE = 2,
- /* Using soft-float. */
- Val_GNU_MIPS_ABI_FP_SOFT = 3,
- /* Using -mips32r2 -mfp64. */
- Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
- /* Using -mfpxx. */
- Val_GNU_MIPS_ABI_FP_XX = 5,
- /* Using -mips32r2 -mfp64. */
- Val_GNU_MIPS_ABI_FP_64 = 6,
- /* Using -mips32r2 -mfp64 -mno-odd-spreg. */
- Val_GNU_MIPS_ABI_FP_64A = 7,
- /* Maximum allocated FP ABI value. */
- Val_GNU_MIPS_ABI_FP_MAX = 7
-};
-
-/* HPPA specific definitions. */
-
-/* Legal values for e_flags field of Elf32_Ehdr. */
-
-#define EF_PARISC_TRAPNIL 0x00010000 /* Trap nil pointer dereference. */
-#define EF_PARISC_EXT 0x00020000 /* Program uses arch. extensions. */
-#define EF_PARISC_LSB 0x00040000 /* Program expects little endian. */
-#define EF_PARISC_WIDE 0x00080000 /* Program expects wide mode. */
-#define EF_PARISC_NO_KABP 0x00100000 /* No kernel assisted branch
- prediction. */
-#define EF_PARISC_LAZYSWAP 0x00400000 /* Allow lazy swapping. */
-#define EF_PARISC_ARCH 0x0000ffff /* Architecture version. */
-
-/* Defined values for `e_flags & EF_PARISC_ARCH' are: */
-
-#define EFA_PARISC_1_0 0x020b /* PA-RISC 1.0 big-endian. */
-#define EFA_PARISC_1_1 0x0210 /* PA-RISC 1.1 big-endian. */
-#define EFA_PARISC_2_0 0x0214 /* PA-RISC 2.0 big-endian. */
-
-/* Additional section indices. */
-
-#define SHN_PARISC_ANSI_COMMON 0xff00 /* Section for tentatively declared
- symbols in ANSI C. */
-#define SHN_PARISC_HUGE_COMMON 0xff01 /* Common blocks in huge model. */
-
-/* Legal values for sh_type field of Elf32_Shdr. */
-
-#define SHT_PARISC_EXT 0x70000000 /* Contains product specific ext. */
-#define SHT_PARISC_UNWIND 0x70000001 /* Unwind information. */
-#define SHT_PARISC_DOC 0x70000002 /* Debug info for optimized code. */
-
-/* Legal values for sh_flags field of Elf32_Shdr. */
-
-#define SHF_PARISC_SHORT 0x20000000 /* Section with short addressing. */
-#define SHF_PARISC_HUGE 0x40000000 /* Section far from gp. */
-#define SHF_PARISC_SBP 0x80000000 /* Static branch prediction code. */
-
-/* Legal values for ST_TYPE subfield of st_info (symbol type). */
-
-#define STT_PARISC_MILLICODE 13 /* Millicode function entry point. */
-
-#define STT_HP_OPAQUE (STT_LOOS + 0x1)
-#define STT_HP_STUB (STT_LOOS + 0x2)
-
-/* HPPA relocs. */
-
-#define R_PARISC_NONE 0 /* No reloc. */
-#define R_PARISC_DIR32 1 /* Direct 32-bit reference. */
-#define R_PARISC_DIR21L 2 /* Left 21 bits of eff. address. */
-#define R_PARISC_DIR17R 3 /* Right 17 bits of eff. address. */
-#define R_PARISC_DIR17F 4 /* 17 bits of eff. address. */
-#define R_PARISC_DIR14R 6 /* Right 14 bits of eff. address. */
-#define R_PARISC_PCREL32 9 /* 32-bit rel. address. */
-#define R_PARISC_PCREL21L 10 /* Left 21 bits of rel. address. */
-#define R_PARISC_PCREL17R 11 /* Right 17 bits of rel. address. */
-#define R_PARISC_PCREL17F 12 /* 17 bits of rel. address. */
-#define R_PARISC_PCREL14R 14 /* Right 14 bits of rel. address. */
-#define R_PARISC_DPREL21L 18 /* Left 21 bits of rel. address. */
-#define R_PARISC_DPREL14R 22 /* Right 14 bits of rel. address. */
-#define R_PARISC_GPREL21L 26 /* GP-relative, left 21 bits. */
-#define R_PARISC_GPREL14R 30 /* GP-relative, right 14 bits. */
-#define R_PARISC_LTOFF21L 34 /* LT-relative, left 21 bits. */
-#define R_PARISC_LTOFF14R 38 /* LT-relative, right 14 bits. */
-#define R_PARISC_SECREL32 41 /* 32 bits section rel. address. */
-#define R_PARISC_SEGBASE 48 /* No relocation, set segment base. */
-#define R_PARISC_SEGREL32 49 /* 32 bits segment rel. address. */
-#define R_PARISC_PLTOFF21L 50 /* PLT rel. address, left 21 bits. */
-#define R_PARISC_PLTOFF14R 54 /* PLT rel. address, right 14 bits. */
-#define R_PARISC_LTOFF_FPTR32 57 /* 32 bits LT-rel. function pointer. */
-#define R_PARISC_LTOFF_FPTR21L 58 /* LT-rel. fct ptr, left 21 bits. */
-#define R_PARISC_LTOFF_FPTR14R 62 /* LT-rel. fct ptr, right 14 bits. */
-#define R_PARISC_FPTR64 64 /* 64 bits function address. */
-#define R_PARISC_PLABEL32 65 /* 32 bits function address. */
-#define R_PARISC_PLABEL21L 66 /* Left 21 bits of fdesc address. */
-#define R_PARISC_PLABEL14R 70 /* Right 14 bits of fdesc address. */
-#define R_PARISC_PCREL64 72 /* 64 bits PC-rel. address. */
-#define R_PARISC_PCREL22F 74 /* 22 bits PC-rel. address. */
-#define R_PARISC_PCREL14WR 75 /* PC-rel. address, right 14 bits. */
-#define R_PARISC_PCREL14DR 76 /* PC rel. address, right 14 bits. */
-#define R_PARISC_PCREL16F 77 /* 16 bits PC-rel. address. */
-#define R_PARISC_PCREL16WF 78 /* 16 bits PC-rel. address. */
-#define R_PARISC_PCREL16DF 79 /* 16 bits PC-rel. address. */
-#define R_PARISC_DIR64 80 /* 64 bits of eff. address. */
-#define R_PARISC_DIR14WR 83 /* 14 bits of eff. address. */
-#define R_PARISC_DIR14DR 84 /* 14 bits of eff. address. */
-#define R_PARISC_DIR16F 85 /* 16 bits of eff. address. */
-#define R_PARISC_DIR16WF 86 /* 16 bits of eff. address. */
-#define R_PARISC_DIR16DF 87 /* 16 bits of eff. address. */
-#define R_PARISC_GPREL64 88 /* 64 bits of GP-rel. address. */
-#define R_PARISC_GPREL14WR 91 /* GP-rel. address, right 14 bits. */
-#define R_PARISC_GPREL14DR 92 /* GP-rel. address, right 14 bits. */
-#define R_PARISC_GPREL16F 93 /* 16 bits GP-rel. address. */
-#define R_PARISC_GPREL16WF 94 /* 16 bits GP-rel. address. */
-#define R_PARISC_GPREL16DF 95 /* 16 bits GP-rel. address. */
-#define R_PARISC_LTOFF64 96 /* 64 bits LT-rel. address. */
-#define R_PARISC_LTOFF14WR 99 /* LT-rel. address, right 14 bits. */
-#define R_PARISC_LTOFF14DR 100 /* LT-rel. address, right 14 bits. */
-#define R_PARISC_LTOFF16F 101 /* 16 bits LT-rel. address. */
-#define R_PARISC_LTOFF16WF 102 /* 16 bits LT-rel. address. */
-#define R_PARISC_LTOFF16DF 103 /* 16 bits LT-rel. address. */
-#define R_PARISC_SECREL64 104 /* 64 bits section rel. address. */
-#define R_PARISC_SEGREL64 112 /* 64 bits segment rel. address. */
-#define R_PARISC_PLTOFF14WR 115 /* PLT-rel. address, right 14 bits. */
-#define R_PARISC_PLTOFF14DR 116 /* PLT-rel. address, right 14 bits. */
-#define R_PARISC_PLTOFF16F 117 /* 16 bits LT-rel. address. */
-#define R_PARISC_PLTOFF16WF 118 /* 16 bits PLT-rel. address. */
-#define R_PARISC_PLTOFF16DF 119 /* 16 bits PLT-rel. address. */
-#define R_PARISC_LTOFF_FPTR64 120 /* 64 bits LT-rel. function ptr. */
-#define R_PARISC_LTOFF_FPTR14WR 123 /* LT-rel. fct. ptr., right 14 bits. */
-#define R_PARISC_LTOFF_FPTR14DR 124 /* LT-rel. fct. ptr., right 14 bits. */
-#define R_PARISC_LTOFF_FPTR16F 125 /* 16 bits LT-rel. function ptr. */
-#define R_PARISC_LTOFF_FPTR16WF 126 /* 16 bits LT-rel. function ptr. */
-#define R_PARISC_LTOFF_FPTR16DF 127 /* 16 bits LT-rel. function ptr. */
-#define R_PARISC_LORESERVE 128
-#define R_PARISC_COPY 128 /* Copy relocation. */
-#define R_PARISC_IPLT 129 /* Dynamic reloc, imported PLT */
-#define R_PARISC_EPLT 130 /* Dynamic reloc, exported PLT */
-#define R_PARISC_TPREL32 153 /* 32 bits TP-rel. address. */
-#define R_PARISC_TPREL21L 154 /* TP-rel. address, left 21 bits. */
-#define R_PARISC_TPREL14R 158 /* TP-rel. address, right 14 bits. */
-#define R_PARISC_LTOFF_TP21L 162 /* LT-TP-rel. address, left 21 bits. */
-#define R_PARISC_LTOFF_TP14R 166 /* LT-TP-rel. address, right 14 bits.*/
-#define R_PARISC_LTOFF_TP14F 167 /* 14 bits LT-TP-rel. address. */
-#define R_PARISC_TPREL64 216 /* 64 bits TP-rel. address. */
-#define R_PARISC_TPREL14WR 219 /* TP-rel. address, right 14 bits. */
-#define R_PARISC_TPREL14DR 220 /* TP-rel. address, right 14 bits. */
-#define R_PARISC_TPREL16F 221 /* 16 bits TP-rel. address. */
-#define R_PARISC_TPREL16WF 222 /* 16 bits TP-rel. address. */
-#define R_PARISC_TPREL16DF 223 /* 16 bits TP-rel. address. */
-#define R_PARISC_LTOFF_TP64 224 /* 64 bits LT-TP-rel. address. */
-#define R_PARISC_LTOFF_TP14WR 227 /* LT-TP-rel. address, right 14 bits.*/
-#define R_PARISC_LTOFF_TP14DR 228 /* LT-TP-rel. address, right 14 bits.*/
-#define R_PARISC_LTOFF_TP16F 229 /* 16 bits LT-TP-rel. address. */
-#define R_PARISC_LTOFF_TP16WF 230 /* 16 bits LT-TP-rel. address. */
-#define R_PARISC_LTOFF_TP16DF 231 /* 16 bits LT-TP-rel. address. */
-#define R_PARISC_GNU_VTENTRY 232
-#define R_PARISC_GNU_VTINHERIT 233
-#define R_PARISC_TLS_GD21L 234 /* GD 21-bit left. */
-#define R_PARISC_TLS_GD14R 235 /* GD 14-bit right. */
-#define R_PARISC_TLS_GDCALL 236 /* GD call to __t_g_a. */
-#define R_PARISC_TLS_LDM21L 237 /* LD module 21-bit left. */
-#define R_PARISC_TLS_LDM14R 238 /* LD module 14-bit right. */
-#define R_PARISC_TLS_LDMCALL 239 /* LD module call to __t_g_a. */
-#define R_PARISC_TLS_LDO21L 240 /* LD offset 21-bit left. */
-#define R_PARISC_TLS_LDO14R 241 /* LD offset 14-bit right. */
-#define R_PARISC_TLS_DTPMOD32 242 /* DTP module 32-bit. */
-#define R_PARISC_TLS_DTPMOD64 243 /* DTP module 64-bit. */
-#define R_PARISC_TLS_DTPOFF32 244 /* DTP offset 32-bit. */
-#define R_PARISC_TLS_DTPOFF64 245 /* DTP offset 32-bit. */
-#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
-#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
-#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
-#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
-#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
-#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
-#define R_PARISC_HIRESERVE 255
-
-/* Legal values for p_type field of Elf32_Phdr/Elf64_Phdr. */
-
-#define PT_HP_TLS (PT_LOOS + 0x0)
-#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
-#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
-#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
-#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
-#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
-#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
-#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
-#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
-#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
-#define PT_HP_PARALLEL (PT_LOOS + 0x10)
-#define PT_HP_FASTBIND (PT_LOOS + 0x11)
-#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
-#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
-#define PT_HP_STACK (PT_LOOS + 0x14)
-
-#define PT_PARISC_ARCHEXT 0x70000000
-#define PT_PARISC_UNWIND 0x70000001
-
-/* Legal values for p_flags field of Elf32_Phdr/Elf64_Phdr. */
-
-#define PF_PARISC_SBP 0x08000000
-
-#define PF_HP_PAGE_SIZE 0x00100000
-#define PF_HP_FAR_SHARED 0x00200000
-#define PF_HP_NEAR_SHARED 0x00400000
-#define PF_HP_CODE 0x01000000
-#define PF_HP_MODIFY 0x02000000
-#define PF_HP_LAZYSWAP 0x04000000
-#define PF_HP_SBP 0x08000000
-
-
-/* Alpha specific definitions. */
-
-/* Legal values for e_flags field of Elf64_Ehdr. */
-
-#define EF_ALPHA_32BIT 1 /* All addresses must be < 2GB. */
-#define EF_ALPHA_CANRELAX 2 /* Relocations for relaxing exist. */
-
-/* Legal values for sh_type field of Elf64_Shdr. */
-
-/* These two are primerily concerned with ECOFF debugging info. */
-#define SHT_ALPHA_DEBUG 0x70000001
-#define SHT_ALPHA_REGINFO 0x70000002
-
-/* Legal values for sh_flags field of Elf64_Shdr. */
-
-#define SHF_ALPHA_GPREL 0x10000000
-
-/* Legal values for st_other field of Elf64_Sym. */
-#define STO_ALPHA_NOPV 0x80 /* No PV required. */
-#define STO_ALPHA_STD_GPLOAD 0x88 /* PV only used for initial ldgp. */
-
-/* Alpha relocs. */
-
-#define R_ALPHA_NONE 0 /* No reloc */
-#define R_ALPHA_REFLONG 1 /* Direct 32 bit */
-#define R_ALPHA_REFQUAD 2 /* Direct 64 bit */
-#define R_ALPHA_GPREL32 3 /* GP relative 32 bit */
-#define R_ALPHA_LITERAL 4 /* GP relative 16 bit w/optimization */
-#define R_ALPHA_LITUSE 5 /* Optimization hint for LITERAL */
-#define R_ALPHA_GPDISP 6 /* Add displacement to GP */
-#define R_ALPHA_BRADDR 7 /* PC+4 relative 23 bit shifted */
-#define R_ALPHA_HINT 8 /* PC+4 relative 16 bit shifted */
-#define R_ALPHA_SREL16 9 /* PC relative 16 bit */
-#define R_ALPHA_SREL32 10 /* PC relative 32 bit */
-#define R_ALPHA_SREL64 11 /* PC relative 64 bit */
-#define R_ALPHA_GPRELHIGH 17 /* GP relative 32 bit, high 16 bits */
-#define R_ALPHA_GPRELLOW 18 /* GP relative 32 bit, low 16 bits */
-#define R_ALPHA_GPREL16 19 /* GP relative 16 bit */
-#define R_ALPHA_COPY 24 /* Copy symbol at runtime */
-#define R_ALPHA_GLOB_DAT 25 /* Create GOT entry */
-#define R_ALPHA_JMP_SLOT 26 /* Create PLT entry */
-#define R_ALPHA_RELATIVE 27 /* Adjust by program base */
-#define R_ALPHA_TLS_GD_HI 28
-#define R_ALPHA_TLSGD 29
-#define R_ALPHA_TLS_LDM 30
-#define R_ALPHA_DTPMOD64 31
-#define R_ALPHA_GOTDTPREL 32
-#define R_ALPHA_DTPREL64 33
-#define R_ALPHA_DTPRELHI 34
-#define R_ALPHA_DTPRELLO 35
-#define R_ALPHA_DTPREL16 36
-#define R_ALPHA_GOTTPREL 37
-#define R_ALPHA_TPREL64 38
-#define R_ALPHA_TPRELHI 39
-#define R_ALPHA_TPRELLO 40
-#define R_ALPHA_TPREL16 41
-/* Keep this the last entry. */
-#define R_ALPHA_NUM 46
-
-/* Magic values of the LITUSE relocation addend. */
-#define LITUSE_ALPHA_ADDR 0
-#define LITUSE_ALPHA_BASE 1
-#define LITUSE_ALPHA_BYTOFF 2
-#define LITUSE_ALPHA_JSR 3
-#define LITUSE_ALPHA_TLS_GD 4
-#define LITUSE_ALPHA_TLS_LDM 5
-
-/* Legal values for d_tag of Elf64_Dyn. */
-#define DT_ALPHA_PLTRO (DT_LOPROC + 0)
-#define DT_ALPHA_NUM 1
-
-/* PowerPC specific declarations */
-
-/* Values for Elf32/64_Ehdr.e_flags. */
-#define EF_PPC_EMB 0x80000000 /* PowerPC embedded flag */
-
-/* Cygnus local bits below */
-#define EF_PPC_RELOCATABLE 0x00010000 /* PowerPC -mrelocatable flag*/
-#define EF_PPC_RELOCATABLE_LIB 0x00008000 /* PowerPC -mrelocatable-lib
- flag */
-
-/* PowerPC relocations defined by the ABIs */
-#define R_PPC_NONE 0
-#define R_PPC_ADDR32 1 /* 32bit absolute address */
-#define R_PPC_ADDR24 2 /* 26bit address, 2 bits ignored. */
-#define R_PPC_ADDR16 3 /* 16bit absolute address */
-#define R_PPC_ADDR16_LO 4 /* lower 16bit of absolute address */
-#define R_PPC_ADDR16_HI 5 /* high 16bit of absolute address */
-#define R_PPC_ADDR16_HA 6 /* adjusted high 16bit */
-#define R_PPC_ADDR14 7 /* 16bit address, 2 bits ignored */
-#define R_PPC_ADDR14_BRTAKEN 8
-#define R_PPC_ADDR14_BRNTAKEN 9
-#define R_PPC_REL24 10 /* PC relative 26 bit */
-#define R_PPC_REL14 11 /* PC relative 16 bit */
-#define R_PPC_REL14_BRTAKEN 12
-#define R_PPC_REL14_BRNTAKEN 13
-#define R_PPC_GOT16 14
-#define R_PPC_GOT16_LO 15
-#define R_PPC_GOT16_HI 16
-#define R_PPC_GOT16_HA 17
-#define R_PPC_PLTREL24 18
-#define R_PPC_COPY 19
-#define R_PPC_GLOB_DAT 20
-#define R_PPC_JMP_SLOT 21
-#define R_PPC_RELATIVE 22
-#define R_PPC_LOCAL24PC 23
-#define R_PPC_UADDR32 24
-#define R_PPC_UADDR16 25
-#define R_PPC_REL32 26
-#define R_PPC_PLT32 27
-#define R_PPC_PLTREL32 28
-#define R_PPC_PLT16_LO 29
-#define R_PPC_PLT16_HI 30
-#define R_PPC_PLT16_HA 31
-#define R_PPC_SDAREL16 32
-#define R_PPC_SECTOFF 33
-#define R_PPC_SECTOFF_LO 34
-#define R_PPC_SECTOFF_HI 35
-#define R_PPC_SECTOFF_HA 36
-
-/* PowerPC relocations defined for the TLS access ABI. */
-#define R_PPC_TLS 67 /* none (sym+add)@tls */
-#define R_PPC_DTPMOD32 68 /* word32 (sym+add)@dtpmod */
-#define R_PPC_TPREL16 69 /* half16* (sym+add)@tprel */
-#define R_PPC_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-#define R_PPC_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-#define R_PPC_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-#define R_PPC_TPREL32 73 /* word32 (sym+add)@tprel */
-#define R_PPC_DTPREL16 74 /* half16* (sym+add)@dtprel */
-#define R_PPC_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-#define R_PPC_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-#define R_PPC_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-#define R_PPC_DTPREL32 78 /* word32 (sym+add)@dtprel */
-#define R_PPC_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-#define R_PPC_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-#define R_PPC_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-#define R_PPC_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-#define R_PPC_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-#define R_PPC_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-#define R_PPC_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-#define R_PPC_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-#define R_PPC_GOT_TPREL16 87 /* half16* (sym+add)@got@tprel */
-#define R_PPC_GOT_TPREL16_LO 88 /* half16 (sym+add)@got@tprel@l */
-#define R_PPC_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-#define R_PPC_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-#define R_PPC_GOT_DTPREL16 91 /* half16* (sym+add)@got@dtprel */
-#define R_PPC_GOT_DTPREL16_LO 92 /* half16* (sym+add)@got@dtprel@l */
-#define R_PPC_GOT_DTPREL16_HI 93 /* half16* (sym+add)@got@dtprel@h */
-#define R_PPC_GOT_DTPREL16_HA 94 /* half16* (sym+add)@got@dtprel@ha */
-#define R_PPC_TLSGD 95 /* none (sym+add)@tlsgd */
-#define R_PPC_TLSLD 96 /* none (sym+add)@tlsld */
-
-/* The remaining relocs are from the Embedded ELF ABI, and are not
- in the SVR4 ELF ABI. */
-#define R_PPC_EMB_NADDR32 101
-#define R_PPC_EMB_NADDR16 102
-#define R_PPC_EMB_NADDR16_LO 103
-#define R_PPC_EMB_NADDR16_HI 104
-#define R_PPC_EMB_NADDR16_HA 105
-#define R_PPC_EMB_SDAI16 106
-#define R_PPC_EMB_SDA2I16 107
-#define R_PPC_EMB_SDA2REL 108
-#define R_PPC_EMB_SDA21 109 /* 16 bit offset in SDA */
-#define R_PPC_EMB_MRKREF 110
-#define R_PPC_EMB_RELSEC16 111
-#define R_PPC_EMB_RELST_LO 112
-#define R_PPC_EMB_RELST_HI 113
-#define R_PPC_EMB_RELST_HA 114
-#define R_PPC_EMB_BIT_FLD 115
-#define R_PPC_EMB_RELSDA 116 /* 16 bit relative offset in SDA */
-
-/* Diab tool relocations. */
-#define R_PPC_DIAB_SDA21_LO 180 /* like EMB_SDA21, but lower 16 bit */
-#define R_PPC_DIAB_SDA21_HI 181 /* like EMB_SDA21, but high 16 bit */
-#define R_PPC_DIAB_SDA21_HA 182 /* like EMB_SDA21, adjusted high 16 */
-#define R_PPC_DIAB_RELSDA_LO 183 /* like EMB_RELSDA, but lower 16 bit */
-#define R_PPC_DIAB_RELSDA_HI 184 /* like EMB_RELSDA, but high 16 bit */
-#define R_PPC_DIAB_RELSDA_HA 185 /* like EMB_RELSDA, adjusted high 16 */
-
-/* GNU extension to support local ifunc. */
-#define R_PPC_IRELATIVE 248
-
-/* GNU relocs used in PIC code sequences. */
-#define R_PPC_REL16 249 /* half16 (sym+add-.) */
-#define R_PPC_REL16_LO 250 /* half16 (sym+add-.)@l */
-#define R_PPC_REL16_HI 251 /* half16 (sym+add-.)@h */
-#define R_PPC_REL16_HA 252 /* half16 (sym+add-.)@ha */
-
-/* This is a phony reloc to handle any old fashioned TOC16 references
- that may still be in object files. */
-#define R_PPC_TOC16 255
-
-/* PowerPC specific values for the Dyn d_tag field. */
-#define DT_PPC_GOT (DT_LOPROC + 0)
-#define DT_PPC_OPT (DT_LOPROC + 1)
-#define DT_PPC_NUM 2
-
-/* PowerPC specific values for the DT_PPC_OPT Dyn entry. */
-#define PPC_OPT_TLS 1
-
-/* PowerPC64 relocations defined by the ABIs */
-#define R_PPC64_NONE R_PPC_NONE
-#define R_PPC64_ADDR32 R_PPC_ADDR32 /* 32bit absolute address */
-#define R_PPC64_ADDR24 R_PPC_ADDR24 /* 26bit address, word aligned */
-#define R_PPC64_ADDR16 R_PPC_ADDR16 /* 16bit absolute address */
-#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO /* lower 16bits of address */
-#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI /* high 16bits of address. */
-#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA /* adjusted high 16bits. */
-#define R_PPC64_ADDR14 R_PPC_ADDR14 /* 16bit address, word aligned */
-#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
-#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
-#define R_PPC64_REL24 R_PPC_REL24 /* PC-rel. 26 bit, word aligned */
-#define R_PPC64_REL14 R_PPC_REL14 /* PC relative 16 bit */
-#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
-#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
-#define R_PPC64_GOT16 R_PPC_GOT16
-#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
-#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
-#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
-
-#define R_PPC64_COPY R_PPC_COPY
-#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
-#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
-#define R_PPC64_RELATIVE R_PPC_RELATIVE
-
-#define R_PPC64_UADDR32 R_PPC_UADDR32
-#define R_PPC64_UADDR16 R_PPC_UADDR16
-#define R_PPC64_REL32 R_PPC_REL32
-#define R_PPC64_PLT32 R_PPC_PLT32
-#define R_PPC64_PLTREL32 R_PPC_PLTREL32
-#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
-#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
-#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
-
-#define R_PPC64_SECTOFF R_PPC_SECTOFF
-#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
-#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
-#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
-#define R_PPC64_ADDR30 37 /* word30 (S + A - P) >> 2 */
-#define R_PPC64_ADDR64 38 /* doubleword64 S + A */
-#define R_PPC64_ADDR16_HIGHER 39 /* half16 #higher(S + A) */
-#define R_PPC64_ADDR16_HIGHERA 40 /* half16 #highera(S + A) */
-#define R_PPC64_ADDR16_HIGHEST 41 /* half16 #highest(S + A) */
-#define R_PPC64_ADDR16_HIGHESTA 42 /* half16 #highesta(S + A) */
-#define R_PPC64_UADDR64 43 /* doubleword64 S + A */
-#define R_PPC64_REL64 44 /* doubleword64 S + A - P */
-#define R_PPC64_PLT64 45 /* doubleword64 L + A */
-#define R_PPC64_PLTREL64 46 /* doubleword64 L + A - P */
-#define R_PPC64_TOC16 47 /* half16* S + A - .TOC */
-#define R_PPC64_TOC16_LO 48 /* half16 #lo(S + A - .TOC.) */
-#define R_PPC64_TOC16_HI 49 /* half16 #hi(S + A - .TOC.) */
-#define R_PPC64_TOC16_HA 50 /* half16 #ha(S + A - .TOC.) */
-#define R_PPC64_TOC 51 /* doubleword64 .TOC */
-#define R_PPC64_PLTGOT16 52 /* half16* M + A */
-#define R_PPC64_PLTGOT16_LO 53 /* half16 #lo(M + A) */
-#define R_PPC64_PLTGOT16_HI 54 /* half16 #hi(M + A) */
-#define R_PPC64_PLTGOT16_HA 55 /* half16 #ha(M + A) */
-
-#define R_PPC64_ADDR16_DS 56 /* half16ds* (S + A) >> 2 */
-#define R_PPC64_ADDR16_LO_DS 57 /* half16ds #lo(S + A) >> 2 */
-#define R_PPC64_GOT16_DS 58 /* half16ds* (G + A) >> 2 */
-#define R_PPC64_GOT16_LO_DS 59 /* half16ds #lo(G + A) >> 2 */
-#define R_PPC64_PLT16_LO_DS 60 /* half16ds #lo(L + A) >> 2 */
-#define R_PPC64_SECTOFF_DS 61 /* half16ds* (R + A) >> 2 */
-#define R_PPC64_SECTOFF_LO_DS 62 /* half16ds #lo(R + A) >> 2 */
-#define R_PPC64_TOC16_DS 63 /* half16ds* (S + A - .TOC.) >> 2 */
-#define R_PPC64_TOC16_LO_DS 64 /* half16ds #lo(S + A - .TOC.) >> 2 */
-#define R_PPC64_PLTGOT16_DS 65 /* half16ds* (M + A) >> 2 */
-#define R_PPC64_PLTGOT16_LO_DS 66 /* half16ds #lo(M + A) >> 2 */
-
-/* PowerPC64 relocations defined for the TLS access ABI. */
-#define R_PPC64_TLS 67 /* none (sym+add)@tls */
-#define R_PPC64_DTPMOD64 68 /* doubleword64 (sym+add)@dtpmod */
-#define R_PPC64_TPREL16 69 /* half16* (sym+add)@tprel */
-#define R_PPC64_TPREL16_LO 70 /* half16 (sym+add)@tprel@l */
-#define R_PPC64_TPREL16_HI 71 /* half16 (sym+add)@tprel@h */
-#define R_PPC64_TPREL16_HA 72 /* half16 (sym+add)@tprel@ha */
-#define R_PPC64_TPREL64 73 /* doubleword64 (sym+add)@tprel */
-#define R_PPC64_DTPREL16 74 /* half16* (sym+add)@dtprel */
-#define R_PPC64_DTPREL16_LO 75 /* half16 (sym+add)@dtprel@l */
-#define R_PPC64_DTPREL16_HI 76 /* half16 (sym+add)@dtprel@h */
-#define R_PPC64_DTPREL16_HA 77 /* half16 (sym+add)@dtprel@ha */
-#define R_PPC64_DTPREL64 78 /* doubleword64 (sym+add)@dtprel */
-#define R_PPC64_GOT_TLSGD16 79 /* half16* (sym+add)@got@tlsgd */
-#define R_PPC64_GOT_TLSGD16_LO 80 /* half16 (sym+add)@got@tlsgd@l */
-#define R_PPC64_GOT_TLSGD16_HI 81 /* half16 (sym+add)@got@tlsgd@h */
-#define R_PPC64_GOT_TLSGD16_HA 82 /* half16 (sym+add)@got@tlsgd@ha */
-#define R_PPC64_GOT_TLSLD16 83 /* half16* (sym+add)@got@tlsld */
-#define R_PPC64_GOT_TLSLD16_LO 84 /* half16 (sym+add)@got@tlsld@l */
-#define R_PPC64_GOT_TLSLD16_HI 85 /* half16 (sym+add)@got@tlsld@h */
-#define R_PPC64_GOT_TLSLD16_HA 86 /* half16 (sym+add)@got@tlsld@ha */
-#define R_PPC64_GOT_TPREL16_DS 87 /* half16ds* (sym+add)@got@tprel */
-#define R_PPC64_GOT_TPREL16_LO_DS 88 /* half16ds (sym+add)@got@tprel@l */
-#define R_PPC64_GOT_TPREL16_HI 89 /* half16 (sym+add)@got@tprel@h */
-#define R_PPC64_GOT_TPREL16_HA 90 /* half16 (sym+add)@got@tprel@ha */
-#define R_PPC64_GOT_DTPREL16_DS 91 /* half16ds* (sym+add)@got@dtprel */
-#define R_PPC64_GOT_DTPREL16_LO_DS 92 /* half16ds (sym+add)@got@dtprel@l */
-#define R_PPC64_GOT_DTPREL16_HI 93 /* half16 (sym+add)@got@dtprel@h */
-#define R_PPC64_GOT_DTPREL16_HA 94 /* half16 (sym+add)@got@dtprel@ha */
-#define R_PPC64_TPREL16_DS 95 /* half16ds* (sym+add)@tprel */
-#define R_PPC64_TPREL16_LO_DS 96 /* half16ds (sym+add)@tprel@l */
-#define R_PPC64_TPREL16_HIGHER 97 /* half16 (sym+add)@tprel@higher */
-#define R_PPC64_TPREL16_HIGHERA 98 /* half16 (sym+add)@tprel@highera */
-#define R_PPC64_TPREL16_HIGHEST 99 /* half16 (sym+add)@tprel@highest */
-#define R_PPC64_TPREL16_HIGHESTA 100 /* half16 (sym+add)@tprel@highesta */
-#define R_PPC64_DTPREL16_DS 101 /* half16ds* (sym+add)@dtprel */
-#define R_PPC64_DTPREL16_LO_DS 102 /* half16ds (sym+add)@dtprel@l */
-#define R_PPC64_DTPREL16_HIGHER 103 /* half16 (sym+add)@dtprel@higher */
-#define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */
-#define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */
-#define R_PPC64_DTPREL16_HIGHESTA 106 /* half16 (sym+add)@dtprel@highesta */
-#define R_PPC64_TLSGD 107 /* none (sym+add)@tlsgd */
-#define R_PPC64_TLSLD 108 /* none (sym+add)@tlsld */
-#define R_PPC64_TOCSAVE 109 /* none */
-
-/* Added when HA and HI relocs were changed to report overflows. */
-#define R_PPC64_ADDR16_HIGH 110
-#define R_PPC64_ADDR16_HIGHA 111
-#define R_PPC64_TPREL16_HIGH 112
-#define R_PPC64_TPREL16_HIGHA 113
-#define R_PPC64_DTPREL16_HIGH 114
-#define R_PPC64_DTPREL16_HIGHA 115
-
-/* GNU extension to support local ifunc. */
-#define R_PPC64_JMP_IREL 247
-#define R_PPC64_IRELATIVE 248
-#define R_PPC64_REL16 249 /* half16 (sym+add-.) */
-#define R_PPC64_REL16_LO 250 /* half16 (sym+add-.)@l */
-#define R_PPC64_REL16_HI 251 /* half16 (sym+add-.)@h */
-#define R_PPC64_REL16_HA 252 /* half16 (sym+add-.)@ha */
-
-/* e_flags bits specifying ABI.
- 1 for original function descriptor using ABI,
- 2 for revised ABI without function descriptors,
- 0 for unspecified or not using any features affected by the differences. */
-#define EF_PPC64_ABI 3
-
-/* PowerPC64 specific values for the Dyn d_tag field. */
-#define DT_PPC64_GLINK (DT_LOPROC + 0)
-#define DT_PPC64_OPD (DT_LOPROC + 1)
-#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
-#define DT_PPC64_OPT (DT_LOPROC + 3)
-#define DT_PPC64_NUM 4
-
-/* PowerPC64 specific bits in the DT_PPC64_OPT Dyn entry. */
-#define PPC64_OPT_TLS 1
-#define PPC64_OPT_MULTI_TOC 2
-#define PPC64_OPT_LOCALENTRY 4
-
-/* PowerPC64 specific values for the Elf64_Sym st_other field. */
-#define STO_PPC64_LOCAL_BIT 5
-#define STO_PPC64_LOCAL_MASK (7 << STO_PPC64_LOCAL_BIT)
-#define PPC64_LOCAL_ENTRY_OFFSET(other) \
- (((1 << (((other) & STO_PPC64_LOCAL_MASK) >> STO_PPC64_LOCAL_BIT)) >> 2) << 2)
-
-
-/* ARM specific declarations */
-
-/* Processor specific flags for the ELF header e_flags field. */
-#define EF_ARM_RELEXEC 0x01
-#define EF_ARM_HASENTRY 0x02
-#define EF_ARM_INTERWORK 0x04
-#define EF_ARM_APCS_26 0x08
-#define EF_ARM_APCS_FLOAT 0x10
-#define EF_ARM_PIC 0x20
-#define EF_ARM_ALIGN8 0x40 /* 8-bit structure alignment is in use */
-#define EF_ARM_NEW_ABI 0x80
-#define EF_ARM_OLD_ABI 0x100
-#define EF_ARM_SOFT_FLOAT 0x200
-#define EF_ARM_VFP_FLOAT 0x400
-#define EF_ARM_MAVERICK_FLOAT 0x800
-
-#define EF_ARM_ABI_FLOAT_SOFT 0x200 /* NB conflicts with EF_ARM_SOFT_FLOAT */
-#define EF_ARM_ABI_FLOAT_HARD 0x400 /* NB conflicts with EF_ARM_VFP_FLOAT */
-
-
-/* Other constants defined in the ARM ELF spec. version B-01. */
-/* NB. These conflict with values defined above. */
-#define EF_ARM_SYMSARESORTED 0x04
-#define EF_ARM_DYNSYMSUSESEGIDX 0x08
-#define EF_ARM_MAPSYMSFIRST 0x10
-#define EF_ARM_EABIMASK 0XFF000000
-
-/* Constants defined in AAELF. */
-#define EF_ARM_BE8 0x00800000
-#define EF_ARM_LE8 0x00400000
-
-#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
-#define EF_ARM_EABI_UNKNOWN 0x00000000
-#define EF_ARM_EABI_VER1 0x01000000
-#define EF_ARM_EABI_VER2 0x02000000
-#define EF_ARM_EABI_VER3 0x03000000
-#define EF_ARM_EABI_VER4 0x04000000
-#define EF_ARM_EABI_VER5 0x05000000
-
-/* Additional symbol types for Thumb. */
-#define STT_ARM_TFUNC STT_LOPROC /* A Thumb function. */
-#define STT_ARM_16BIT STT_HIPROC /* A Thumb label. */
-
-/* ARM-specific values for sh_flags */
-#define SHF_ARM_ENTRYSECT 0x10000000 /* Section contains an entry point */
-#define SHF_ARM_COMDEF 0x80000000 /* Section may be multiply defined
- in the input to a link step. */
-
-/* ARM-specific program header flags */
-#define PF_ARM_SB 0x10000000 /* Segment contains the location
- addressed by the static base. */
-#define PF_ARM_PI 0x20000000 /* Position-independent segment. */
-#define PF_ARM_ABS 0x40000000 /* Absolute segment. */
-
-/* Processor specific values for the Phdr p_type field. */
-#define PT_ARM_EXIDX (PT_LOPROC + 1) /* ARM unwind segment. */
-
-/* Processor specific values for the Shdr sh_type field. */
-#define SHT_ARM_EXIDX (SHT_LOPROC + 1) /* ARM unwind section. */
-#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2) /* Preemption details. */
-#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3) /* ARM attributes section. */
-
-
-/* AArch64 relocs. */
-
-#define R_AARCH64_NONE 0 /* No relocation. */
-
-/* ILP32 AArch64 relocs. */
-#define R_AARCH64_P32_ABS32 1 /* Direct 32 bit. */
-#define R_AARCH64_P32_COPY 180 /* Copy symbol at runtime. */
-#define R_AARCH64_P32_GLOB_DAT 181 /* Create GOT entry. */
-#define R_AARCH64_P32_JUMP_SLOT 182 /* Create PLT entry. */
-#define R_AARCH64_P32_RELATIVE 183 /* Adjust by program base. */
-#define R_AARCH64_P32_TLS_DTPMOD 184 /* Module number, 32 bit. */
-#define R_AARCH64_P32_TLS_DTPREL 185 /* Module-relative offset, 32 bit. */
-#define R_AARCH64_P32_TLS_TPREL 186 /* TP-relative offset, 32 bit. */
-#define R_AARCH64_P32_TLSDESC 187 /* TLS Descriptor. */
-#define R_AARCH64_P32_IRELATIVE 188 /* STT_GNU_IFUNC relocation. */
-
-/* LP64 AArch64 relocs. */
-#define R_AARCH64_ABS64 257 /* Direct 64 bit. */
-#define R_AARCH64_ABS32 258 /* Direct 32 bit. */
-#define R_AARCH64_ABS16 259 /* Direct 16-bit. */
-#define R_AARCH64_PREL64 260 /* PC-relative 64-bit. */
-#define R_AARCH64_PREL32 261 /* PC-relative 32-bit. */
-#define R_AARCH64_PREL16 262 /* PC-relative 16-bit. */
-#define R_AARCH64_MOVW_UABS_G0 263 /* Dir. MOVZ imm. from bits 15:0. */
-#define R_AARCH64_MOVW_UABS_G0_NC 264 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_UABS_G1 265 /* Dir. MOVZ imm. from bits 31:16. */
-#define R_AARCH64_MOVW_UABS_G1_NC 266 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_UABS_G2 267 /* Dir. MOVZ imm. from bits 47:32. */
-#define R_AARCH64_MOVW_UABS_G2_NC 268 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_UABS_G3 269 /* Dir. MOV{K,Z} imm. from 63:48. */
-#define R_AARCH64_MOVW_SABS_G0 270 /* Dir. MOV{N,Z} imm. from 15:0. */
-#define R_AARCH64_MOVW_SABS_G1 271 /* Dir. MOV{N,Z} imm. from 31:16. */
-#define R_AARCH64_MOVW_SABS_G2 272 /* Dir. MOV{N,Z} imm. from 47:32. */
-#define R_AARCH64_LD_PREL_LO19 273 /* PC-rel. LD imm. from bits 20:2. */
-#define R_AARCH64_ADR_PREL_LO21 274 /* PC-rel. ADR imm. from bits 20:0. */
-#define R_AARCH64_ADR_PREL_PG_HI21 275 /* Page-rel. ADRP imm. from 32:12. */
-#define R_AARCH64_ADR_PREL_PG_HI21_NC 276 /* Likewise; no overflow check. */
-#define R_AARCH64_ADD_ABS_LO12_NC 277 /* Dir. ADD imm. from bits 11:0. */
-#define R_AARCH64_LDST8_ABS_LO12_NC 278 /* Likewise for LD/ST; no check. */
-#define R_AARCH64_TSTBR14 279 /* PC-rel. TBZ/TBNZ imm. from 15:2. */
-#define R_AARCH64_CONDBR19 280 /* PC-rel. cond. br. imm. from 20:2. */
-#define R_AARCH64_JUMP26 282 /* PC-rel. B imm. from bits 27:2. */
-#define R_AARCH64_CALL26 283 /* Likewise for CALL. */
-#define R_AARCH64_LDST16_ABS_LO12_NC 284 /* Dir. ADD imm. from bits 11:1. */
-#define R_AARCH64_LDST32_ABS_LO12_NC 285 /* Likewise for bits 11:2. */
-#define R_AARCH64_LDST64_ABS_LO12_NC 286 /* Likewise for bits 11:3. */
-#define R_AARCH64_MOVW_PREL_G0 287 /* PC-rel. MOV{N,Z} imm. from 15:0. */
-#define R_AARCH64_MOVW_PREL_G0_NC 288 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_PREL_G1 289 /* PC-rel. MOV{N,Z} imm. from 31:16. */
-#define R_AARCH64_MOVW_PREL_G1_NC 290 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_PREL_G2 291 /* PC-rel. MOV{N,Z} imm. from 47:32. */
-#define R_AARCH64_MOVW_PREL_G2_NC 292 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_PREL_G3 293 /* PC-rel. MOV{N,Z} imm. from 63:48. */
-#define R_AARCH64_LDST128_ABS_LO12_NC 299 /* Dir. ADD imm. from bits 11:4. */
-#define R_AARCH64_MOVW_GOTOFF_G0 300 /* GOT-rel. off. MOV{N,Z} imm. 15:0. */
-#define R_AARCH64_MOVW_GOTOFF_G0_NC 301 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_GOTOFF_G1 302 /* GOT-rel. o. MOV{N,Z} imm. 31:16. */
-#define R_AARCH64_MOVW_GOTOFF_G1_NC 303 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_GOTOFF_G2 304 /* GOT-rel. o. MOV{N,Z} imm. 47:32. */
-#define R_AARCH64_MOVW_GOTOFF_G2_NC 305 /* Likewise for MOVK; no check. */
-#define R_AARCH64_MOVW_GOTOFF_G3 306 /* GOT-rel. o. MOV{N,Z} imm. 63:48. */
-#define R_AARCH64_GOTREL64 307 /* GOT-relative 64-bit. */
-#define R_AARCH64_GOTREL32 308 /* GOT-relative 32-bit. */
-#define R_AARCH64_GOT_LD_PREL19 309 /* PC-rel. GOT off. load imm. 20:2. */
-#define R_AARCH64_LD64_GOTOFF_LO15 310 /* GOT-rel. off. LD/ST imm. 14:3. */
-#define R_AARCH64_ADR_GOT_PAGE 311 /* P-page-rel. GOT off. ADRP 32:12. */
-#define R_AARCH64_LD64_GOT_LO12_NC 312 /* Dir. GOT off. LD/ST imm. 11:3. */
-#define R_AARCH64_LD64_GOTPAGE_LO15 313 /* GOT-page-rel. GOT off. LD/ST 14:3 */
-#define R_AARCH64_TLSGD_ADR_PREL21 512 /* PC-relative ADR imm. 20:0. */
-#define R_AARCH64_TLSGD_ADR_PAGE21 513 /* page-rel. ADRP imm. 32:12. */
-#define R_AARCH64_TLSGD_ADD_LO12_NC 514 /* direct ADD imm. from 11:0. */
-#define R_AARCH64_TLSGD_MOVW_G1 515 /* GOT-rel. MOV{N,Z} 31:16. */
-#define R_AARCH64_TLSGD_MOVW_G0_NC 516 /* GOT-rel. MOVK imm. 15:0. */
-#define R_AARCH64_TLSLD_ADR_PREL21 517 /* Like 512; local dynamic model. */
-#define R_AARCH64_TLSLD_ADR_PAGE21 518 /* Like 513; local dynamic model. */
-#define R_AARCH64_TLSLD_ADD_LO12_NC 519 /* Like 514; local dynamic model. */
-#define R_AARCH64_TLSLD_MOVW_G1 520 /* Like 515; local dynamic model. */
-#define R_AARCH64_TLSLD_MOVW_G0_NC 521 /* Like 516; local dynamic model. */
-#define R_AARCH64_TLSLD_LD_PREL19 522 /* TLS PC-rel. load imm. 20:2. */
-#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523 /* TLS DTP-rel. MOV{N,Z} 47:32. */
-#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524 /* TLS DTP-rel. MOV{N,Z} 31:16. */
-#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525 /* Likewise; MOVK; no check. */
-#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526 /* TLS DTP-rel. MOV{N,Z} 15:0. */
-#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527 /* Likewise; MOVK; no check. */
-#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528 /* DTP-rel. ADD imm. from 23:12. */
-#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529 /* DTP-rel. ADD imm. from 11:0. */
-#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530 /* Likewise; no ovfl. check. */
-#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531 /* DTP-rel. LD/ST imm. 11:0. */
-#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532 /* Likewise; no check. */
-#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533 /* DTP-rel. LD/ST imm. 11:1. */
-#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534 /* Likewise; no check. */
-#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535 /* DTP-rel. LD/ST imm. 11:2. */
-#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536 /* Likewise; no check. */
-#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537 /* DTP-rel. LD/ST imm. 11:3. */
-#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538 /* Likewise; no check. */
-#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539 /* GOT-rel. MOV{N,Z} 31:16. */
-#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540 /* GOT-rel. MOVK 15:0. */
-#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541 /* Page-rel. ADRP 32:12. */
-#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542 /* Direct LD off. 11:3. */
-#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543 /* PC-rel. load imm. 20:2. */
-#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544 /* TLS TP-rel. MOV{N,Z} 47:32. */
-#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545 /* TLS TP-rel. MOV{N,Z} 31:16. */
-#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546 /* Likewise; MOVK; no check. */
-#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547 /* TLS TP-rel. MOV{N,Z} 15:0. */
-#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548 /* Likewise; MOVK; no check. */
-#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549 /* TP-rel. ADD imm. 23:12. */
-#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550 /* TP-rel. ADD imm. 11:0. */
-#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551 /* Likewise; no ovfl. check. */
-#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552 /* TP-rel. LD/ST off. 11:0. */
-#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553 /* Likewise; no ovfl. check. */
-#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554 /* TP-rel. LD/ST off. 11:1. */
-#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555 /* Likewise; no check. */
-#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556 /* TP-rel. LD/ST off. 11:2. */
-#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557 /* Likewise; no check. */
-#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558 /* TP-rel. LD/ST off. 11:3. */
-#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559 /* Likewise; no check. */
-#define R_AARCH64_TLSDESC_LD_PREL19 560 /* PC-rel. load immediate 20:2. */
-#define R_AARCH64_TLSDESC_ADR_PREL21 561 /* PC-rel. ADR immediate 20:0. */
-#define R_AARCH64_TLSDESC_ADR_PAGE21 562 /* Page-rel. ADRP imm. 32:12. */
-#define R_AARCH64_TLSDESC_LD64_LO12 563 /* Direct LD off. from 11:3. */
-#define R_AARCH64_TLSDESC_ADD_LO12 564 /* Direct ADD imm. from 11:0. */
-#define R_AARCH64_TLSDESC_OFF_G1 565 /* GOT-rel. MOV{N,Z} imm. 31:16. */
-#define R_AARCH64_TLSDESC_OFF_G0_NC 566 /* GOT-rel. MOVK imm. 15:0; no ck. */
-#define R_AARCH64_TLSDESC_LDR 567 /* Relax LDR. */
-#define R_AARCH64_TLSDESC_ADD 568 /* Relax ADD. */
-#define R_AARCH64_TLSDESC_CALL 569 /* Relax BLR. */
-#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570 /* TP-rel. LD/ST off. 11:4. */
-#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571 /* Likewise; no check. */
-#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572 /* DTP-rel. LD/ST imm. 11:4. */
-#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573 /* Likewise; no check. */
-#define R_AARCH64_COPY 1024 /* Copy symbol at runtime. */
-#define R_AARCH64_GLOB_DAT 1025 /* Create GOT entry. */
-#define R_AARCH64_JUMP_SLOT 1026 /* Create PLT entry. */
-#define R_AARCH64_RELATIVE 1027 /* Adjust by program base. */
-#define R_AARCH64_TLS_DTPMOD 1028 /* Module number, 64 bit. */
-#define R_AARCH64_TLS_DTPREL 1029 /* Module-relative offset, 64 bit. */
-#define R_AARCH64_TLS_TPREL 1030 /* TP-relative offset, 64 bit. */
-#define R_AARCH64_TLSDESC 1031 /* TLS Descriptor. */
-#define R_AARCH64_IRELATIVE 1032 /* STT_GNU_IFUNC relocation. */
-
-/* MTE memory tag segment type. */
-#define PT_AARCH64_MEMTAG_MTE (PT_LOPROC + 2)
-
-/* AArch64 specific values for the Dyn d_tag field. */
-#define DT_AARCH64_BTI_PLT (DT_LOPROC + 1)
-#define DT_AARCH64_PAC_PLT (DT_LOPROC + 3)
-#define DT_AARCH64_VARIANT_PCS (DT_LOPROC + 5)
-#define DT_AARCH64_NUM 6
-
-/* AArch64 specific values for the st_other field. */
-#define STO_AARCH64_VARIANT_PCS 0x80
-
-/* ARM relocs. */
-
-#define R_ARM_NONE 0 /* No reloc */
-#define R_ARM_PC24 1 /* Deprecated PC relative 26
- bit branch. */
-#define R_ARM_ABS32 2 /* Direct 32 bit */
-#define R_ARM_REL32 3 /* PC relative 32 bit */
-#define R_ARM_PC13 4
-#define R_ARM_ABS16 5 /* Direct 16 bit */
-#define R_ARM_ABS12 6 /* Direct 12 bit */
-#define R_ARM_THM_ABS5 7 /* Direct & 0x7C (LDR, STR). */
-#define R_ARM_ABS8 8 /* Direct 8 bit */
-#define R_ARM_SBREL32 9
-#define R_ARM_THM_PC22 10 /* PC relative 24 bit (Thumb32 BL). */
-#define R_ARM_THM_PC8 11 /* PC relative & 0x3FC
- (Thumb16 LDR, ADD, ADR). */
-#define R_ARM_AMP_VCALL9 12
-#define R_ARM_SWI24 13 /* Obsolete static relocation. */
-#define R_ARM_TLS_DESC 13 /* Dynamic relocation. */
-#define R_ARM_THM_SWI8 14 /* Reserved. */
-#define R_ARM_XPC25 15 /* Reserved. */
-#define R_ARM_THM_XPC22 16 /* Reserved. */
-#define R_ARM_TLS_DTPMOD32 17 /* ID of module containing symbol */
-#define R_ARM_TLS_DTPOFF32 18 /* Offset in TLS block */
-#define R_ARM_TLS_TPOFF32 19 /* Offset in static TLS block */
-#define R_ARM_COPY 20 /* Copy symbol at runtime */
-#define R_ARM_GLOB_DAT 21 /* Create GOT entry */
-#define R_ARM_JUMP_SLOT 22 /* Create PLT entry */
-#define R_ARM_RELATIVE 23 /* Adjust by program base */
-#define R_ARM_GOTOFF 24 /* 32 bit offset to GOT */
-#define R_ARM_GOTPC 25 /* 32 bit PC relative offset to GOT */
-#define R_ARM_GOT32 26 /* 32 bit GOT entry */
-#define R_ARM_PLT32 27 /* Deprecated, 32 bit PLT address. */
-#define R_ARM_CALL 28 /* PC relative 24 bit (BL, BLX). */
-#define R_ARM_JUMP24 29 /* PC relative 24 bit
- (B, BL). */
-#define R_ARM_THM_JUMP24 30 /* PC relative 24 bit (Thumb32 B.W). */
-#define R_ARM_BASE_ABS 31 /* Adjust by program base. */
-#define R_ARM_ALU_PCREL_7_0 32 /* Obsolete. */
-#define R_ARM_ALU_PCREL_15_8 33 /* Obsolete. */
-#define R_ARM_ALU_PCREL_23_15 34 /* Obsolete. */
-#define R_ARM_LDR_SBREL_11_0 35 /* Deprecated, prog. base relative. */
-#define R_ARM_ALU_SBREL_19_12 36 /* Deprecated, prog. base relative. */
-#define R_ARM_ALU_SBREL_27_20 37 /* Deprecated, prog. base relative. */
-#define R_ARM_TARGET1 38
-#define R_ARM_SBREL31 39 /* Program base relative. */
-#define R_ARM_V4BX 40
-#define R_ARM_TARGET2 41
-#define R_ARM_PREL31 42 /* 32 bit PC relative. */
-#define R_ARM_MOVW_ABS_NC 43 /* Direct 16-bit (MOVW). */
-#define R_ARM_MOVT_ABS 44 /* Direct high 16-bit (MOVT). */
-#define R_ARM_MOVW_PREL_NC 45 /* PC relative 16-bit (MOVW). */
-#define R_ARM_MOVT_PREL 46 /* PC relative (MOVT). */
-#define R_ARM_THM_MOVW_ABS_NC 47 /* Direct 16 bit (Thumb32 MOVW). */
-#define R_ARM_THM_MOVT_ABS 48 /* Direct high 16 bit
- (Thumb32 MOVT). */
-#define R_ARM_THM_MOVW_PREL_NC 49 /* PC relative 16 bit
- (Thumb32 MOVW). */
-#define R_ARM_THM_MOVT_PREL 50 /* PC relative high 16 bit
- (Thumb32 MOVT). */
-#define R_ARM_THM_JUMP19 51 /* PC relative 20 bit
- (Thumb32 B.W). */
-#define R_ARM_THM_JUMP6 52 /* PC relative X & 0x7E
- (Thumb16 CBZ, CBNZ). */
-#define R_ARM_THM_ALU_PREL_11_0 53 /* PC relative 12 bit
- (Thumb32 ADR.W). */
-#define R_ARM_THM_PC12 54 /* PC relative 12 bit
- (Thumb32 LDR{D,SB,H,SH}). */
-#define R_ARM_ABS32_NOI 55 /* Direct 32-bit. */
-#define R_ARM_REL32_NOI 56 /* PC relative 32-bit. */
-#define R_ARM_ALU_PC_G0_NC 57 /* PC relative (ADD, SUB). */
-#define R_ARM_ALU_PC_G0 58 /* PC relative (ADD, SUB). */
-#define R_ARM_ALU_PC_G1_NC 59 /* PC relative (ADD, SUB). */
-#define R_ARM_ALU_PC_G1 60 /* PC relative (ADD, SUB). */
-#define R_ARM_ALU_PC_G2 61 /* PC relative (ADD, SUB). */
-#define R_ARM_LDR_PC_G1 62 /* PC relative (LDR,STR,LDRB,STRB). */
-#define R_ARM_LDR_PC_G2 63 /* PC relative (LDR,STR,LDRB,STRB). */
-#define R_ARM_LDRS_PC_G0 64 /* PC relative (STR{D,H},
- LDR{D,SB,H,SH}). */
-#define R_ARM_LDRS_PC_G1 65 /* PC relative (STR{D,H},
- LDR{D,SB,H,SH}). */
-#define R_ARM_LDRS_PC_G2 66 /* PC relative (STR{D,H},
- LDR{D,SB,H,SH}). */
-#define R_ARM_LDC_PC_G0 67 /* PC relative (LDC, STC). */
-#define R_ARM_LDC_PC_G1 68 /* PC relative (LDC, STC). */
-#define R_ARM_LDC_PC_G2 69 /* PC relative (LDC, STC). */
-#define R_ARM_ALU_SB_G0_NC 70 /* Program base relative (ADD,SUB). */
-#define R_ARM_ALU_SB_G0 71 /* Program base relative (ADD,SUB). */
-#define R_ARM_ALU_SB_G1_NC 72 /* Program base relative (ADD,SUB). */
-#define R_ARM_ALU_SB_G1 73 /* Program base relative (ADD,SUB). */
-#define R_ARM_ALU_SB_G2 74 /* Program base relative (ADD,SUB). */
-#define R_ARM_LDR_SB_G0 75 /* Program base relative (LDR,
- STR, LDRB, STRB). */
-#define R_ARM_LDR_SB_G1 76 /* Program base relative
- (LDR, STR, LDRB, STRB). */
-#define R_ARM_LDR_SB_G2 77 /* Program base relative
- (LDR, STR, LDRB, STRB). */
-#define R_ARM_LDRS_SB_G0 78 /* Program base relative
- (LDR, STR, LDRB, STRB). */
-#define R_ARM_LDRS_SB_G1 79 /* Program base relative
- (LDR, STR, LDRB, STRB). */
-#define R_ARM_LDRS_SB_G2 80 /* Program base relative
- (LDR, STR, LDRB, STRB). */
-#define R_ARM_LDC_SB_G0 81 /* Program base relative (LDC,STC). */
-#define R_ARM_LDC_SB_G1 82 /* Program base relative (LDC,STC). */
-#define R_ARM_LDC_SB_G2 83 /* Program base relative (LDC,STC). */
-#define R_ARM_MOVW_BREL_NC 84 /* Program base relative 16
- bit (MOVW). */
-#define R_ARM_MOVT_BREL 85 /* Program base relative high
- 16 bit (MOVT). */
-#define R_ARM_MOVW_BREL 86 /* Program base relative 16
- bit (MOVW). */
-#define R_ARM_THM_MOVW_BREL_NC 87 /* Program base relative 16
- bit (Thumb32 MOVW). */
-#define R_ARM_THM_MOVT_BREL 88 /* Program base relative high
- 16 bit (Thumb32 MOVT). */
-#define R_ARM_THM_MOVW_BREL 89 /* Program base relative 16
- bit (Thumb32 MOVW). */
-#define R_ARM_TLS_GOTDESC 90
-#define R_ARM_TLS_CALL 91
-#define R_ARM_TLS_DESCSEQ 92 /* TLS relaxation. */
-#define R_ARM_THM_TLS_CALL 93
-#define R_ARM_PLT32_ABS 94
-#define R_ARM_GOT_ABS 95 /* GOT entry. */
-#define R_ARM_GOT_PREL 96 /* PC relative GOT entry. */
-#define R_ARM_GOT_BREL12 97 /* GOT entry relative to GOT
- origin (LDR). */
-#define R_ARM_GOTOFF12 98 /* 12 bit, GOT entry relative
- to GOT origin (LDR, STR). */
-#define R_ARM_GOTRELAX 99
-#define R_ARM_GNU_VTENTRY 100
-#define R_ARM_GNU_VTINHERIT 101
-#define R_ARM_THM_PC11 102 /* PC relative & 0xFFE (Thumb16 B). */
-#define R_ARM_THM_PC9 103 /* PC relative & 0x1FE
- (Thumb16 B/B). */
-#define R_ARM_TLS_GD32 104 /* PC-rel 32 bit for global dynamic
- thread local data */
-#define R_ARM_TLS_LDM32 105 /* PC-rel 32 bit for local dynamic
- thread local data */
-#define R_ARM_TLS_LDO32 106 /* 32 bit offset relative to TLS
- block */
-#define R_ARM_TLS_IE32 107 /* PC-rel 32 bit for GOT entry of
- static TLS block offset */
-#define R_ARM_TLS_LE32 108 /* 32 bit offset relative to static
- TLS block */
-#define R_ARM_TLS_LDO12 109 /* 12 bit relative to TLS
- block (LDR, STR). */
-#define R_ARM_TLS_LE12 110 /* 12 bit relative to static
- TLS block (LDR, STR). */
-#define R_ARM_TLS_IE12GP 111 /* 12 bit GOT entry relative
- to GOT origin (LDR). */
-#define R_ARM_ME_TOO 128 /* Obsolete. */
-#define R_ARM_THM_TLS_DESCSEQ 129
-#define R_ARM_THM_TLS_DESCSEQ16 129
-#define R_ARM_THM_TLS_DESCSEQ32 130
-#define R_ARM_THM_GOT_BREL12 131 /* GOT entry relative to GOT
- origin, 12 bit (Thumb32 LDR). */
-#define R_ARM_IRELATIVE 160
-#define R_ARM_RXPC25 249
-#define R_ARM_RSBREL32 250
-#define R_ARM_THM_RPC22 251
-#define R_ARM_RREL32 252
-#define R_ARM_RABS22 253
-#define R_ARM_RPC24 254
-#define R_ARM_RBASE 255
-/* Keep this the last entry. */
-#define R_ARM_NUM 256
-
-/* C-SKY */
-#define R_CKCORE_NONE 0 /* no reloc */
-#define R_CKCORE_ADDR32 1 /* direct 32 bit (S + A) */
-#define R_CKCORE_PCRELIMM8BY4 2 /* disp ((S + A - P) >> 2) & 0xff */
-#define R_CKCORE_PCRELIMM11BY2 3 /* disp ((S + A - P) >> 1) & 0x7ff */
-#define R_CKCORE_PCREL32 5 /* 32-bit rel (S + A - P) */
-#define R_CKCORE_PCRELJSR_IMM11BY2 6 /* disp ((S + A - P) >>1) & 0x7ff */
-#define R_CKCORE_RELATIVE 9 /* 32 bit adjust program base(B + A)*/
-#define R_CKCORE_COPY 10 /* 32 bit adjust by program base */
-#define R_CKCORE_GLOB_DAT 11 /* off between got and sym (S) */
-#define R_CKCORE_JUMP_SLOT 12 /* PLT entry (S) */
-#define R_CKCORE_GOTOFF 13 /* offset to GOT (S + A - GOT) */
-#define R_CKCORE_GOTPC 14 /* PC offset to GOT (GOT + A - P) */
-#define R_CKCORE_GOT32 15 /* 32 bit GOT entry (G) */
-#define R_CKCORE_PLT32 16 /* 32 bit PLT entry (G) */
-#define R_CKCORE_ADDRGOT 17 /* GOT entry in GLOB_DAT (GOT + G) */
-#define R_CKCORE_ADDRPLT 18 /* PLT entry in GLOB_DAT (GOT + G) */
-#define R_CKCORE_PCREL_IMM26BY2 19 /* ((S + A - P) >> 1) & 0x3ffffff */
-#define R_CKCORE_PCREL_IMM16BY2 20 /* disp ((S + A - P) >> 1) & 0xffff */
-#define R_CKCORE_PCREL_IMM16BY4 21 /* disp ((S + A - P) >> 2) & 0xffff */
-#define R_CKCORE_PCREL_IMM10BY2 22 /* disp ((S + A - P) >> 1) & 0x3ff */
-#define R_CKCORE_PCREL_IMM10BY4 23 /* disp ((S + A - P) >> 2) & 0x3ff */
-#define R_CKCORE_ADDR_HI16 24 /* high & low 16 bit ADDR */
- /* ((S + A) >> 16) & 0xffff */
-#define R_CKCORE_ADDR_LO16 25 /* (S + A) & 0xffff */
-#define R_CKCORE_GOTPC_HI16 26 /* high & low 16 bit GOTPC */
- /* ((GOT + A - P) >> 16) & 0xffff */
-#define R_CKCORE_GOTPC_LO16 27 /* (GOT + A - P) & 0xffff */
-#define R_CKCORE_GOTOFF_HI16 28 /* high & low 16 bit GOTOFF */
- /* ((S + A - GOT) >> 16) & 0xffff */
-#define R_CKCORE_GOTOFF_LO16 29 /* (S + A - GOT) & 0xffff */
-#define R_CKCORE_GOT12 30 /* 12 bit disp GOT entry (G) */
-#define R_CKCORE_GOT_HI16 31 /* high & low 16 bit GOT */
- /* (G >> 16) & 0xffff */
-#define R_CKCORE_GOT_LO16 32 /* (G & 0xffff) */
-#define R_CKCORE_PLT12 33 /* 12 bit disp PLT entry (G) */
-#define R_CKCORE_PLT_HI16 34 /* high & low 16 bit PLT */
- /* (G >> 16) & 0xffff */
-#define R_CKCORE_PLT_LO16 35 /* G & 0xffff */
-#define R_CKCORE_ADDRGOT_HI16 36 /* high & low 16 bit ADDRGOT */
- /* (GOT + G * 4) & 0xffff */
-#define R_CKCORE_ADDRGOT_LO16 37 /* (GOT + G * 4) & 0xffff */
-#define R_CKCORE_ADDRPLT_HI16 38 /* high & low 16 bit ADDRPLT */
- /* ((GOT + G * 4) >> 16) & 0xFFFF */
-#define R_CKCORE_ADDRPLT_LO16 39 /* (GOT+G*4) & 0xffff */
-#define R_CKCORE_PCREL_JSR_IMM26BY2 40 /* disp ((S+A-P) >>1) & x3ffffff */
-#define R_CKCORE_TOFFSET_LO16 41 /* (S+A-BTEXT) & 0xffff */
-#define R_CKCORE_DOFFSET_LO16 42 /* (S+A-BTEXT) & 0xffff */
-#define R_CKCORE_PCREL_IMM18BY2 43 /* disp ((S+A-P) >>1) & 0x3ffff */
-#define R_CKCORE_DOFFSET_IMM18 44 /* disp (S+A-BDATA) & 0x3ffff */
-#define R_CKCORE_DOFFSET_IMM18BY2 45 /* disp ((S+A-BDATA)>>1) & 0x3ffff */
-#define R_CKCORE_DOFFSET_IMM18BY4 46 /* disp ((S+A-BDATA)>>2) & 0x3ffff */
-#define R_CKCORE_GOT_IMM18BY4 48 /* disp (G >> 2) */
-#define R_CKCORE_PLT_IMM18BY4 49 /* disp (G >> 2) */
-#define R_CKCORE_PCREL_IMM7BY4 50 /* disp ((S+A-P) >>2) & 0x7f */
-#define R_CKCORE_TLS_LE32 51 /* 32 bit offset to TLS block */
-#define R_CKCORE_TLS_IE32 52
-#define R_CKCORE_TLS_GD32 53
-#define R_CKCORE_TLS_LDM32 54
-#define R_CKCORE_TLS_LDO32 55
-#define R_CKCORE_TLS_DTPMOD32 56
-#define R_CKCORE_TLS_DTPOFF32 57
-#define R_CKCORE_TLS_TPOFF32 58
-
-/* C-SKY elf header definition. */
-#define EF_CSKY_ABIMASK 0XF0000000
-#define EF_CSKY_OTHER 0X0FFF0000
-#define EF_CSKY_PROCESSOR 0X0000FFFF
-
-#define EF_CSKY_ABIV1 0X10000000
-#define EF_CSKY_ABIV2 0X20000000
-
-/* C-SKY attributes section. */
-#define SHT_CSKY_ATTRIBUTES (SHT_LOPROC + 1)
-
-/* IA-64 specific declarations. */
-
-/* Processor specific flags for the Ehdr e_flags field. */
-#define EF_IA_64_MASKOS 0x0000000f /* os-specific flags */
-#define EF_IA_64_ABI64 0x00000010 /* 64-bit ABI */
-#define EF_IA_64_ARCH 0xff000000 /* arch. version mask */
-
-/* Processor specific values for the Phdr p_type field. */
-#define PT_IA_64_ARCHEXT (PT_LOPROC + 0) /* arch extension bits */
-#define PT_IA_64_UNWIND (PT_LOPROC + 1) /* ia64 unwind bits */
-#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12)
-#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13)
-#define PT_IA_64_HP_STACK (PT_LOOS + 0x14)
-
-/* Processor specific flags for the Phdr p_flags field. */
-#define PF_IA_64_NORECOV 0x80000000 /* spec insns w/o recovery */
-
-/* Processor specific values for the Shdr sh_type field. */
-#define SHT_IA_64_EXT (SHT_LOPROC + 0) /* extension bits */
-#define SHT_IA_64_UNWIND (SHT_LOPROC + 1) /* unwind bits */
-
-/* Processor specific flags for the Shdr sh_flags field. */
-#define SHF_IA_64_SHORT 0x10000000 /* section near gp */
-#define SHF_IA_64_NORECOV 0x20000000 /* spec insns w/o recovery */
-
-/* Processor specific values for the Dyn d_tag field. */
-#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
-#define DT_IA_64_NUM 1
-
-/* IA-64 relocations. */
-#define R_IA64_NONE 0x00 /* none */
-#define R_IA64_IMM14 0x21 /* symbol + addend, add imm14 */
-#define R_IA64_IMM22 0x22 /* symbol + addend, add imm22 */
-#define R_IA64_IMM64 0x23 /* symbol + addend, mov imm64 */
-#define R_IA64_DIR32MSB 0x24 /* symbol + addend, data4 MSB */
-#define R_IA64_DIR32LSB 0x25 /* symbol + addend, data4 LSB */
-#define R_IA64_DIR64MSB 0x26 /* symbol + addend, data8 MSB */
-#define R_IA64_DIR64LSB 0x27 /* symbol + addend, data8 LSB */
-#define R_IA64_GPREL22 0x2a /* @gprel(sym + add), add imm22 */
-#define R_IA64_GPREL64I 0x2b /* @gprel(sym + add), mov imm64 */
-#define R_IA64_GPREL32MSB 0x2c /* @gprel(sym + add), data4 MSB */
-#define R_IA64_GPREL32LSB 0x2d /* @gprel(sym + add), data4 LSB */
-#define R_IA64_GPREL64MSB 0x2e /* @gprel(sym + add), data8 MSB */
-#define R_IA64_GPREL64LSB 0x2f /* @gprel(sym + add), data8 LSB */
-#define R_IA64_LTOFF22 0x32 /* @ltoff(sym + add), add imm22 */
-#define R_IA64_LTOFF64I 0x33 /* @ltoff(sym + add), mov imm64 */
-#define R_IA64_PLTOFF22 0x3a /* @pltoff(sym + add), add imm22 */
-#define R_IA64_PLTOFF64I 0x3b /* @pltoff(sym + add), mov imm64 */
-#define R_IA64_PLTOFF64MSB 0x3e /* @pltoff(sym + add), data8 MSB */
-#define R_IA64_PLTOFF64LSB 0x3f /* @pltoff(sym + add), data8 LSB */
-#define R_IA64_FPTR64I 0x43 /* @fptr(sym + add), mov imm64 */
-#define R_IA64_FPTR32MSB 0x44 /* @fptr(sym + add), data4 MSB */
-#define R_IA64_FPTR32LSB 0x45 /* @fptr(sym + add), data4 LSB */
-#define R_IA64_FPTR64MSB 0x46 /* @fptr(sym + add), data8 MSB */
-#define R_IA64_FPTR64LSB 0x47 /* @fptr(sym + add), data8 LSB */
-#define R_IA64_PCREL60B 0x48 /* @pcrel(sym + add), brl */
-#define R_IA64_PCREL21B 0x49 /* @pcrel(sym + add), ptb, call */
-#define R_IA64_PCREL21M 0x4a /* @pcrel(sym + add), chk.s */
-#define R_IA64_PCREL21F 0x4b /* @pcrel(sym + add), fchkf */
-#define R_IA64_PCREL32MSB 0x4c /* @pcrel(sym + add), data4 MSB */
-#define R_IA64_PCREL32LSB 0x4d /* @pcrel(sym + add), data4 LSB */
-#define R_IA64_PCREL64MSB 0x4e /* @pcrel(sym + add), data8 MSB */
-#define R_IA64_PCREL64LSB 0x4f /* @pcrel(sym + add), data8 LSB */
-#define R_IA64_LTOFF_FPTR22 0x52 /* @ltoff(@fptr(s+a)), imm22 */
-#define R_IA64_LTOFF_FPTR64I 0x53 /* @ltoff(@fptr(s+a)), imm64 */
-#define R_IA64_LTOFF_FPTR32MSB 0x54 /* @ltoff(@fptr(s+a)), data4 MSB */
-#define R_IA64_LTOFF_FPTR32LSB 0x55 /* @ltoff(@fptr(s+a)), data4 LSB */
-#define R_IA64_LTOFF_FPTR64MSB 0x56 /* @ltoff(@fptr(s+a)), data8 MSB */
-#define R_IA64_LTOFF_FPTR64LSB 0x57 /* @ltoff(@fptr(s+a)), data8 LSB */
-#define R_IA64_SEGREL32MSB 0x5c /* @segrel(sym + add), data4 MSB */
-#define R_IA64_SEGREL32LSB 0x5d /* @segrel(sym + add), data4 LSB */
-#define R_IA64_SEGREL64MSB 0x5e /* @segrel(sym + add), data8 MSB */
-#define R_IA64_SEGREL64LSB 0x5f /* @segrel(sym + add), data8 LSB */
-#define R_IA64_SECREL32MSB 0x64 /* @secrel(sym + add), data4 MSB */
-#define R_IA64_SECREL32LSB 0x65 /* @secrel(sym + add), data4 LSB */
-#define R_IA64_SECREL64MSB 0x66 /* @secrel(sym + add), data8 MSB */
-#define R_IA64_SECREL64LSB 0x67 /* @secrel(sym + add), data8 LSB */
-#define R_IA64_REL32MSB 0x6c /* data 4 + REL */
-#define R_IA64_REL32LSB 0x6d /* data 4 + REL */
-#define R_IA64_REL64MSB 0x6e /* data 8 + REL */
-#define R_IA64_REL64LSB 0x6f /* data 8 + REL */
-#define R_IA64_LTV32MSB 0x74 /* symbol + addend, data4 MSB */
-#define R_IA64_LTV32LSB 0x75 /* symbol + addend, data4 LSB */
-#define R_IA64_LTV64MSB 0x76 /* symbol + addend, data8 MSB */
-#define R_IA64_LTV64LSB 0x77 /* symbol + addend, data8 LSB */
-#define R_IA64_PCREL21BI 0x79 /* @pcrel(sym + add), 21bit inst */
-#define R_IA64_PCREL22 0x7a /* @pcrel(sym + add), 22bit inst */
-#define R_IA64_PCREL64I 0x7b /* @pcrel(sym + add), 64bit inst */
-#define R_IA64_IPLTMSB 0x80 /* dynamic reloc, imported PLT, MSB */
-#define R_IA64_IPLTLSB 0x81 /* dynamic reloc, imported PLT, LSB */
-#define R_IA64_COPY 0x84 /* copy relocation */
-#define R_IA64_SUB 0x85 /* Addend and symbol difference */
-#define R_IA64_LTOFF22X 0x86 /* LTOFF22, relaxable. */
-#define R_IA64_LDXMOV 0x87 /* Use of LTOFF22X. */
-#define R_IA64_TPREL14 0x91 /* @tprel(sym + add), imm14 */
-#define R_IA64_TPREL22 0x92 /* @tprel(sym + add), imm22 */
-#define R_IA64_TPREL64I 0x93 /* @tprel(sym + add), imm64 */
-#define R_IA64_TPREL64MSB 0x96 /* @tprel(sym + add), data8 MSB */
-#define R_IA64_TPREL64LSB 0x97 /* @tprel(sym + add), data8 LSB */
-#define R_IA64_LTOFF_TPREL22 0x9a /* @ltoff(@tprel(s+a)), imm2 */
-#define R_IA64_DTPMOD64MSB 0xa6 /* @dtpmod(sym + add), data8 MSB */
-#define R_IA64_DTPMOD64LSB 0xa7 /* @dtpmod(sym + add), data8 LSB */
-#define R_IA64_LTOFF_DTPMOD22 0xaa /* @ltoff(@dtpmod(sym + add)), imm22 */
-#define R_IA64_DTPREL14 0xb1 /* @dtprel(sym + add), imm14 */
-#define R_IA64_DTPREL22 0xb2 /* @dtprel(sym + add), imm22 */
-#define R_IA64_DTPREL64I 0xb3 /* @dtprel(sym + add), imm64 */
-#define R_IA64_DTPREL32MSB 0xb4 /* @dtprel(sym + add), data4 MSB */
-#define R_IA64_DTPREL32LSB 0xb5 /* @dtprel(sym + add), data4 LSB */
-#define R_IA64_DTPREL64MSB 0xb6 /* @dtprel(sym + add), data8 MSB */
-#define R_IA64_DTPREL64LSB 0xb7 /* @dtprel(sym + add), data8 LSB */
-#define R_IA64_LTOFF_DTPREL22 0xba /* @ltoff(@dtprel(s+a)), imm22 */
-
-/* SH specific declarations */
-
-/* Processor specific flags for the ELF header e_flags field. */
-#define EF_SH_MACH_MASK 0x1f
-#define EF_SH_UNKNOWN 0x0
-#define EF_SH1 0x1
-#define EF_SH2 0x2
-#define EF_SH3 0x3
-#define EF_SH_DSP 0x4
-#define EF_SH3_DSP 0x5
-#define EF_SH4AL_DSP 0x6
-#define EF_SH3E 0x8
-#define EF_SH4 0x9
-#define EF_SH2E 0xb
-#define EF_SH4A 0xc
-#define EF_SH2A 0xd
-#define EF_SH4_NOFPU 0x10
-#define EF_SH4A_NOFPU 0x11
-#define EF_SH4_NOMMU_NOFPU 0x12
-#define EF_SH2A_NOFPU 0x13
-#define EF_SH3_NOMMU 0x14
-#define EF_SH2A_SH4_NOFPU 0x15
-#define EF_SH2A_SH3_NOFPU 0x16
-#define EF_SH2A_SH4 0x17
-#define EF_SH2A_SH3E 0x18
-
-/* SH relocs. */
-#define R_SH_NONE 0
-#define R_SH_DIR32 1
-#define R_SH_REL32 2
-#define R_SH_DIR8WPN 3
-#define R_SH_IND12W 4
-#define R_SH_DIR8WPL 5
-#define R_SH_DIR8WPZ 6
-#define R_SH_DIR8BP 7
-#define R_SH_DIR8W 8
-#define R_SH_DIR8L 9
-#define R_SH_SWITCH16 25
-#define R_SH_SWITCH32 26
-#define R_SH_USES 27
-#define R_SH_COUNT 28
-#define R_SH_ALIGN 29
-#define R_SH_CODE 30
-#define R_SH_DATA 31
-#define R_SH_LABEL 32
-#define R_SH_SWITCH8 33
-#define R_SH_GNU_VTINHERIT 34
-#define R_SH_GNU_VTENTRY 35
-#define R_SH_TLS_GD_32 144
-#define R_SH_TLS_LD_32 145
-#define R_SH_TLS_LDO_32 146
-#define R_SH_TLS_IE_32 147
-#define R_SH_TLS_LE_32 148
-#define R_SH_TLS_DTPMOD32 149
-#define R_SH_TLS_DTPOFF32 150
-#define R_SH_TLS_TPOFF32 151
-#define R_SH_GOT32 160
-#define R_SH_PLT32 161
-#define R_SH_COPY 162
-#define R_SH_GLOB_DAT 163
-#define R_SH_JMP_SLOT 164
-#define R_SH_RELATIVE 165
-#define R_SH_GOTOFF 166
-#define R_SH_GOTPC 167
-/* Keep this the last entry. */
-#define R_SH_NUM 256
-
-/* S/390 specific definitions. */
-
-/* Valid values for the e_flags field. */
-
-#define EF_S390_HIGH_GPRS 0x00000001 /* High GPRs kernel facility needed. */
-
-/* Additional s390 relocs */
-
-#define R_390_NONE 0 /* No reloc. */
-#define R_390_8 1 /* Direct 8 bit. */
-#define R_390_12 2 /* Direct 12 bit. */
-#define R_390_16 3 /* Direct 16 bit. */
-#define R_390_32 4 /* Direct 32 bit. */
-#define R_390_PC32 5 /* PC relative 32 bit. */
-#define R_390_GOT12 6 /* 12 bit GOT offset. */
-#define R_390_GOT32 7 /* 32 bit GOT offset. */
-#define R_390_PLT32 8 /* 32 bit PC relative PLT address. */
-#define R_390_COPY 9 /* Copy symbol at runtime. */
-#define R_390_GLOB_DAT 10 /* Create GOT entry. */
-#define R_390_JMP_SLOT 11 /* Create PLT entry. */
-#define R_390_RELATIVE 12 /* Adjust by program base. */
-#define R_390_GOTOFF32 13 /* 32 bit offset to GOT. */
-#define R_390_GOTPC 14 /* 32 bit PC relative offset to GOT. */
-#define R_390_GOT16 15 /* 16 bit GOT offset. */
-#define R_390_PC16 16 /* PC relative 16 bit. */
-#define R_390_PC16DBL 17 /* PC relative 16 bit shifted by 1. */
-#define R_390_PLT16DBL 18 /* 16 bit PC rel. PLT shifted by 1. */
-#define R_390_PC32DBL 19 /* PC relative 32 bit shifted by 1. */
-#define R_390_PLT32DBL 20 /* 32 bit PC rel. PLT shifted by 1. */
-#define R_390_GOTPCDBL 21 /* 32 bit PC rel. GOT shifted by 1. */
-#define R_390_64 22 /* Direct 64 bit. */
-#define R_390_PC64 23 /* PC relative 64 bit. */
-#define R_390_GOT64 24 /* 64 bit GOT offset. */
-#define R_390_PLT64 25 /* 64 bit PC relative PLT address. */
-#define R_390_GOTENT 26 /* 32 bit PC rel. to GOT entry >> 1. */
-#define R_390_GOTOFF16 27 /* 16 bit offset to GOT. */
-#define R_390_GOTOFF64 28 /* 64 bit offset to GOT. */
-#define R_390_GOTPLT12 29 /* 12 bit offset to jump slot. */
-#define R_390_GOTPLT16 30 /* 16 bit offset to jump slot. */
-#define R_390_GOTPLT32 31 /* 32 bit offset to jump slot. */
-#define R_390_GOTPLT64 32 /* 64 bit offset to jump slot. */
-#define R_390_GOTPLTENT 33 /* 32 bit rel. offset to jump slot. */
-#define R_390_PLTOFF16 34 /* 16 bit offset from GOT to PLT. */
-#define R_390_PLTOFF32 35 /* 32 bit offset from GOT to PLT. */
-#define R_390_PLTOFF64 36 /* 16 bit offset from GOT to PLT. */
-#define R_390_TLS_LOAD 37 /* Tag for load insn in TLS code. */
-#define R_390_TLS_GDCALL 38 /* Tag for function call in general
- dynamic TLS code. */
-#define R_390_TLS_LDCALL 39 /* Tag for function call in local
- dynamic TLS code. */
-#define R_390_TLS_GD32 40 /* Direct 32 bit for general dynamic
- thread local data. */
-#define R_390_TLS_GD64 41 /* Direct 64 bit for general dynamic
- thread local data. */
-#define R_390_TLS_GOTIE12 42 /* 12 bit GOT offset for static TLS
- block offset. */
-#define R_390_TLS_GOTIE32 43 /* 32 bit GOT offset for static TLS
- block offset. */
-#define R_390_TLS_GOTIE64 44 /* 64 bit GOT offset for static TLS
- block offset. */
-#define R_390_TLS_LDM32 45 /* Direct 32 bit for local dynamic
- thread local data in LE code. */
-#define R_390_TLS_LDM64 46 /* Direct 64 bit for local dynamic
- thread local data in LE code. */
-#define R_390_TLS_IE32 47 /* 32 bit address of GOT entry for
- negated static TLS block offset. */
-#define R_390_TLS_IE64 48 /* 64 bit address of GOT entry for
- negated static TLS block offset. */
-#define R_390_TLS_IEENT 49 /* 32 bit rel. offset to GOT entry for
- negated static TLS block offset. */
-#define R_390_TLS_LE32 50 /* 32 bit negated offset relative to
- static TLS block. */
-#define R_390_TLS_LE64 51 /* 64 bit negated offset relative to
- static TLS block. */
-#define R_390_TLS_LDO32 52 /* 32 bit offset relative to TLS
- block. */
-#define R_390_TLS_LDO64 53 /* 64 bit offset relative to TLS
- block. */
-#define R_390_TLS_DTPMOD 54 /* ID of module containing symbol. */
-#define R_390_TLS_DTPOFF 55 /* Offset in TLS block. */
-#define R_390_TLS_TPOFF 56 /* Negated offset in static TLS
- block. */
-#define R_390_20 57 /* Direct 20 bit. */
-#define R_390_GOT20 58 /* 20 bit GOT offset. */
-#define R_390_GOTPLT20 59 /* 20 bit offset to jump slot. */
-#define R_390_TLS_GOTIE20 60 /* 20 bit GOT offset for static TLS
- block offset. */
-#define R_390_IRELATIVE 61 /* STT_GNU_IFUNC relocation. */
-/* Keep this the last entry. */
-#define R_390_NUM 62
-
-
-/* CRIS relocations. */
-#define R_CRIS_NONE 0
-#define R_CRIS_8 1
-#define R_CRIS_16 2
-#define R_CRIS_32 3
-#define R_CRIS_8_PCREL 4
-#define R_CRIS_16_PCREL 5
-#define R_CRIS_32_PCREL 6
-#define R_CRIS_GNU_VTINHERIT 7
-#define R_CRIS_GNU_VTENTRY 8
-#define R_CRIS_COPY 9
-#define R_CRIS_GLOB_DAT 10
-#define R_CRIS_JUMP_SLOT 11
-#define R_CRIS_RELATIVE 12
-#define R_CRIS_16_GOT 13
-#define R_CRIS_32_GOT 14
-#define R_CRIS_16_GOTPLT 15
-#define R_CRIS_32_GOTPLT 16
-#define R_CRIS_32_GOTREL 17
-#define R_CRIS_32_PLT_GOTREL 18
-#define R_CRIS_32_PLT_PCREL 19
-
-#define R_CRIS_NUM 20
-
-
-/* AMD x86-64 relocations. */
-#define R_X86_64_NONE 0 /* No reloc */
-#define R_X86_64_64 1 /* Direct 64 bit */
-#define R_X86_64_PC32 2 /* PC relative 32 bit signed */
-#define R_X86_64_GOT32 3 /* 32 bit GOT entry */
-#define R_X86_64_PLT32 4 /* 32 bit PLT address */
-#define R_X86_64_COPY 5 /* Copy symbol at runtime */
-#define R_X86_64_GLOB_DAT 6 /* Create GOT entry */
-#define R_X86_64_JUMP_SLOT 7 /* Create PLT entry */
-#define R_X86_64_RELATIVE 8 /* Adjust by program base */
-#define R_X86_64_GOTPCREL 9 /* 32 bit signed PC relative
- offset to GOT */
-#define R_X86_64_32 10 /* Direct 32 bit zero extended */
-#define R_X86_64_32S 11 /* Direct 32 bit sign extended */
-#define R_X86_64_16 12 /* Direct 16 bit zero extended */
-#define R_X86_64_PC16 13 /* 16 bit sign extended pc relative */
-#define R_X86_64_8 14 /* Direct 8 bit sign extended */
-#define R_X86_64_PC8 15 /* 8 bit sign extended pc relative */
-#define R_X86_64_DTPMOD64 16 /* ID of module containing symbol */
-#define R_X86_64_DTPOFF64 17 /* Offset in module's TLS block */
-#define R_X86_64_TPOFF64 18 /* Offset in initial TLS block */
-#define R_X86_64_TLSGD 19 /* 32 bit signed PC relative offset
- to two GOT entries for GD symbol */
-#define R_X86_64_TLSLD 20 /* 32 bit signed PC relative offset
- to two GOT entries for LD symbol */
-#define R_X86_64_DTPOFF32 21 /* Offset in TLS block */
-#define R_X86_64_GOTTPOFF 22 /* 32 bit signed PC relative offset
- to GOT entry for IE symbol */
-#define R_X86_64_TPOFF32 23 /* Offset in initial TLS block */
-#define R_X86_64_PC64 24 /* PC relative 64 bit */
-#define R_X86_64_GOTOFF64 25 /* 64 bit offset to GOT */
-#define R_X86_64_GOTPC32 26 /* 32 bit signed pc relative
- offset to GOT */
-#define R_X86_64_GOT64 27 /* 64-bit GOT entry offset */
-#define R_X86_64_GOTPCREL64 28 /* 64-bit PC relative offset
- to GOT entry */
-#define R_X86_64_GOTPC64 29 /* 64-bit PC relative offset to GOT */
-#define R_X86_64_GOTPLT64 30 /* like GOT64, says PLT entry needed */
-#define R_X86_64_PLTOFF64 31 /* 64-bit GOT relative offset
- to PLT entry */
-#define R_X86_64_SIZE32 32 /* Size of symbol plus 32-bit addend */
-#define R_X86_64_SIZE64 33 /* Size of symbol plus 64-bit addend */
-#define R_X86_64_GOTPC32_TLSDESC 34 /* GOT offset for TLS descriptor. */
-#define R_X86_64_TLSDESC_CALL 35 /* Marker for call through TLS
- descriptor. */
-#define R_X86_64_TLSDESC 36 /* TLS descriptor. */
-#define R_X86_64_IRELATIVE 37 /* Adjust indirectly by program base */
-#define R_X86_64_RELATIVE64 38 /* 64-bit adjust by program base */
- /* 39 Reserved was R_X86_64_PC32_BND */
- /* 40 Reserved was R_X86_64_PLT32_BND */
-#define R_X86_64_GOTPCRELX 41 /* Load from 32 bit signed pc relative
- offset to GOT entry without REX
- prefix, relaxable. */
-#define R_X86_64_REX_GOTPCRELX 42 /* Load from 32 bit signed pc relative
- offset to GOT entry with REX prefix,
- relaxable. */
-#define R_X86_64_NUM 43
-
-/* x86-64 sh_type values. */
-#define SHT_X86_64_UNWIND 0x70000001 /* Unwind information. */
-
-
-/* AM33 relocations. */
-#define R_MN10300_NONE 0 /* No reloc. */
-#define R_MN10300_32 1 /* Direct 32 bit. */
-#define R_MN10300_16 2 /* Direct 16 bit. */
-#define R_MN10300_8 3 /* Direct 8 bit. */
-#define R_MN10300_PCREL32 4 /* PC-relative 32-bit. */
-#define R_MN10300_PCREL16 5 /* PC-relative 16-bit signed. */
-#define R_MN10300_PCREL8 6 /* PC-relative 8-bit signed. */
-#define R_MN10300_GNU_VTINHERIT 7 /* Ancient C++ vtable garbage... */
-#define R_MN10300_GNU_VTENTRY 8 /* ... collection annotation. */
-#define R_MN10300_24 9 /* Direct 24 bit. */
-#define R_MN10300_GOTPC32 10 /* 32-bit PCrel offset to GOT. */
-#define R_MN10300_GOTPC16 11 /* 16-bit PCrel offset to GOT. */
-#define R_MN10300_GOTOFF32 12 /* 32-bit offset from GOT. */
-#define R_MN10300_GOTOFF24 13 /* 24-bit offset from GOT. */
-#define R_MN10300_GOTOFF16 14 /* 16-bit offset from GOT. */
-#define R_MN10300_PLT32 15 /* 32-bit PCrel to PLT entry. */
-#define R_MN10300_PLT16 16 /* 16-bit PCrel to PLT entry. */
-#define R_MN10300_GOT32 17 /* 32-bit offset to GOT entry. */
-#define R_MN10300_GOT24 18 /* 24-bit offset to GOT entry. */
-#define R_MN10300_GOT16 19 /* 16-bit offset to GOT entry. */
-#define R_MN10300_COPY 20 /* Copy symbol at runtime. */
-#define R_MN10300_GLOB_DAT 21 /* Create GOT entry. */
-#define R_MN10300_JMP_SLOT 22 /* Create PLT entry. */
-#define R_MN10300_RELATIVE 23 /* Adjust by program base. */
-#define R_MN10300_TLS_GD 24 /* 32-bit offset for global dynamic. */
-#define R_MN10300_TLS_LD 25 /* 32-bit offset for local dynamic. */
-#define R_MN10300_TLS_LDO 26 /* Module-relative offset. */
-#define R_MN10300_TLS_GOTIE 27 /* GOT offset for static TLS block
- offset. */
-#define R_MN10300_TLS_IE 28 /* GOT address for static TLS block
- offset. */
-#define R_MN10300_TLS_LE 29 /* Offset relative to static TLS
- block. */
-#define R_MN10300_TLS_DTPMOD 30 /* ID of module containing symbol. */
-#define R_MN10300_TLS_DTPOFF 31 /* Offset in module TLS block. */
-#define R_MN10300_TLS_TPOFF 32 /* Offset in static TLS block. */
-#define R_MN10300_SYM_DIFF 33 /* Adjustment for next reloc as needed
- by linker relaxation. */
-#define R_MN10300_ALIGN 34 /* Alignment requirement for linker
- relaxation. */
-#define R_MN10300_NUM 35
-
-
-/* M32R relocs. */
-#define R_M32R_NONE 0 /* No reloc. */
-#define R_M32R_16 1 /* Direct 16 bit. */
-#define R_M32R_32 2 /* Direct 32 bit. */
-#define R_M32R_24 3 /* Direct 24 bit. */
-#define R_M32R_10_PCREL 4 /* PC relative 10 bit shifted. */
-#define R_M32R_18_PCREL 5 /* PC relative 18 bit shifted. */
-#define R_M32R_26_PCREL 6 /* PC relative 26 bit shifted. */
-#define R_M32R_HI16_ULO 7 /* High 16 bit with unsigned low. */
-#define R_M32R_HI16_SLO 8 /* High 16 bit with signed low. */
-#define R_M32R_LO16 9 /* Low 16 bit. */
-#define R_M32R_SDA16 10 /* 16 bit offset in SDA. */
-#define R_M32R_GNU_VTINHERIT 11
-#define R_M32R_GNU_VTENTRY 12
-/* M32R relocs use SHT_RELA. */
-#define R_M32R_16_RELA 33 /* Direct 16 bit. */
-#define R_M32R_32_RELA 34 /* Direct 32 bit. */
-#define R_M32R_24_RELA 35 /* Direct 24 bit. */
-#define R_M32R_10_PCREL_RELA 36 /* PC relative 10 bit shifted. */
-#define R_M32R_18_PCREL_RELA 37 /* PC relative 18 bit shifted. */
-#define R_M32R_26_PCREL_RELA 38 /* PC relative 26 bit shifted. */
-#define R_M32R_HI16_ULO_RELA 39 /* High 16 bit with unsigned low */
-#define R_M32R_HI16_SLO_RELA 40 /* High 16 bit with signed low */
-#define R_M32R_LO16_RELA 41 /* Low 16 bit */
-#define R_M32R_SDA16_RELA 42 /* 16 bit offset in SDA */
-#define R_M32R_RELA_GNU_VTINHERIT 43
-#define R_M32R_RELA_GNU_VTENTRY 44
-#define R_M32R_REL32 45 /* PC relative 32 bit. */
-
-#define R_M32R_GOT24 48 /* 24 bit GOT entry */
-#define R_M32R_26_PLTREL 49 /* 26 bit PC relative to PLT shifted */
-#define R_M32R_COPY 50 /* Copy symbol at runtime */
-#define R_M32R_GLOB_DAT 51 /* Create GOT entry */
-#define R_M32R_JMP_SLOT 52 /* Create PLT entry */
-#define R_M32R_RELATIVE 53 /* Adjust by program base */
-#define R_M32R_GOTOFF 54 /* 24 bit offset to GOT */
-#define R_M32R_GOTPC24 55 /* 24 bit PC relative offset to GOT */
-#define R_M32R_GOT16_HI_ULO 56 /* High 16 bit GOT entry with unsigned
- low */
-#define R_M32R_GOT16_HI_SLO 57 /* High 16 bit GOT entry with signed
- low */
-#define R_M32R_GOT16_LO 58 /* Low 16 bit GOT entry */
-#define R_M32R_GOTPC_HI_ULO 59 /* High 16 bit PC relative offset to
- GOT with unsigned low */
-#define R_M32R_GOTPC_HI_SLO 60 /* High 16 bit PC relative offset to
- GOT with signed low */
-#define R_M32R_GOTPC_LO 61 /* Low 16 bit PC relative offset to
- GOT */
-#define R_M32R_GOTOFF_HI_ULO 62 /* High 16 bit offset to GOT
- with unsigned low */
-#define R_M32R_GOTOFF_HI_SLO 63 /* High 16 bit offset to GOT
- with signed low */
-#define R_M32R_GOTOFF_LO 64 /* Low 16 bit offset to GOT */
-#define R_M32R_NUM 256 /* Keep this the last entry. */
-
-/* MicroBlaze relocations */
-#define R_MICROBLAZE_NONE 0 /* No reloc. */
-#define R_MICROBLAZE_32 1 /* Direct 32 bit. */
-#define R_MICROBLAZE_32_PCREL 2 /* PC relative 32 bit. */
-#define R_MICROBLAZE_64_PCREL 3 /* PC relative 64 bit. */
-#define R_MICROBLAZE_32_PCREL_LO 4 /* Low 16 bits of PCREL32. */
-#define R_MICROBLAZE_64 5 /* Direct 64 bit. */
-#define R_MICROBLAZE_32_LO 6 /* Low 16 bit. */
-#define R_MICROBLAZE_SRO32 7 /* Read-only small data area. */
-#define R_MICROBLAZE_SRW32 8 /* Read-write small data area. */
-#define R_MICROBLAZE_64_NONE 9 /* No reloc. */
-#define R_MICROBLAZE_32_SYM_OP_SYM 10 /* Symbol Op Symbol relocation. */
-#define R_MICROBLAZE_GNU_VTINHERIT 11 /* GNU C++ vtable hierarchy. */
-#define R_MICROBLAZE_GNU_VTENTRY 12 /* GNU C++ vtable member usage. */
-#define R_MICROBLAZE_GOTPC_64 13 /* PC-relative GOT offset. */
-#define R_MICROBLAZE_GOT_64 14 /* GOT entry offset. */
-#define R_MICROBLAZE_PLT_64 15 /* PLT offset (PC-relative). */
-#define R_MICROBLAZE_REL 16 /* Adjust by program base. */
-#define R_MICROBLAZE_JUMP_SLOT 17 /* Create PLT entry. */
-#define R_MICROBLAZE_GLOB_DAT 18 /* Create GOT entry. */
-#define R_MICROBLAZE_GOTOFF_64 19 /* 64 bit offset to GOT. */
-#define R_MICROBLAZE_GOTOFF_32 20 /* 32 bit offset to GOT. */
-#define R_MICROBLAZE_COPY 21 /* Runtime copy. */
-#define R_MICROBLAZE_TLS 22 /* TLS Reloc. */
-#define R_MICROBLAZE_TLSGD 23 /* TLS General Dynamic. */
-#define R_MICROBLAZE_TLSLD 24 /* TLS Local Dynamic. */
-#define R_MICROBLAZE_TLSDTPMOD32 25 /* TLS Module ID. */
-#define R_MICROBLAZE_TLSDTPREL32 26 /* TLS Offset Within TLS Block. */
-#define R_MICROBLAZE_TLSDTPREL64 27 /* TLS Offset Within TLS Block. */
-#define R_MICROBLAZE_TLSGOTTPREL32 28 /* TLS Offset From Thread Pointer. */
-#define R_MICROBLAZE_TLSTPREL32 29 /* TLS Offset From Thread Pointer. */
-
-/* Legal values for d_tag (dynamic entry type). */
-#define DT_NIOS2_GP 0x70000002 /* Address of _gp. */
-
-/* Nios II relocations. */
-#define R_NIOS2_NONE 0 /* No reloc. */
-#define R_NIOS2_S16 1 /* Direct signed 16 bit. */
-#define R_NIOS2_U16 2 /* Direct unsigned 16 bit. */
-#define R_NIOS2_PCREL16 3 /* PC relative 16 bit. */
-#define R_NIOS2_CALL26 4 /* Direct call. */
-#define R_NIOS2_IMM5 5 /* 5 bit constant expression. */
-#define R_NIOS2_CACHE_OPX 6 /* 5 bit expression, shift 22. */
-#define R_NIOS2_IMM6 7 /* 6 bit constant expression. */
-#define R_NIOS2_IMM8 8 /* 8 bit constant expression. */
-#define R_NIOS2_HI16 9 /* High 16 bit. */
-#define R_NIOS2_LO16 10 /* Low 16 bit. */
-#define R_NIOS2_HIADJ16 11 /* High 16 bit, adjusted. */
-#define R_NIOS2_BFD_RELOC_32 12 /* 32 bit symbol value + addend. */
-#define R_NIOS2_BFD_RELOC_16 13 /* 16 bit symbol value + addend. */
-#define R_NIOS2_BFD_RELOC_8 14 /* 8 bit symbol value + addend. */
-#define R_NIOS2_GPREL 15 /* 16 bit GP pointer offset. */
-#define R_NIOS2_GNU_VTINHERIT 16 /* GNU C++ vtable hierarchy. */
-#define R_NIOS2_GNU_VTENTRY 17 /* GNU C++ vtable member usage. */
-#define R_NIOS2_UJMP 18 /* Unconditional branch. */
-#define R_NIOS2_CJMP 19 /* Conditional branch. */
-#define R_NIOS2_CALLR 20 /* Indirect call through register. */
-#define R_NIOS2_ALIGN 21 /* Alignment requirement for
- linker relaxation. */
-#define R_NIOS2_GOT16 22 /* 16 bit GOT entry. */
-#define R_NIOS2_CALL16 23 /* 16 bit GOT entry for function. */
-#define R_NIOS2_GOTOFF_LO 24 /* %lo of offset to GOT pointer. */
-#define R_NIOS2_GOTOFF_HA 25 /* %hiadj of offset to GOT pointer. */
-#define R_NIOS2_PCREL_LO 26 /* %lo of PC relative offset. */
-#define R_NIOS2_PCREL_HA 27 /* %hiadj of PC relative offset. */
-#define R_NIOS2_TLS_GD16 28 /* 16 bit GOT offset for TLS GD. */
-#define R_NIOS2_TLS_LDM16 29 /* 16 bit GOT offset for TLS LDM. */
-#define R_NIOS2_TLS_LDO16 30 /* 16 bit module relative offset. */
-#define R_NIOS2_TLS_IE16 31 /* 16 bit GOT offset for TLS IE. */
-#define R_NIOS2_TLS_LE16 32 /* 16 bit LE TP-relative offset. */
-#define R_NIOS2_TLS_DTPMOD 33 /* Module number. */
-#define R_NIOS2_TLS_DTPREL 34 /* Module-relative offset. */
-#define R_NIOS2_TLS_TPREL 35 /* TP-relative offset. */
-#define R_NIOS2_COPY 36 /* Copy symbol at runtime. */
-#define R_NIOS2_GLOB_DAT 37 /* Create GOT entry. */
-#define R_NIOS2_JUMP_SLOT 38 /* Create PLT entry. */
-#define R_NIOS2_RELATIVE 39 /* Adjust by program base. */
-#define R_NIOS2_GOTOFF 40 /* 16 bit offset to GOT pointer. */
-#define R_NIOS2_CALL26_NOAT 41 /* Direct call in .noat section. */
-#define R_NIOS2_GOT_LO 42 /* %lo() of GOT entry. */
-#define R_NIOS2_GOT_HA 43 /* %hiadj() of GOT entry. */
-#define R_NIOS2_CALL_LO 44 /* %lo() of function GOT entry. */
-#define R_NIOS2_CALL_HA 45 /* %hiadj() of function GOT entry. */
-
-/* TILEPro relocations. */
-#define R_TILEPRO_NONE 0 /* No reloc */
-#define R_TILEPRO_32 1 /* Direct 32 bit */
-#define R_TILEPRO_16 2 /* Direct 16 bit */
-#define R_TILEPRO_8 3 /* Direct 8 bit */
-#define R_TILEPRO_32_PCREL 4 /* PC relative 32 bit */
-#define R_TILEPRO_16_PCREL 5 /* PC relative 16 bit */
-#define R_TILEPRO_8_PCREL 6 /* PC relative 8 bit */
-#define R_TILEPRO_LO16 7 /* Low 16 bit */
-#define R_TILEPRO_HI16 8 /* High 16 bit */
-#define R_TILEPRO_HA16 9 /* High 16 bit, adjusted */
-#define R_TILEPRO_COPY 10 /* Copy relocation */
-#define R_TILEPRO_GLOB_DAT 11 /* Create GOT entry */
-#define R_TILEPRO_JMP_SLOT 12 /* Create PLT entry */
-#define R_TILEPRO_RELATIVE 13 /* Adjust by program base */
-#define R_TILEPRO_BROFF_X1 14 /* X1 pipe branch offset */
-#define R_TILEPRO_JOFFLONG_X1 15 /* X1 pipe jump offset */
-#define R_TILEPRO_JOFFLONG_X1_PLT 16 /* X1 pipe jump offset to PLT */
-#define R_TILEPRO_IMM8_X0 17 /* X0 pipe 8-bit */
-#define R_TILEPRO_IMM8_Y0 18 /* Y0 pipe 8-bit */
-#define R_TILEPRO_IMM8_X1 19 /* X1 pipe 8-bit */
-#define R_TILEPRO_IMM8_Y1 20 /* Y1 pipe 8-bit */
-#define R_TILEPRO_MT_IMM15_X1 21 /* X1 pipe mtspr */
-#define R_TILEPRO_MF_IMM15_X1 22 /* X1 pipe mfspr */
-#define R_TILEPRO_IMM16_X0 23 /* X0 pipe 16-bit */
-#define R_TILEPRO_IMM16_X1 24 /* X1 pipe 16-bit */
-#define R_TILEPRO_IMM16_X0_LO 25 /* X0 pipe low 16-bit */
-#define R_TILEPRO_IMM16_X1_LO 26 /* X1 pipe low 16-bit */
-#define R_TILEPRO_IMM16_X0_HI 27 /* X0 pipe high 16-bit */
-#define R_TILEPRO_IMM16_X1_HI 28 /* X1 pipe high 16-bit */
-#define R_TILEPRO_IMM16_X0_HA 29 /* X0 pipe high 16-bit, adjusted */
-#define R_TILEPRO_IMM16_X1_HA 30 /* X1 pipe high 16-bit, adjusted */
-#define R_TILEPRO_IMM16_X0_PCREL 31 /* X0 pipe PC relative 16 bit */
-#define R_TILEPRO_IMM16_X1_PCREL 32 /* X1 pipe PC relative 16 bit */
-#define R_TILEPRO_IMM16_X0_LO_PCREL 33 /* X0 pipe PC relative low 16 bit */
-#define R_TILEPRO_IMM16_X1_LO_PCREL 34 /* X1 pipe PC relative low 16 bit */
-#define R_TILEPRO_IMM16_X0_HI_PCREL 35 /* X0 pipe PC relative high 16 bit */
-#define R_TILEPRO_IMM16_X1_HI_PCREL 36 /* X1 pipe PC relative high 16 bit */
-#define R_TILEPRO_IMM16_X0_HA_PCREL 37 /* X0 pipe PC relative ha() 16 bit */
-#define R_TILEPRO_IMM16_X1_HA_PCREL 38 /* X1 pipe PC relative ha() 16 bit */
-#define R_TILEPRO_IMM16_X0_GOT 39 /* X0 pipe 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X1_GOT 40 /* X1 pipe 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X0_GOT_LO 41 /* X0 pipe low 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X1_GOT_LO 42 /* X1 pipe low 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X0_GOT_HI 43 /* X0 pipe high 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X1_GOT_HI 44 /* X1 pipe high 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X0_GOT_HA 45 /* X0 pipe ha() 16-bit GOT offset */
-#define R_TILEPRO_IMM16_X1_GOT_HA 46 /* X1 pipe ha() 16-bit GOT offset */
-#define R_TILEPRO_MMSTART_X0 47 /* X0 pipe mm "start" */
-#define R_TILEPRO_MMEND_X0 48 /* X0 pipe mm "end" */
-#define R_TILEPRO_MMSTART_X1 49 /* X1 pipe mm "start" */
-#define R_TILEPRO_MMEND_X1 50 /* X1 pipe mm "end" */
-#define R_TILEPRO_SHAMT_X0 51 /* X0 pipe shift amount */
-#define R_TILEPRO_SHAMT_X1 52 /* X1 pipe shift amount */
-#define R_TILEPRO_SHAMT_Y0 53 /* Y0 pipe shift amount */
-#define R_TILEPRO_SHAMT_Y1 54 /* Y1 pipe shift amount */
-#define R_TILEPRO_DEST_IMM8_X1 55 /* X1 pipe destination 8-bit */
-/* Relocs 56-59 are currently not defined. */
-#define R_TILEPRO_TLS_GD_CALL 60 /* "jal" for TLS GD */
-#define R_TILEPRO_IMM8_X0_TLS_GD_ADD 61 /* X0 pipe "addi" for TLS GD */
-#define R_TILEPRO_IMM8_X1_TLS_GD_ADD 62 /* X1 pipe "addi" for TLS GD */
-#define R_TILEPRO_IMM8_Y0_TLS_GD_ADD 63 /* Y0 pipe "addi" for TLS GD */
-#define R_TILEPRO_IMM8_Y1_TLS_GD_ADD 64 /* Y1 pipe "addi" for TLS GD */
-#define R_TILEPRO_TLS_IE_LOAD 65 /* "lw_tls" for TLS IE */
-#define R_TILEPRO_IMM16_X0_TLS_GD 66 /* X0 pipe 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X1_TLS_GD 67 /* X1 pipe 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X0_TLS_GD_LO 68 /* X0 pipe low 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X1_TLS_GD_LO 69 /* X1 pipe low 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X0_TLS_GD_HI 70 /* X0 pipe high 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X1_TLS_GD_HI 71 /* X1 pipe high 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X0_TLS_GD_HA 72 /* X0 pipe ha() 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X1_TLS_GD_HA 73 /* X1 pipe ha() 16-bit TLS GD offset */
-#define R_TILEPRO_IMM16_X0_TLS_IE 74 /* X0 pipe 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X1_TLS_IE 75 /* X1 pipe 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X0_TLS_IE_LO 76 /* X0 pipe low 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X1_TLS_IE_LO 77 /* X1 pipe low 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X0_TLS_IE_HI 78 /* X0 pipe high 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X1_TLS_IE_HI 79 /* X1 pipe high 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X0_TLS_IE_HA 80 /* X0 pipe ha() 16-bit TLS IE offset */
-#define R_TILEPRO_IMM16_X1_TLS_IE_HA 81 /* X1 pipe ha() 16-bit TLS IE offset */
-#define R_TILEPRO_TLS_DTPMOD32 82 /* ID of module containing symbol */
-#define R_TILEPRO_TLS_DTPOFF32 83 /* Offset in TLS block */
-#define R_TILEPRO_TLS_TPOFF32 84 /* Offset in static TLS block */
-#define R_TILEPRO_IMM16_X0_TLS_LE 85 /* X0 pipe 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X1_TLS_LE 86 /* X1 pipe 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X0_TLS_LE_LO 87 /* X0 pipe low 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X1_TLS_LE_LO 88 /* X1 pipe low 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X0_TLS_LE_HI 89 /* X0 pipe high 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X1_TLS_LE_HI 90 /* X1 pipe high 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X0_TLS_LE_HA 91 /* X0 pipe ha() 16-bit TLS LE offset */
-#define R_TILEPRO_IMM16_X1_TLS_LE_HA 92 /* X1 pipe ha() 16-bit TLS LE offset */
-
-#define R_TILEPRO_GNU_VTINHERIT 128 /* GNU C++ vtable hierarchy */
-#define R_TILEPRO_GNU_VTENTRY 129 /* GNU C++ vtable member usage */
-
-#define R_TILEPRO_NUM 130
-
-
-/* TILE-Gx relocations. */
-#define R_TILEGX_NONE 0 /* No reloc */
-#define R_TILEGX_64 1 /* Direct 64 bit */
-#define R_TILEGX_32 2 /* Direct 32 bit */
-#define R_TILEGX_16 3 /* Direct 16 bit */
-#define R_TILEGX_8 4 /* Direct 8 bit */
-#define R_TILEGX_64_PCREL 5 /* PC relative 64 bit */
-#define R_TILEGX_32_PCREL 6 /* PC relative 32 bit */
-#define R_TILEGX_16_PCREL 7 /* PC relative 16 bit */
-#define R_TILEGX_8_PCREL 8 /* PC relative 8 bit */
-#define R_TILEGX_HW0 9 /* hword 0 16-bit */
-#define R_TILEGX_HW1 10 /* hword 1 16-bit */
-#define R_TILEGX_HW2 11 /* hword 2 16-bit */
-#define R_TILEGX_HW3 12 /* hword 3 16-bit */
-#define R_TILEGX_HW0_LAST 13 /* last hword 0 16-bit */
-#define R_TILEGX_HW1_LAST 14 /* last hword 1 16-bit */
-#define R_TILEGX_HW2_LAST 15 /* last hword 2 16-bit */
-#define R_TILEGX_COPY 16 /* Copy relocation */
-#define R_TILEGX_GLOB_DAT 17 /* Create GOT entry */
-#define R_TILEGX_JMP_SLOT 18 /* Create PLT entry */
-#define R_TILEGX_RELATIVE 19 /* Adjust by program base */
-#define R_TILEGX_BROFF_X1 20 /* X1 pipe branch offset */
-#define R_TILEGX_JUMPOFF_X1 21 /* X1 pipe jump offset */
-#define R_TILEGX_JUMPOFF_X1_PLT 22 /* X1 pipe jump offset to PLT */
-#define R_TILEGX_IMM8_X0 23 /* X0 pipe 8-bit */
-#define R_TILEGX_IMM8_Y0 24 /* Y0 pipe 8-bit */
-#define R_TILEGX_IMM8_X1 25 /* X1 pipe 8-bit */
-#define R_TILEGX_IMM8_Y1 26 /* Y1 pipe 8-bit */
-#define R_TILEGX_DEST_IMM8_X1 27 /* X1 pipe destination 8-bit */
-#define R_TILEGX_MT_IMM14_X1 28 /* X1 pipe mtspr */
-#define R_TILEGX_MF_IMM14_X1 29 /* X1 pipe mfspr */
-#define R_TILEGX_MMSTART_X0 30 /* X0 pipe mm "start" */
-#define R_TILEGX_MMEND_X0 31 /* X0 pipe mm "end" */
-#define R_TILEGX_SHAMT_X0 32 /* X0 pipe shift amount */
-#define R_TILEGX_SHAMT_X1 33 /* X1 pipe shift amount */
-#define R_TILEGX_SHAMT_Y0 34 /* Y0 pipe shift amount */
-#define R_TILEGX_SHAMT_Y1 35 /* Y1 pipe shift amount */
-#define R_TILEGX_IMM16_X0_HW0 36 /* X0 pipe hword 0 */
-#define R_TILEGX_IMM16_X1_HW0 37 /* X1 pipe hword 0 */
-#define R_TILEGX_IMM16_X0_HW1 38 /* X0 pipe hword 1 */
-#define R_TILEGX_IMM16_X1_HW1 39 /* X1 pipe hword 1 */
-#define R_TILEGX_IMM16_X0_HW2 40 /* X0 pipe hword 2 */
-#define R_TILEGX_IMM16_X1_HW2 41 /* X1 pipe hword 2 */
-#define R_TILEGX_IMM16_X0_HW3 42 /* X0 pipe hword 3 */
-#define R_TILEGX_IMM16_X1_HW3 43 /* X1 pipe hword 3 */
-#define R_TILEGX_IMM16_X0_HW0_LAST 44 /* X0 pipe last hword 0 */
-#define R_TILEGX_IMM16_X1_HW0_LAST 45 /* X1 pipe last hword 0 */
-#define R_TILEGX_IMM16_X0_HW1_LAST 46 /* X0 pipe last hword 1 */
-#define R_TILEGX_IMM16_X1_HW1_LAST 47 /* X1 pipe last hword 1 */
-#define R_TILEGX_IMM16_X0_HW2_LAST 48 /* X0 pipe last hword 2 */
-#define R_TILEGX_IMM16_X1_HW2_LAST 49 /* X1 pipe last hword 2 */
-#define R_TILEGX_IMM16_X0_HW0_PCREL 50 /* X0 pipe PC relative hword 0 */
-#define R_TILEGX_IMM16_X1_HW0_PCREL 51 /* X1 pipe PC relative hword 0 */
-#define R_TILEGX_IMM16_X0_HW1_PCREL 52 /* X0 pipe PC relative hword 1 */
-#define R_TILEGX_IMM16_X1_HW1_PCREL 53 /* X1 pipe PC relative hword 1 */
-#define R_TILEGX_IMM16_X0_HW2_PCREL 54 /* X0 pipe PC relative hword 2 */
-#define R_TILEGX_IMM16_X1_HW2_PCREL 55 /* X1 pipe PC relative hword 2 */
-#define R_TILEGX_IMM16_X0_HW3_PCREL 56 /* X0 pipe PC relative hword 3 */
-#define R_TILEGX_IMM16_X1_HW3_PCREL 57 /* X1 pipe PC relative hword 3 */
-#define R_TILEGX_IMM16_X0_HW0_LAST_PCREL 58 /* X0 pipe PC-rel last hword 0 */
-#define R_TILEGX_IMM16_X1_HW0_LAST_PCREL 59 /* X1 pipe PC-rel last hword 0 */
-#define R_TILEGX_IMM16_X0_HW1_LAST_PCREL 60 /* X0 pipe PC-rel last hword 1 */
-#define R_TILEGX_IMM16_X1_HW1_LAST_PCREL 61 /* X1 pipe PC-rel last hword 1 */
-#define R_TILEGX_IMM16_X0_HW2_LAST_PCREL 62 /* X0 pipe PC-rel last hword 2 */
-#define R_TILEGX_IMM16_X1_HW2_LAST_PCREL 63 /* X1 pipe PC-rel last hword 2 */
-#define R_TILEGX_IMM16_X0_HW0_GOT 64 /* X0 pipe hword 0 GOT offset */
-#define R_TILEGX_IMM16_X1_HW0_GOT 65 /* X1 pipe hword 0 GOT offset */
-#define R_TILEGX_IMM16_X0_HW0_PLT_PCREL 66 /* X0 pipe PC-rel PLT hword 0 */
-#define R_TILEGX_IMM16_X1_HW0_PLT_PCREL 67 /* X1 pipe PC-rel PLT hword 0 */
-#define R_TILEGX_IMM16_X0_HW1_PLT_PCREL 68 /* X0 pipe PC-rel PLT hword 1 */
-#define R_TILEGX_IMM16_X1_HW1_PLT_PCREL 69 /* X1 pipe PC-rel PLT hword 1 */
-#define R_TILEGX_IMM16_X0_HW2_PLT_PCREL 70 /* X0 pipe PC-rel PLT hword 2 */
-#define R_TILEGX_IMM16_X1_HW2_PLT_PCREL 71 /* X1 pipe PC-rel PLT hword 2 */
-#define R_TILEGX_IMM16_X0_HW0_LAST_GOT 72 /* X0 pipe last hword 0 GOT offset */
-#define R_TILEGX_IMM16_X1_HW0_LAST_GOT 73 /* X1 pipe last hword 0 GOT offset */
-#define R_TILEGX_IMM16_X0_HW1_LAST_GOT 74 /* X0 pipe last hword 1 GOT offset */
-#define R_TILEGX_IMM16_X1_HW1_LAST_GOT 75 /* X1 pipe last hword 1 GOT offset */
-#define R_TILEGX_IMM16_X0_HW3_PLT_PCREL 76 /* X0 pipe PC-rel PLT hword 3 */
-#define R_TILEGX_IMM16_X1_HW3_PLT_PCREL 77 /* X1 pipe PC-rel PLT hword 3 */
-#define R_TILEGX_IMM16_X0_HW0_TLS_GD 78 /* X0 pipe hword 0 TLS GD offset */
-#define R_TILEGX_IMM16_X1_HW0_TLS_GD 79 /* X1 pipe hword 0 TLS GD offset */
-#define R_TILEGX_IMM16_X0_HW0_TLS_LE 80 /* X0 pipe hword 0 TLS LE offset */
-#define R_TILEGX_IMM16_X1_HW0_TLS_LE 81 /* X1 pipe hword 0 TLS LE offset */
-#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_LE 82 /* X0 pipe last hword 0 LE off */
-#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_LE 83 /* X1 pipe last hword 0 LE off */
-#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_LE 84 /* X0 pipe last hword 1 LE off */
-#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_LE 85 /* X1 pipe last hword 1 LE off */
-#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_GD 86 /* X0 pipe last hword 0 GD off */
-#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_GD 87 /* X1 pipe last hword 0 GD off */
-#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_GD 88 /* X0 pipe last hword 1 GD off */
-#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_GD 89 /* X1 pipe last hword 1 GD off */
-/* Relocs 90-91 are currently not defined. */
-#define R_TILEGX_IMM16_X0_HW0_TLS_IE 92 /* X0 pipe hword 0 TLS IE offset */
-#define R_TILEGX_IMM16_X1_HW0_TLS_IE 93 /* X1 pipe hword 0 TLS IE offset */
-#define R_TILEGX_IMM16_X0_HW0_LAST_PLT_PCREL 94 /* X0 pipe PC-rel PLT last hword 0 */
-#define R_TILEGX_IMM16_X1_HW0_LAST_PLT_PCREL 95 /* X1 pipe PC-rel PLT last hword 0 */
-#define R_TILEGX_IMM16_X0_HW1_LAST_PLT_PCREL 96 /* X0 pipe PC-rel PLT last hword 1 */
-#define R_TILEGX_IMM16_X1_HW1_LAST_PLT_PCREL 97 /* X1 pipe PC-rel PLT last hword 1 */
-#define R_TILEGX_IMM16_X0_HW2_LAST_PLT_PCREL 98 /* X0 pipe PC-rel PLT last hword 2 */
-#define R_TILEGX_IMM16_X1_HW2_LAST_PLT_PCREL 99 /* X1 pipe PC-rel PLT last hword 2 */
-#define R_TILEGX_IMM16_X0_HW0_LAST_TLS_IE 100 /* X0 pipe last hword 0 IE off */
-#define R_TILEGX_IMM16_X1_HW0_LAST_TLS_IE 101 /* X1 pipe last hword 0 IE off */
-#define R_TILEGX_IMM16_X0_HW1_LAST_TLS_IE 102 /* X0 pipe last hword 1 IE off */
-#define R_TILEGX_IMM16_X1_HW1_LAST_TLS_IE 103 /* X1 pipe last hword 1 IE off */
-/* Relocs 104-105 are currently not defined. */
-#define R_TILEGX_TLS_DTPMOD64 106 /* 64-bit ID of symbol's module */
-#define R_TILEGX_TLS_DTPOFF64 107 /* 64-bit offset in TLS block */
-#define R_TILEGX_TLS_TPOFF64 108 /* 64-bit offset in static TLS block */
-#define R_TILEGX_TLS_DTPMOD32 109 /* 32-bit ID of symbol's module */
-#define R_TILEGX_TLS_DTPOFF32 110 /* 32-bit offset in TLS block */
-#define R_TILEGX_TLS_TPOFF32 111 /* 32-bit offset in static TLS block */
-#define R_TILEGX_TLS_GD_CALL 112 /* "jal" for TLS GD */
-#define R_TILEGX_IMM8_X0_TLS_GD_ADD 113 /* X0 pipe "addi" for TLS GD */
-#define R_TILEGX_IMM8_X1_TLS_GD_ADD 114 /* X1 pipe "addi" for TLS GD */
-#define R_TILEGX_IMM8_Y0_TLS_GD_ADD 115 /* Y0 pipe "addi" for TLS GD */
-#define R_TILEGX_IMM8_Y1_TLS_GD_ADD 116 /* Y1 pipe "addi" for TLS GD */
-#define R_TILEGX_TLS_IE_LOAD 117 /* "ld_tls" for TLS IE */
-#define R_TILEGX_IMM8_X0_TLS_ADD 118 /* X0 pipe "addi" for TLS GD/IE */
-#define R_TILEGX_IMM8_X1_TLS_ADD 119 /* X1 pipe "addi" for TLS GD/IE */
-#define R_TILEGX_IMM8_Y0_TLS_ADD 120 /* Y0 pipe "addi" for TLS GD/IE */
-#define R_TILEGX_IMM8_Y1_TLS_ADD 121 /* Y1 pipe "addi" for TLS GD/IE */
-
-#define R_TILEGX_GNU_VTINHERIT 128 /* GNU C++ vtable hierarchy */
-#define R_TILEGX_GNU_VTENTRY 129 /* GNU C++ vtable member usage */
-
-#define R_TILEGX_NUM 130
-
-/* RISC-V ELF Flags */
-#define EF_RISCV_RVC 0x0001
-#define EF_RISCV_FLOAT_ABI 0x0006
-#define EF_RISCV_FLOAT_ABI_SOFT 0x0000
-#define EF_RISCV_FLOAT_ABI_SINGLE 0x0002
-#define EF_RISCV_FLOAT_ABI_DOUBLE 0x0004
-#define EF_RISCV_FLOAT_ABI_QUAD 0x0006
-#define EF_RISCV_RVE 0x0008
-#define EF_RISCV_TSO 0x0010
-
-/* RISC-V relocations. */
-#define R_RISCV_NONE 0
-#define R_RISCV_32 1
-#define R_RISCV_64 2
-#define R_RISCV_RELATIVE 3
-#define R_RISCV_COPY 4
-#define R_RISCV_JUMP_SLOT 5
-#define R_RISCV_TLS_DTPMOD32 6
-#define R_RISCV_TLS_DTPMOD64 7
-#define R_RISCV_TLS_DTPREL32 8
-#define R_RISCV_TLS_DTPREL64 9
-#define R_RISCV_TLS_TPREL32 10
-#define R_RISCV_TLS_TPREL64 11
-#define R_RISCV_BRANCH 16
-#define R_RISCV_JAL 17
-#define R_RISCV_CALL 18
-#define R_RISCV_CALL_PLT 19
-#define R_RISCV_GOT_HI20 20
-#define R_RISCV_TLS_GOT_HI20 21
-#define R_RISCV_TLS_GD_HI20 22
-#define R_RISCV_PCREL_HI20 23
-#define R_RISCV_PCREL_LO12_I 24
-#define R_RISCV_PCREL_LO12_S 25
-#define R_RISCV_HI20 26
-#define R_RISCV_LO12_I 27
-#define R_RISCV_LO12_S 28
-#define R_RISCV_TPREL_HI20 29
-#define R_RISCV_TPREL_LO12_I 30
-#define R_RISCV_TPREL_LO12_S 31
-#define R_RISCV_TPREL_ADD 32
-#define R_RISCV_ADD8 33
-#define R_RISCV_ADD16 34
-#define R_RISCV_ADD32 35
-#define R_RISCV_ADD64 36
-#define R_RISCV_SUB8 37
-#define R_RISCV_SUB16 38
-#define R_RISCV_SUB32 39
-#define R_RISCV_SUB64 40
-#define R_RISCV_GNU_VTINHERIT 41
-#define R_RISCV_GNU_VTENTRY 42
-#define R_RISCV_ALIGN 43
-#define R_RISCV_RVC_BRANCH 44
-#define R_RISCV_RVC_JUMP 45
-#define R_RISCV_RVC_LUI 46
-#define R_RISCV_GPREL_I 47
-#define R_RISCV_GPREL_S 48
-#define R_RISCV_TPREL_I 49
-#define R_RISCV_TPREL_S 50
-#define R_RISCV_RELAX 51
-#define R_RISCV_SUB6 52
-#define R_RISCV_SET6 53
-#define R_RISCV_SET8 54
-#define R_RISCV_SET16 55
-#define R_RISCV_SET32 56
-#define R_RISCV_32_PCREL 57
-#define R_RISCV_IRELATIVE 58
-#define R_RISCV_PLT32 59
-#define R_RISCV_SET_ULEB128 60
-#define R_RISCV_SUB_ULEB128 61
-
-#define R_RISCV_NUM 62
-
-/* RISC-V specific values for the st_other field. */
-#define STO_RISCV_VARIANT_CC 0x80 /* Function uses variant calling
- convention */
-
-/* RISC-V specific values for the sh_type field. */
-#define SHT_RISCV_ATTRIBUTES (SHT_LOPROC + 3)
-
-/* RISC-V specific values for the p_type field. */
-#define PT_RISCV_ATTRIBUTES (PT_LOPROC + 3)
-
-/* RISC-V specific values for the d_tag field. */
-#define DT_RISCV_VARIANT_CC (DT_LOPROC + 1)
-
-/* BPF specific declarations. */
-
-#define R_BPF_NONE 0 /* No reloc */
-#define R_BPF_64_64 1
-#define R_BPF_64_32 10
-
-/* Imagination Meta specific relocations. */
-
-#define R_METAG_HIADDR16 0
-#define R_METAG_LOADDR16 1
-#define R_METAG_ADDR32 2 /* 32bit absolute address */
-#define R_METAG_NONE 3 /* No reloc */
-#define R_METAG_RELBRANCH 4
-#define R_METAG_GETSETOFF 5
-
-/* Backward compatibility */
-#define R_METAG_REG32OP1 6
-#define R_METAG_REG32OP2 7
-#define R_METAG_REG32OP3 8
-#define R_METAG_REG16OP1 9
-#define R_METAG_REG16OP2 10
-#define R_METAG_REG16OP3 11
-#define R_METAG_REG32OP4 12
-
-#define R_METAG_HIOG 13
-#define R_METAG_LOOG 14
-
-#define R_METAG_REL8 15
-#define R_METAG_REL16 16
-
-/* GNU */
-#define R_METAG_GNU_VTINHERIT 30
-#define R_METAG_GNU_VTENTRY 31
-
-/* PIC relocations */
-#define R_METAG_HI16_GOTOFF 32
-#define R_METAG_LO16_GOTOFF 33
-#define R_METAG_GETSET_GOTOFF 34
-#define R_METAG_GETSET_GOT 35
-#define R_METAG_HI16_GOTPC 36
-#define R_METAG_LO16_GOTPC 37
-#define R_METAG_HI16_PLT 38
-#define R_METAG_LO16_PLT 39
-#define R_METAG_RELBRANCH_PLT 40
-#define R_METAG_GOTOFF 41
-#define R_METAG_PLT 42
-#define R_METAG_COPY 43
-#define R_METAG_JMP_SLOT 44
-#define R_METAG_RELATIVE 45
-#define R_METAG_GLOB_DAT 46
-
-/* TLS relocations */
-#define R_METAG_TLS_GD 47
-#define R_METAG_TLS_LDM 48
-#define R_METAG_TLS_LDO_HI16 49
-#define R_METAG_TLS_LDO_LO16 50
-#define R_METAG_TLS_LDO 51
-#define R_METAG_TLS_IE 52
-#define R_METAG_TLS_IENONPIC 53
-#define R_METAG_TLS_IENONPIC_HI16 54
-#define R_METAG_TLS_IENONPIC_LO16 55
-#define R_METAG_TLS_TPOFF 56
-#define R_METAG_TLS_DTPMOD 57
-#define R_METAG_TLS_DTPOFF 58
-#define R_METAG_TLS_LE 59
-#define R_METAG_TLS_LE_HI16 60
-#define R_METAG_TLS_LE_LO16 61
-
-/* NDS32 relocations. */
-#define R_NDS32_NONE 0
-#define R_NDS32_32_RELA 20
-#define R_NDS32_COPY 39
-#define R_NDS32_GLOB_DAT 40
-#define R_NDS32_JMP_SLOT 41
-#define R_NDS32_RELATIVE 42
-#define R_NDS32_TLS_TPOFF 102
-#define R_NDS32_TLS_DESC 119
-
-/* LoongArch ELF Flags */
-#define EF_LARCH_ABI_MODIFIER_MASK 0x07
-#define EF_LARCH_ABI_SOFT_FLOAT 0x01
-#define EF_LARCH_ABI_SINGLE_FLOAT 0x02
-#define EF_LARCH_ABI_DOUBLE_FLOAT 0x03
-#define EF_LARCH_OBJABI_V1 0x40
-
-/* LoongArch specific dynamic relocations */
-#define R_LARCH_NONE 0
-#define R_LARCH_32 1
-#define R_LARCH_64 2
-#define R_LARCH_RELATIVE 3
-#define R_LARCH_COPY 4
-#define R_LARCH_JUMP_SLOT 5
-#define R_LARCH_TLS_DTPMOD32 6
-#define R_LARCH_TLS_DTPMOD64 7
-#define R_LARCH_TLS_DTPREL32 8
-#define R_LARCH_TLS_DTPREL64 9
-#define R_LARCH_TLS_TPREL32 10
-#define R_LARCH_TLS_TPREL64 11
-#define R_LARCH_IRELATIVE 12
-
-/* Reserved for future relocs that the dynamic linker must understand. */
-
-/* used by the static linker for relocating .text. */
-#define R_LARCH_MARK_LA 20
-#define R_LARCH_MARK_PCREL 21
-#define R_LARCH_SOP_PUSH_PCREL 22
-#define R_LARCH_SOP_PUSH_ABSOLUTE 23
-#define R_LARCH_SOP_PUSH_DUP 24
-#define R_LARCH_SOP_PUSH_GPREL 25
-#define R_LARCH_SOP_PUSH_TLS_TPREL 26
-#define R_LARCH_SOP_PUSH_TLS_GOT 27
-#define R_LARCH_SOP_PUSH_TLS_GD 28
-#define R_LARCH_SOP_PUSH_PLT_PCREL 29
-#define R_LARCH_SOP_ASSERT 30
-#define R_LARCH_SOP_NOT 31
-#define R_LARCH_SOP_SUB 32
-#define R_LARCH_SOP_SL 33
-#define R_LARCH_SOP_SR 34
-#define R_LARCH_SOP_ADD 35
-#define R_LARCH_SOP_AND 36
-#define R_LARCH_SOP_IF_ELSE 37
-#define R_LARCH_SOP_POP_32_S_10_5 38
-#define R_LARCH_SOP_POP_32_U_10_12 39
-#define R_LARCH_SOP_POP_32_S_10_12 40
-#define R_LARCH_SOP_POP_32_S_10_16 41
-#define R_LARCH_SOP_POP_32_S_10_16_S2 42
-#define R_LARCH_SOP_POP_32_S_5_20 43
-#define R_LARCH_SOP_POP_32_S_0_5_10_16_S2 44
-#define R_LARCH_SOP_POP_32_S_0_10_10_16_S2 45
-#define R_LARCH_SOP_POP_32_U 46
-
-/* used by the static linker for relocating non .text. */
-#define R_LARCH_ADD8 47
-#define R_LARCH_ADD16 48
-#define R_LARCH_ADD24 49
-#define R_LARCH_ADD32 50
-#define R_LARCH_ADD64 51
-#define R_LARCH_SUB8 52
-#define R_LARCH_SUB16 53
-#define R_LARCH_SUB24 54
-#define R_LARCH_SUB32 55
-#define R_LARCH_SUB64 56
-#define R_LARCH_GNU_VTINHERIT 57
-#define R_LARCH_GNU_VTENTRY 58
-
-/* reserved 59-63 */
-
-#define R_LARCH_B16 64
-#define R_LARCH_B21 65
-#define R_LARCH_B26 66
-#define R_LARCH_ABS_HI20 67
-#define R_LARCH_ABS_LO12 68
-#define R_LARCH_ABS64_LO20 69
-#define R_LARCH_ABS64_HI12 70
-#define R_LARCH_PCALA_HI20 71
-#define R_LARCH_PCALA_LO12 72
-#define R_LARCH_PCALA64_LO20 73
-#define R_LARCH_PCALA64_HI12 74
-#define R_LARCH_GOT_PC_HI20 75
-#define R_LARCH_GOT_PC_LO12 76
-#define R_LARCH_GOT64_PC_LO20 77
-#define R_LARCH_GOT64_PC_HI12 78
-#define R_LARCH_GOT_HI20 79
-#define R_LARCH_GOT_LO12 80
-#define R_LARCH_GOT64_LO20 81
-#define R_LARCH_GOT64_HI12 82
-#define R_LARCH_TLS_LE_HI20 83
-#define R_LARCH_TLS_LE_LO12 84
-#define R_LARCH_TLS_LE64_LO20 85
-#define R_LARCH_TLS_LE64_HI12 86
-#define R_LARCH_TLS_IE_PC_HI20 87
-#define R_LARCH_TLS_IE_PC_LO12 88
-#define R_LARCH_TLS_IE64_PC_LO20 89
-#define R_LARCH_TLS_IE64_PC_HI12 90
-#define R_LARCH_TLS_IE_HI20 91
-#define R_LARCH_TLS_IE_LO12 92
-#define R_LARCH_TLS_IE64_LO20 93
-#define R_LARCH_TLS_IE64_HI12 94
-#define R_LARCH_TLS_LD_PC_HI20 95
-#define R_LARCH_TLS_LD_HI20 96
-#define R_LARCH_TLS_GD_PC_HI20 97
-#define R_LARCH_TLS_GD_HI20 98
-#define R_LARCH_32_PCREL 99
-#define R_LARCH_RELAX 100
-
-/* ARC specific declarations. */
-
-/* Processor specific flags for the Ehdr e_flags field. */
-#define EF_ARC_MACH_MSK 0x000000ff
-#define EF_ARC_OSABI_MSK 0x00000f00
-#define EF_ARC_ALL_MSK (EF_ARC_MACH_MSK | EF_ARC_OSABI_MSK)
-
-/* Processor specific values for the Shdr sh_type field. */
-#define SHT_ARC_ATTRIBUTES (SHT_LOPROC + 1) /* ARC attributes section. */
-
-/* ARCompact/ARCv2 specific relocs. */
-#define R_ARC_NONE 0x0
-#define R_ARC_8 0x1
-#define R_ARC_16 0x2
-#define R_ARC_24 0x3
-#define R_ARC_32 0x4
-
-#define R_ARC_B22_PCREL 0x6
-#define R_ARC_H30 0x7
-#define R_ARC_N8 0x8
-#define R_ARC_N16 0x9
-#define R_ARC_N24 0xA
-#define R_ARC_N32 0xB
-#define R_ARC_SDA 0xC
-#define R_ARC_SECTOFF 0xD
-#define R_ARC_S21H_PCREL 0xE
-#define R_ARC_S21W_PCREL 0xF
-#define R_ARC_S25H_PCREL 0x10
-#define R_ARC_S25W_PCREL 0x11
-#define R_ARC_SDA32 0x12
-#define R_ARC_SDA_LDST 0x13
-#define R_ARC_SDA_LDST1 0x14
-#define R_ARC_SDA_LDST2 0x15
-#define R_ARC_SDA16_LD 0x16
-#define R_ARC_SDA16_LD1 0x17
-#define R_ARC_SDA16_LD2 0x18
-#define R_ARC_S13_PCREL 0x19
-#define R_ARC_W 0x1A
-#define R_ARC_32_ME 0x1B
-#define R_ARC_N32_ME 0x1C
-#define R_ARC_SECTOFF_ME 0x1D
-#define R_ARC_SDA32_ME 0x1E
-#define R_ARC_W_ME 0x1F
-#define R_ARC_H30_ME 0x20
-#define R_ARC_SECTOFF_U8 0x21
-#define R_ARC_SECTOFF_S9 0x22
-#define R_AC_SECTOFF_U8 0x23
-#define R_AC_SECTOFF_U8_1 0x24
-#define R_AC_SECTOFF_U8_2 0x25
-#define R_AC_SECTOFF_S9 0x26
-#define R_AC_SECTOFF_S9_1 0x27
-#define R_AC_SECTOFF_S9_2 0x28
-#define R_ARC_SECTOFF_ME_1 0x29
-#define R_ARC_SECTOFF_ME_2 0x2A
-#define R_ARC_SECTOFF_1 0x2B
-#define R_ARC_SECTOFF_2 0x2C
-#define R_ARC_SDA_12 0x2D
-#define R_ARC_SDA16_ST2 0x30
-#define R_ARC_32_PCREL 0x31
-#define R_ARC_PC32 0x32
-#define R_ARC_GOTPC32 0x33
-#define R_ARC_PLT32 0x34
-#define R_ARC_COPY 0x35
-#define R_ARC_GLOB_DAT 0x36
-#define R_ARC_JMP_SLOT 0x37
-#define R_ARC_RELATIVE 0x38
-#define R_ARC_GOTOFF 0x39
-#define R_ARC_GOTPC 0x3A
-#define R_ARC_GOT32 0x3B
-#define R_ARC_S21W_PCREL_PLT 0x3C
-#define R_ARC_S25H_PCREL_PLT 0x3D
-
-#define R_ARC_JLI_SECTOFF 0x3F
-
-#define R_ARC_TLS_DTPMOD 0x42
-#define R_ARC_TLS_DTPOFF 0x43
-#define R_ARC_TLS_TPOFF 0x44
-#define R_ARC_TLS_GD_GOT 0x45
-#define R_ARC_TLS_GD_LD 0x46
-#define R_ARC_TLS_GD_CALL 0x47
-#define R_ARC_TLS_IE_GOT 0x48
-#define R_ARC_TLS_DTPOFF_S9 0x49
-#define R_ARC_TLS_LE_S9 0x4A
-#define R_ARC_TLS_LE_32 0x4B
-#define R_ARC_S25W_PCREL_PLT 0x4C
-#define R_ARC_S21H_PCREL_PLT 0x4D
-#define R_ARC_NPS_CMEM16 0x4E
-
-/* OpenRISC 1000 specific relocs. */
-#define R_OR1K_NONE 0
-#define R_OR1K_32 1
-#define R_OR1K_16 2
-#define R_OR1K_8 3
-#define R_OR1K_LO_16_IN_INSN 4
-#define R_OR1K_HI_16_IN_INSN 5
-#define R_OR1K_INSN_REL_26 6
-#define R_OR1K_GNU_VTENTRY 7
-#define R_OR1K_GNU_VTINHERIT 8
-#define R_OR1K_32_PCREL 9
-#define R_OR1K_16_PCREL 10
-#define R_OR1K_8_PCREL 11
-#define R_OR1K_GOTPC_HI16 12
-#define R_OR1K_GOTPC_LO16 13
-#define R_OR1K_GOT16 14
-#define R_OR1K_PLT26 15
-#define R_OR1K_GOTOFF_HI16 16
-#define R_OR1K_GOTOFF_LO16 17
-#define R_OR1K_COPY 18
-#define R_OR1K_GLOB_DAT 19
-#define R_OR1K_JMP_SLOT 20
-#define R_OR1K_RELATIVE 21
-#define R_OR1K_TLS_GD_HI16 22
-#define R_OR1K_TLS_GD_LO16 23
-#define R_OR1K_TLS_LDM_HI16 24
-#define R_OR1K_TLS_LDM_LO16 25
-#define R_OR1K_TLS_LDO_HI16 26
-#define R_OR1K_TLS_LDO_LO16 27
-#define R_OR1K_TLS_IE_HI16 28
-#define R_OR1K_TLS_IE_LO16 29
-#define R_OR1K_TLS_LE_HI16 30
-#define R_OR1K_TLS_LE_LO16 31
-#define R_OR1K_TLS_TPOFF 32
-#define R_OR1K_TLS_DTPOFF 33
-#define R_OR1K_TLS_DTPMOD 34
-
-#endif /* elf.h */
diff --git a/lib/libc/glibc/include/alloca.h b/lib/libc/glibc/include/alloca.h
deleted file mode 100644
index c0b8395..0000000
--- a/lib/libc/glibc/include/alloca.h
+++ /dev/null
@@ -1,40 +0,0 @@
-#ifndef _ALLOCA_H
-
-#include
-
-# ifndef _ISOMAC
-
-#include
-
-#undef __alloca
-
-/* Now define the internal interfaces. */
-extern void *__alloca (size_t __size);
-
-#ifdef __GNUC__
-# define __alloca(size) __builtin_alloca (size)
-#endif /* GCC. */
-
-extern int __libc_use_alloca (size_t size) __attribute__ ((const));
-extern int __libc_alloca_cutoff (size_t size) __attribute__ ((const));
-libc_hidden_proto (__libc_alloca_cutoff)
-
-#define __MAX_ALLOCA_CUTOFF 65536
-
-#include
-
-#if defined stackinfo_get_sp && defined stackinfo_sub_sp
-# define alloca_account(size, avar) \
- ({ void *old__ = stackinfo_get_sp (); \
- void *m__ = __alloca (size); \
- avar += stackinfo_sub_sp (old__); \
- m__; })
-#else
-# define alloca_account(size, avar) \
- ({ size_t s__ = (size); \
- avar += s__; \
- __alloca (s__); })
-#endif
-
-# endif /* !_ISOMAC */
-#endif
diff --git a/lib/libc/glibc/include/bits/cpu-set.h b/lib/libc/glibc/include/bits/cpu-set.h
deleted file mode 100644
index 05aa0a8..0000000
--- a/lib/libc/glibc/include/bits/cpu-set.h
+++ /dev/null
@@ -1,9 +0,0 @@
-#ifndef _BITS_CPU_SET_H
-#include
-
-#ifndef _ISOMAC
-int __sched_cpucount (size_t __setsize, const cpu_set_t *__setp);
-libc_hidden_proto (__sched_cpucount)
-#endif
-
-#endif /* _BITS_CPU_SET_H */
diff --git a/lib/libc/glibc/include/bits/endian.h b/lib/libc/glibc/include/bits/endian.h
deleted file mode 100644
index ad614f1..0000000
--- a/lib/libc/glibc/include/bits/endian.h
+++ /dev/null
@@ -1 +0,0 @@
-#include
diff --git a/lib/libc/glibc/include/bits/statx.h b/lib/libc/glibc/include/bits/statx.h
deleted file mode 100644
index 8ec78a4..0000000
--- a/lib/libc/glibc/include/bits/statx.h
+++ /dev/null
@@ -1 +0,0 @@
-#include
diff --git a/lib/libc/glibc/include/bits/stdlib-float.h b/lib/libc/glibc/include/bits/stdlib-float.h
deleted file mode 100644
index 54ab571..0000000
--- a/lib/libc/glibc/include/bits/stdlib-float.h
+++ /dev/null
@@ -1,8 +0,0 @@
-/* No floating-point inline functions in rtld and for the conform tests. */
-#ifdef _ISOMAC
-# include
-#else
-# if !IS_IN (rtld)
-# include
-# endif
-#endif
diff --git a/lib/libc/glibc/include/bits/types.h b/lib/libc/glibc/include/bits/types.h
deleted file mode 100644
index 1c47910..0000000
--- a/lib/libc/glibc/include/bits/types.h
+++ /dev/null
@@ -1 +0,0 @@
-#include
diff --git a/lib/libc/glibc/include/bits/types/__locale_t.h b/lib/libc/glibc/include/bits/types/__locale_t.h
deleted file mode 100644
index 610b819..0000000
--- a/lib/libc/glibc/include/bits/types/__locale_t.h
+++ /dev/null
@@ -1 +0,0 @@
-#include
diff --git a/lib/libc/glibc/include/bits/types/clock_t.h b/lib/libc/glibc/include/bits/types/clock_t.h
deleted file mode 100644
index 4cfe8e7..0000000
--- a/lib/libc/glibc/include/bits/types/clock_t.h
+++ /dev/null
@@ -1 +0,0 @@
-#include