diff --git a/CMakeLists.txt b/CMakeLists.txt index fb4aa15bba782b38c256ad9524fe2d09a5449b16..a7fecfa51cd6bfbcfb48acaf023093f05d2cdafc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,14 +23,18 @@ find_program(GIT_EXE NAMES git) if(GIT_EXE) execute_process( COMMAND ${GIT_EXE} -C ${CMAKE_SOURCE_DIR} name-rev HEAD --tags --name-only --no-undefined --always + RESULT_VARIABLE EXIT_STATUS OUTPUT_VARIABLE ZIG_GIT_REV - OUTPUT_STRIP_TRAILING_WHITESPACE) - if(ZIG_GIT_REV MATCHES "\\^0$") - if(NOT("${ZIG_GIT_REV}" STREQUAL "${ZIG_VERSION}^0")) - message("WARNING: Tag does not match configured Zig version") + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET) + if(EXIT_STATUS EQUAL "0") + if(ZIG_GIT_REV MATCHES "\\^0$") + if(NOT("${ZIG_GIT_REV}" STREQUAL "${ZIG_VERSION}^0")) + message("WARNING: Tag does not match configured Zig version") + endif() + else() + set(ZIG_VERSION "${ZIG_VERSION}+${ZIG_GIT_REV}") endif() - else() - set(ZIG_VERSION "${ZIG_VERSION}+${ZIG_GIT_REV}") endif() endif() message("Configuring zig version ${ZIG_VERSION}") @@ -448,6 +452,7 @@ set(ZIG_SOURCES "${CMAKE_SOURCE_DIR}/src/os.cpp" "${CMAKE_SOURCE_DIR}/src/parser.cpp" "${CMAKE_SOURCE_DIR}/src/range_set.cpp" + "${CMAKE_SOURCE_DIR}/src/stack_report.cpp" "${CMAKE_SOURCE_DIR}/src/target.cpp" "${CMAKE_SOURCE_DIR}/src/tokenizer.cpp" "${CMAKE_SOURCE_DIR}/src/translate_c.cpp" @@ -504,7 +509,7 @@ endif() if(MSVC) set(EXE_CFLAGS "${EXE_CFLAGS}") else() - set(EXE_CFLAGS "${EXE_CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=strict-prototypes -Werror=old-style-definition -Werror=type-limits -Wno-missing-braces") + set(EXE_CFLAGS "${EXE_CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D_GNU_SOURCE -fvisibility-inlines-hidden -fno-exceptions -fno-rtti -Werror=type-limits -Wno-missing-braces") if(MINGW) set(EXE_CFLAGS "${EXE_CFLAGS} -Wno-format") endif() @@ -515,6 +520,9 @@ set(OPTIMIZED_C_FLAGS "-std=c99 -O3") set(EXE_LDFLAGS " ") if(MSVC) set(EXE_LDFLAGS "${EXE_LDFLAGS} /STACK:16777216") + if(NOT "${CMAKE_BUILD_TYPE}" STREQUAL "Release" AND NOT "${CMAKE_BUILD_TYPE}" STREQUAL "MinSizeRel") + set(EXE_LDFLAGS "${EXE_LDFLAGS} /debug:fastlink") + endif() elseif(MINGW) set(EXE_LDFLAGS "${EXE_LDFLAGS} -Wl,--stack,16777216") endif() @@ -586,12 +594,18 @@ if(MSVC) else() set(LIBUSERLAND "${CMAKE_BINARY_DIR}/libuserland.a") endif() +if("${CMAKE_BUILD_TYPE}" STREQUAL "Debug") + set(LIBUSERLAND_RELEASE_MODE "false") +else() + set(LIBUSERLAND_RELEASE_MODE "true") +endif() add_custom_target(zig_build_libuserland ALL COMMAND zig0 build --override-std-dir std --override-lib-dir "${CMAKE_SOURCE_DIR}" libuserland install "-Doutput-dir=${CMAKE_BINARY_DIR}" + "-Drelease=${LIBUSERLAND_RELEASE_MODE}" "-Dlib-files-only" --prefix "${CMAKE_INSTALL_PREFIX}" DEPENDS zig0 diff --git a/build.zig b/build.zig index 45758d4075371d16aff83a288d253d879fb5c347..457314b42a6d77e1bca4ebb01519c700f59832b5 100644 --- a/build.zig +++ b/build.zig @@ -63,7 +63,7 @@ pub fn build(b: *Builder) !void { try configureStage2(b, test_stage2, ctx); try configureStage2(b, exe, ctx); - addLibUserlandStep(b); + addLibUserlandStep(b, mode); const skip_release = b.option(bool, "skip-release", "Main test suite skips release builds") orelse false; const skip_release_small = b.option(bool, "skip-release-small", "Main test suite skips release-small builds") orelse skip_release; @@ -138,12 +138,13 @@ pub fn build(b: *Builder) !void { test_step.dependOn(tests.addCompareOutputTests(b, test_filter, modes)); test_step.dependOn(tests.addStandaloneTests(b, test_filter, modes)); + test_step.dependOn(tests.addStackTraceTests(b, test_filter, modes)); test_step.dependOn(tests.addCliTests(b, test_filter, modes)); - test_step.dependOn(tests.addCompileErrorTests(b, test_filter, modes)); test_step.dependOn(tests.addAssembleAndLinkTests(b, test_filter, modes)); test_step.dependOn(tests.addRuntimeSafetyTests(b, test_filter, modes)); test_step.dependOn(tests.addTranslateCTests(b, test_filter)); test_step.dependOn(tests.addGenHTests(b, test_filter)); + test_step.dependOn(tests.addCompileErrorTests(b, test_filter, modes)); test_step.dependOn(docs_step); } @@ -369,11 +370,15 @@ const Context = struct { llvm: LibraryDep, }; -fn addLibUserlandStep(b: *Builder) void { +fn addLibUserlandStep(b: *Builder, mode: builtin.Mode) void { const artifact = b.addStaticLibrary("userland", "src-self-hosted/stage1.zig"); artifact.disable_gen_h = true; artifact.bundle_compiler_rt = true; artifact.setTarget(builtin.arch, builtin.os, builtin.abi); + artifact.setBuildMode(mode); + if (mode != .Debug) { + artifact.strip = true; + } artifact.linkSystemLibrary("c"); if (builtin.os == .windows) { artifact.linkSystemLibrary("ntdll"); diff --git a/doc/docgen.zig b/doc/docgen.zig index 458b97d2c04c3ce49c9b07e11cce21c55fa5ce29..0ef38dc773ff62f49ddb06f629617f3b66c65d40 100644 --- a/doc/docgen.zig +++ b/doc/docgen.zig @@ -307,7 +307,7 @@ const Node = union(enum) { const Toc = struct { nodes: []Node, toc: []u8, - urls: std.HashMap([]const u8, Token, mem.hash_slice_u8, mem.eql_slice_u8), + urls: std.StringHashMap(Token), }; const Action = enum { @@ -316,11 +316,12 @@ const Action = enum { }; fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { - var urls = std.HashMap([]const u8, Token, mem.hash_slice_u8, mem.eql_slice_u8).init(allocator); + var urls = std.StringHashMap(Token).init(allocator); errdefer urls.deinit(); var header_stack_size: usize = 0; var last_action = Action.Open; + var last_columns: ?u8 = null; var toc_buf = try std.Buffer.initSize(allocator, 0); defer toc_buf.deinit(); @@ -361,7 +362,23 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { _ = try eatToken(tokenizer, Token.Id.Separator); const content_token = try eatToken(tokenizer, Token.Id.TagContent); const content = tokenizer.buffer[content_token.start..content_token.end]; - _ = try eatToken(tokenizer, Token.Id.BracketClose); + var columns: ?u8 = null; + while (true) { + const bracket_tok = tokenizer.next(); + switch (bracket_tok.id) { + .BracketClose => break, + .Separator => continue, + .TagContent => { + const param = tokenizer.buffer[bracket_tok.start..bracket_tok.end]; + if (mem.eql(u8, param, "3col")) { + columns = 3; + } else { + return parseError(tokenizer, bracket_tok, "unrecognized header_open param: {}", param); + } + }, + else => return parseError(tokenizer, bracket_tok, "invalid header_open token"), + } + } header_stack_size += 1; @@ -381,10 +398,15 @@ fn genToc(allocator: *mem.Allocator, tokenizer: *Tokenizer) !Toc { if (last_action == Action.Open) { try toc.writeByte('\n'); try toc.writeByteNTimes(' ', header_stack_size * 4); - try toc.write("
Builtin functions are provided by the compiler and are prefixed with @.
The {#syntax#}comptime{#endsyntax#} keyword on a parameter means that the parameter must be known
@@ -6976,10 +6976,28 @@ export fn @"A function name that is a complete sentence."() void {}
{#header_open|@field#}
{#syntax#}@field(lhs: var, comptime field_name: []const u8) (field){#endsyntax#}
- Preforms field access equivalent to {#syntax#}lhs.field_name{#endsyntax#}, except instead - of the field {#syntax#}"field_name"{#endsyntax#}, it accesses the field named by the string - value of {#syntax#}field_name{#endsyntax#}. +
Performs field access by a compile-time string.
+ {#code_begin|test#} +const std = @import("std"); + +const Point = struct { + x: u32, + y: u32 +}; + +test "field access by string" { + const assert = std.debug.assert; + var p = Point {.x = 0, .y = 0}; + + @field(p, "x") = 4; + @field(p, "y") = @field(p, "x") + 1; + + assert(@field(p, "x") == 4); + assert(@field(p, "y") == 5); +} + {#code_end#} + {#header_close#} {#header_open|@fieldParentPtr#} @@ -7232,6 +7250,9 @@ fn add(a: i32, b: i32) i32 { return a + b; } This function returns an integer type with the given signness and bit count. The maximum bit count for an integer type is {#syntax#}65535{#endsyntax#}. ++ Deprecated. Use {#link|@Type#}. +
{#header_close#} {#header_open|@memberCount#} @@ -7871,6 +7892,57 @@ test "integer truncation" { {#header_close#} + {#header_open|@Type#} +{#syntax#}@Type(comptime info: @import("builtin").TypeInfo) type{#endsyntax#}
+ + This function is the inverse of {#link|@typeInfo#}. It reifies type information + into a {#syntax#}type{#endsyntax#}. +
++ It is available for the following types: +
++ For these types it is a + TODO in the compiler to implement: +
++ For these types, {#syntax#}@Type{#endsyntax#} is not available. + There is an open proposal to allow unions and structs. +
+{#syntax#}@typeId(comptime T: type) @import("builtin").TypeId{#endsyntax#}
diff --git a/lib/libc/glibc/abi.txt b/lib/libc/glibc/abi.txt
index 244596c4e32606698c63b57eb1938603284679aa..c2a19e8c910c10c7759cfbbc641b1d63df311f11 100644
--- a/lib/libc/glibc/abi.txt
+++ b/lib/libc/glibc/abi.txt
@@ -514,6 +514,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+
29
29
@@ -655,6 +656,18 @@ aarch64-linux-gnu aarch64_be-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
@@ -1928,6 +1941,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2048,6 +2062,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2721,6 +2736,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2749,6 +2765,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -2776,6 +2793,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -3002,6 +3021,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -3370,6 +3390,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
37
37
29
+40
38
38
38
@@ -3443,6 +3464,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
29
29
29
+40
29
29
29
@@ -4218,6 +4240,7 @@ s390x-linux-gnu
5
5
5
+
27
27
@@ -4330,12 +4353,18 @@ s390x-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -4356,6 +4385,8 @@ s390x-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -4368,8 +4399,12 @@ s390x-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
5
@@ -5632,6 +5667,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -5752,6 +5788,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -6425,6 +6462,7 @@ s390x-linux-gnu
5
5
5 13
+40
5 13
5 13
5 13
@@ -6453,6 +6491,7 @@ s390x-linux-gnu
5
5
5
+40
24
16
5
@@ -6480,6 +6519,8 @@ s390x-linux-gnu
16
5
5
+40
+40
5
5
5
@@ -6706,6 +6747,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -7074,6 +7116,7 @@ s390x-linux-gnu
37
37
5 16
+40
38
38
38
@@ -7147,6 +7190,7 @@ s390x-linux-gnu
5
5
5
+40
5
5
5
@@ -7922,6 +7966,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+
27
27
@@ -8063,6 +8108,18 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
+
+
+
+
+
+
+
+
+
+
+
+
@@ -9336,6 +9393,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -9456,6 +9514,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10129,6 +10188,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10157,6 +10217,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
24
16
16
@@ -10184,6 +10245,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
+40
16
16
16
@@ -10410,6 +10473,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -10778,6 +10842,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
37
16
+40
38
38
38
@@ -10851,6 +10916,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
16
16
16
+40
16
16
16
@@ -11626,6 +11692,7 @@ sparc-linux-gnu sparcel-linux-gnu
1
0
0
+3
27
27
@@ -11738,12 +11805,18 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -11764,6 +11837,8 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -11776,8 +11851,12 @@ sparc-linux-gnu sparcel-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
0
@@ -13040,6 +13119,7 @@ sparc-linux-gnu sparcel-linux-gnu
1
1
0
+40
0
5
0
@@ -13160,6 +13240,7 @@ sparc-linux-gnu sparcel-linux-gnu
0 3
0
0
+40
0
0
0
@@ -13833,6 +13914,7 @@ sparc-linux-gnu sparcel-linux-gnu
5
0
0 13
+40
0 13
0 13
0 13
@@ -13861,6 +13943,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
24
16
0
@@ -13888,6 +13971,8 @@ sparc-linux-gnu sparcel-linux-gnu
16
1
0
+40
+40
1
1
1
@@ -14114,6 +14199,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
2
0 1
0 1
@@ -14482,6 +14568,7 @@ sparc-linux-gnu sparcel-linux-gnu
37
37
1 16
+40
38
38
38
@@ -14555,6 +14642,7 @@ sparc-linux-gnu sparcel-linux-gnu
0
0
0
+40
0
0
0
@@ -15330,6 +15418,7 @@ sparcv9-linux-gnu
5
5
5
+
27
27
@@ -15471,6 +15560,18 @@ sparcv9-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
@@ -16744,6 +16845,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -16864,6 +16966,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -17537,6 +17640,7 @@ sparcv9-linux-gnu
5
5
5 13
+40
5 13
5 13
5 13
@@ -17565,6 +17669,7 @@ sparcv9-linux-gnu
5
5
5
+40
24
16
5
@@ -17592,6 +17697,8 @@ sparcv9-linux-gnu
16
5
5
+40
+40
5
5
5
@@ -17818,6 +17925,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -18186,6 +18294,7 @@ sparcv9-linux-gnu
37
37
5
+40
38
38
38
@@ -18259,6 +18368,7 @@ sparcv9-linux-gnu
5
5
5
+40
5
5
5
@@ -19034,6 +19144,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
0
0
+
27
27
@@ -19175,6 +19286,18 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
+
+
+
+
+
+
+
+
+
+
+
+
@@ -20448,6 +20571,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
5
0
+40
0
5
0
@@ -20568,6 +20692,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0 5
0
0
+40
0
0
0
@@ -21241,6 +21366,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
5
0
0 13
+40
0 13
0 13
0 13
@@ -21269,6 +21395,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
24
16
0
@@ -21296,6 +21423,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
16
5
0
+40
+40
5
5
5
@@ -21522,6 +21651,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
5
0 5
0 5
@@ -21890,6 +22020,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
37
37
5
+40
38
38
38
@@ -21963,6 +22094,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
0
0
0
+40
0
0
0
@@ -22738,6 +22870,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
0
0
+
27
27
@@ -22879,6 +23012,18 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
+
+
+
+
+
+
+
+
+
+
+
+
@@ -24152,6 +24297,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
5
0
+40
0
5
0
@@ -24272,6 +24418,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0 5
0
0
+40
0
0
0
@@ -24945,6 +25092,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
5
0
0 13
+40
0 13
0 13
0 13
@@ -24973,6 +25121,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
24
16
0
@@ -25000,6 +25149,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
16
5
0
+40
+40
5
5
5
@@ -25226,6 +25377,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
5
0 5
0 5
@@ -25594,6 +25746,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
37
37
5
+40
38
38
38
@@ -25667,6 +25820,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
0
0
0
+40
0
0
0
@@ -26442,6 +26596,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
0
0
+
27
27
@@ -26583,6 +26738,18 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
+
+
+
+
+
+
+
+
+
+
+
+
@@ -27856,6 +28023,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
5
0
+40
0
5
0
@@ -27976,6 +28144,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0 5
0
0
+40
0
0
0
@@ -28649,6 +28818,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
5
0
0 13
+40
0 13
0 13
0 13
@@ -28677,6 +28847,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
24
16
0
@@ -28704,6 +28875,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
16
5
0
+40
+40
5
5
5
@@ -28930,6 +29103,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
5
0 5
0 5
@@ -29298,6 +29472,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
37
5
+40
38
38
38
@@ -29371,6 +29546,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
0
0
0
+40
0
0
0
@@ -30146,6 +30322,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
0
0
+
27
27
@@ -30287,6 +30464,18 @@ mipsel-linux-gnueabi mips-linux-gnueabi
+
+
+
+
+
+
+
+
+
+
+
+
@@ -31560,6 +31749,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
5
0
+40
0
5
0
@@ -31680,6 +31870,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0 5
0
0
+40
0
0
0
@@ -32353,6 +32544,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
5
0
0 13
+40
0 13
0 13
0 13
@@ -32381,6 +32573,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
24
16
0
@@ -32408,6 +32601,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
16
5
0
+40
+40
5
5
5
@@ -32634,6 +32829,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
5
0 5
0 5
@@ -33002,6 +33198,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
37
5
+40
38
38
38
@@ -33075,6 +33272,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
0
0
0
+40
0
0
0
@@ -33850,6 +34048,7 @@ x86_64-linux-gnu
10
10
10
+
27
36
27
@@ -33991,6 +34190,18 @@ x86_64-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
@@ -35264,6 +35475,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -35384,6 +35596,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -36057,6 +36270,7 @@ x86_64-linux-gnu
10
10
10 13
+40
10 13
10 13
10 13
@@ -36085,6 +36299,7 @@ x86_64-linux-gnu
10
10
10
+40
24
16
10
@@ -36112,6 +36327,8 @@ x86_64-linux-gnu
16
10
10
+40
+40
10
10
10
@@ -36338,6 +36555,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -36706,6 +36924,7 @@ x86_64-linux-gnu
37
37
10
+40
38
38
38
@@ -36779,6 +36998,7 @@ x86_64-linux-gnu
10
10
10
+40
10
10
10
@@ -37554,6 +37774,7 @@ x86_64-linux-gnux32
28
28
28
+
28
36
28
@@ -37695,6 +37916,18 @@ x86_64-linux-gnux32
+
+
+
+
+
+
+
+
+
+
+
+
@@ -38968,6 +39201,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39088,6 +39322,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39761,6 +39996,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39789,6 +40025,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -39816,6 +40053,8 @@ x86_64-linux-gnux32
28
28
28
+40
+40
28
28
28
@@ -40042,6 +40281,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -40410,6 +40650,7 @@ x86_64-linux-gnux32
37
37
28
+40
38
38
38
@@ -40483,6 +40724,7 @@ x86_64-linux-gnux32
28
28
28
+40
28
28
28
@@ -41258,6 +41500,7 @@ i386-linux-gnu
1
0
0
+3
27
36
27
@@ -41399,6 +41642,18 @@ i386-linux-gnu
+
+
+
+
+
+
+
+
+
+
+
+
@@ -42672,6 +42927,7 @@ i386-linux-gnu
1
1
0
+40
0
5
0
@@ -42792,6 +43048,7 @@ i386-linux-gnu
0 3
0
0
+40
0
0
0
@@ -43465,6 +43722,7 @@ i386-linux-gnu
5
0
0 13
+40
0 13
0 13
0 13
@@ -43493,6 +43751,7 @@ i386-linux-gnu
0
0
0
+40
24
16
0
@@ -43520,6 +43779,8 @@ i386-linux-gnu
16
1
0
+40
+40
1
1
1
@@ -43746,6 +44007,7 @@ i386-linux-gnu
0
0
0
+40
2
0 1
0 1
@@ -44114,6 +44376,7 @@ i386-linux-gnu
37
37
1
+40
38
38
38
@@ -44187,6 +44450,7 @@ i386-linux-gnu
0
0
0
+40
0
0
0
@@ -44962,6 +45226,7 @@ powerpc64le-linux-gnu
29
29
29
+
29
36
29
@@ -45074,12 +45339,18 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
38
38
38
29
38
+40
+40
+40
+40
29
29
29
@@ -45100,6 +45371,8 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -45112,8 +45385,12 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
+40
+40
29
29
29
@@ -46376,6 +46653,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -46496,6 +46774,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47169,6 +47448,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47197,6 +47477,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47224,6 +47505,8 @@ powerpc64le-linux-gnu
29
29
29
+40
+40
29
29
29
@@ -47450,6 +47733,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -47818,6 +48102,7 @@ powerpc64le-linux-gnu
37
37
29
+40
38
38
38
@@ -47891,6 +48176,7 @@ powerpc64le-linux-gnu
29
29
29
+40
29
29
29
@@ -48666,6 +48952,7 @@ powerpc64-linux-gnu
12
12
12
+
27
27
@@ -48778,12 +49065,18 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -48804,6 +49097,8 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
16
16
@@ -48816,8 +49111,12 @@ powerpc64-linux-gnu
16
16
16
+40
+40
16
16
+40
+40
16
16
12
@@ -50080,6 +50379,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -50200,6 +50500,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -50873,6 +51174,7 @@ powerpc64-linux-gnu
12
12
12 13
+40
12 13
12 13
12 13
@@ -50901,6 +51203,7 @@ powerpc64-linux-gnu
12
12
12
+40
24
16
12
@@ -50928,6 +51231,8 @@ powerpc64-linux-gnu
16
12
12
+40
+40
12
12
12
@@ -51154,6 +51459,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -51522,6 +51828,7 @@ powerpc64-linux-gnu
37
12 16
+40
38
38
38
@@ -51595,6 +51902,7 @@ powerpc64-linux-gnu
12
12
12
+40
12
12
12
@@ -52370,6 +52678,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
1
0
0
+3
27
27
@@ -52482,12 +52791,18 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
38
38
38
16
38
+40
+40
+40
+40
16
16
16
@@ -52508,6 +52823,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
16
16
@@ -52520,8 +52837,12 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
16
16
+40
+40
16
16
+40
+40
16
16
0
@@ -53784,6 +54105,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
1
1
0
+40
0
5
0
@@ -53904,6 +54226,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0 3
0
0
+40
0
0
0
@@ -54577,6 +54900,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5
0
0 13
+40
0 13
0 13
0 13
@@ -54605,6 +54929,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
24
16
0
@@ -54632,6 +54957,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
16
1
0
+40
+40
1
1
1
@@ -54858,6 +55185,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
2
0 1
0 1
@@ -55226,6 +55554,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
37
1 16
+40
38
38
38
@@ -55299,6 +55628,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
0
0
0
+40
0
0
0
diff --git a/lib/libc/glibc/fns.txt b/lib/libc/glibc/fns.txt
index 566f6f9aeecc49c34925e68cfdd6b7c896be9415..028892f3ea7a9e0098c461c725cb383a22bf4eee 100644
--- a/lib/libc/glibc/fns.txt
+++ b/lib/libc/glibc/fns.txt
@@ -513,6 +513,7 @@ __libc_realloc c
__libc_sa_len c
__libc_start_main c
__libc_valloc c
+__libpthread_version_placeholder pthread
__log10_finite m
__log10f128_finite m
__log10f_finite m
@@ -625,12 +626,18 @@ __nldbl___vswprintf_chk c
__nldbl___vsyslog_chk c
__nldbl___vwprintf_chk c
__nldbl___wprintf_chk c
+__nldbl_argp_error c
+__nldbl_argp_failure c
__nldbl_asprintf c
__nldbl_daddl m
__nldbl_ddivl m
__nldbl_dmull m
__nldbl_dprintf c
__nldbl_dsubl m
+__nldbl_err c
+__nldbl_error c
+__nldbl_error_at_line c
+__nldbl_errx c
__nldbl_fprintf c
__nldbl_fscanf c
__nldbl_fwprintf c
@@ -651,6 +658,8 @@ __nldbl_swscanf c
__nldbl_syslog c
__nldbl_vasprintf c
__nldbl_vdprintf c
+__nldbl_verr c
+__nldbl_verrx c
__nldbl_vfprintf c
__nldbl_vfscanf c
__nldbl_vfwprintf c
@@ -663,8 +672,12 @@ __nldbl_vsscanf c
__nldbl_vswprintf c
__nldbl_vswscanf c
__nldbl_vsyslog c
+__nldbl_vwarn c
+__nldbl_vwarnx c
__nldbl_vwprintf c
__nldbl_vwscanf c
+__nldbl_warn c
+__nldbl_warnx c
__nldbl_wprintf c
__nldbl_wscanf c
__nss_configure_lookup c
@@ -1927,6 +1940,7 @@ getdate c
getdate_err c
getdate_r c
getdelim c
+getdents64 c
getdirentries c
getdirentries64 c
getdomainname c
@@ -2047,6 +2061,7 @@ getspnam c
getspnam_r c
getsubopt c
gettext c
+gettid c
gettimeofday c
getttyent c
getttynam c
@@ -2720,6 +2735,7 @@ pthread_barrierattr_init pthread
pthread_barrierattr_setpshared pthread
pthread_cancel pthread
pthread_cond_broadcast c
+pthread_cond_clockwait pthread
pthread_cond_destroy c
pthread_cond_init c
pthread_cond_signal c
@@ -2748,6 +2764,7 @@ pthread_key_create pthread
pthread_key_delete pthread
pthread_kill pthread
pthread_kill_other_threads_np pthread
+pthread_mutex_clocklock pthread
pthread_mutex_consistent pthread
pthread_mutex_consistent_np pthread
pthread_mutex_destroy c
@@ -2775,6 +2792,8 @@ pthread_mutexattr_setrobust pthread
pthread_mutexattr_setrobust_np pthread
pthread_mutexattr_settype pthread
pthread_once pthread
+pthread_rwlock_clockrdlock pthread
+pthread_rwlock_clockwrlock pthread
pthread_rwlock_destroy pthread
pthread_rwlock_init pthread
pthread_rwlock_rdlock pthread
@@ -3001,6 +3020,7 @@ seed48 c
seed48_r c
seekdir c
select c
+sem_clockwait pthread
sem_close pthread
sem_destroy pthread
sem_getvalue pthread
@@ -3369,6 +3389,7 @@ tgammaf32x m
tgammaf64 m
tgammaf64x m
tgammal m
+tgkill c
thrd_create pthread
thrd_current c
thrd_detach pthread
@@ -3442,6 +3463,7 @@ ttyname c
ttyname_r c
ttyslot c
twalk c
+twalk_r c
tzname c
tzset c
ualarm c
diff --git a/lib/libc/glibc/vers.txt b/lib/libc/glibc/vers.txt
index bffe5b890af9c5ec4ad0aad94b692e8d01ac9c63..a81ba864c45c947a7da6d44390580e4b68852f94 100644
--- a/lib/libc/glibc/vers.txt
+++ b/lib/libc/glibc/vers.txt
@@ -38,3 +38,4 @@ GLIBC_2.26
GLIBC_2.27
GLIBC_2.28
GLIBC_2.29
+GLIBC_2.30
diff --git a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
index bdeaa1e1d48c751b7526f2aa9022a9c1de46a441..629784d923f10be1739a787a4f7ebcc58b864536 100644
--- a/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/aarch64-linux-gnu/bits/hwcap.h
@@ -50,4 +50,7 @@
#define HWCAP_USCAT (1 << 25)
#define HWCAP_ILRCPC (1 << 26)
#define HWCAP_FLAGM (1 << 27)
-#define HWCAP_SSBS (1 << 28)
\ No newline at end of file
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31)
\ No newline at end of file
diff --git a/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h b/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
index 9a016fc113c547b20901b62c980e643203ea104a..342cde4c989c7bd3ab06cbee253345bc1e906016 100644
--- a/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
+++ b/lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h
@@ -13,15 +13,9 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h b/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
index bdeaa1e1d48c751b7526f2aa9022a9c1de46a441..629784d923f10be1739a787a4f7ebcc58b864536 100644
--- a/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
+++ b/lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h
@@ -50,4 +50,7 @@
#define HWCAP_USCAT (1 << 25)
#define HWCAP_ILRCPC (1 << 26)
#define HWCAP_FLAGM (1 << 27)
-#define HWCAP_SSBS (1 << 28)
\ No newline at end of file
+#define HWCAP_SSBS (1 << 28)
+#define HWCAP_SB (1 << 29)
+#define HWCAP_PACA (1 << 30)
+#define HWCAP_PACG (1UL << 31)
\ No newline at end of file
diff --git a/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h b/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
index 9a016fc113c547b20901b62c980e643203ea104a..342cde4c989c7bd3ab06cbee253345bc1e906016 100644
--- a/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
+++ b/lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h
@@ -13,15 +13,9 @@
#define __stub___compat_query_module
#define __stub___compat_uselib
#define __stub_chflags
-#define __stub_fattach
#define __stub_fchflags
-#define __stub_fdetach
-#define __stub_getmsg
-#define __stub_getpmsg
#define __stub_gtty
#define __stub_lchmod
-#define __stub_putmsg
-#define __stub_putpmsg
#define __stub_revoke
#define __stub_setlogin
#define __stub_sigreturn
diff --git a/lib/libc/include/generic-glibc/bits/dirent_ext.h b/lib/libc/include/generic-glibc/bits/dirent_ext.h
new file mode 100644
index 0000000000000000000000000000000000000000..fd2a6ebfde6eb109d24bd4c3e17d08321343bc46
--- /dev/null
+++ b/lib/libc/include/generic-glibc/bits/dirent_ext.h
@@ -0,0 +1,33 @@
+/* System-specific extensions of