authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-31 15:49:44-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-08-31 15:49:44-07:00
logc354f074fa91d3d1672469ba4bbc49a1730e1d01
treea48c93c1d19c38ec49d5f3b6412d265a58e4f0b5
parent4971400bdcc810766da15c63e3e57a59e49499ca
parent26140678a5c72604f2baac3cb9d1e5f7b37b6b8d

Merge remote-tracking branch 'origin/master' into llvm11


340 files changed, 11140 insertions(+), 5135 deletions(-)

README.md+2-1
...@@ -17,7 +17,8 @@ A general-purpose programming language and toolchain for maintaining...@@ -17,7 +17,8 @@ A general-purpose programming language and toolchain for maintaining
17[![Build Status](https://dev.azure.com/ziglang/zig/_apis/build/status/ziglang.zig?branchName=master)](https://dev.azure.com/ziglang/zig/_build/latest?definitionId=1&branchName=master)17[![Build Status](https://dev.azure.com/ziglang/zig/_apis/build/status/ziglang.zig?branchName=master)](https://dev.azure.com/ziglang/zig/_build/latest?definitionId=1&branchName=master)
1818
19Note that you can19Note that you can
20[download a binary of master branch](https://ziglang.org/download/#release-master).20[download a binary of master branch](https://ziglang.org/download/#release-master) or
21[install Zig from a package manager](https://github.com/ziglang/zig/wiki/Install-Zig-from-a-Package-Manager).
2122
22### Stage 1: Build Zig from C++ Source Code23### Stage 1: Build Zig from C++ Source Code
2324
build.zig+6-1
...@@ -49,6 +49,7 @@ pub fn build(b: *Builder) !void {...@@ -49,6 +49,7 @@ pub fn build(b: *Builder) !void {
49 const skip_release_safe = b.option(bool, "skip-release-safe", "Main test suite skips release-safe builds") orelse skip_release;49 const skip_release_safe = b.option(bool, "skip-release-safe", "Main test suite skips release-safe builds") orelse skip_release;
50 const skip_non_native = b.option(bool, "skip-non-native", "Main test suite skips non-native builds") orelse false;50 const skip_non_native = b.option(bool, "skip-non-native", "Main test suite skips non-native builds") orelse false;
51 const skip_libc = b.option(bool, "skip-libc", "Main test suite skips tests that link libc") orelse false;51 const skip_libc = b.option(bool, "skip-libc", "Main test suite skips tests that link libc") orelse false;
52 const skip_compile_errors = b.option(bool, "skip-compile-errors", "Main test suite skips compile error tests") orelse false;
5253
53 const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false;54 const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false;
54 const enable_llvm = b.option(bool, "enable-llvm", "Build self-hosted compiler with LLVM backend enabled") orelse false;55 const enable_llvm = b.option(bool, "enable-llvm", "Build self-hosted compiler with LLVM backend enabled") orelse false;
...@@ -83,6 +84,7 @@ pub fn build(b: *Builder) !void {...@@ -83,6 +84,7 @@ pub fn build(b: *Builder) !void {
83 }84 }
8485
85 const log_scopes = b.option([]const []const u8, "log", "Which log scopes to enable") orelse &[0][]const u8{};86 const log_scopes = b.option([]const []const u8, "log", "Which log scopes to enable") orelse &[0][]const u8{};
87 const zir_dumps = b.option([]const []const u8, "dump-zir", "Which functions to dump ZIR for before codegen") orelse &[0][]const u8{};
8688
87 const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");89 const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");
88 const version = if (opt_version_string) |version| version else v: {90 const version = if (opt_version_string) |version| version else v: {
...@@ -103,6 +105,7 @@ pub fn build(b: *Builder) !void {...@@ -103,6 +105,7 @@ pub fn build(b: *Builder) !void {
103 exe.addBuildOption([]const u8, "version", version);105 exe.addBuildOption([]const u8, "version", version);
104106
105 exe.addBuildOption([]const []const u8, "log_scopes", log_scopes);107 exe.addBuildOption([]const []const u8, "log_scopes", log_scopes);
108 exe.addBuildOption([]const []const u8, "zir_dumps", zir_dumps);
106 exe.addBuildOption(bool, "enable_tracy", tracy != null);109 exe.addBuildOption(bool, "enable_tracy", tracy != null);
107 if (tracy) |tracy_path| {110 if (tracy) |tracy_path| {
108 const client_cpp = fs.path.join(111 const client_cpp = fs.path.join(
...@@ -182,7 +185,9 @@ pub fn build(b: *Builder) !void {...@@ -182,7 +185,9 @@ pub fn build(b: *Builder) !void {
182 test_step.dependOn(tests.addRunTranslatedCTests(b, test_filter));185 test_step.dependOn(tests.addRunTranslatedCTests(b, test_filter));
183 // tests for this feature are disabled until we have the self-hosted compiler available186 // tests for this feature are disabled until we have the self-hosted compiler available
184 // test_step.dependOn(tests.addGenHTests(b, test_filter));187 // test_step.dependOn(tests.addGenHTests(b, test_filter));
185 test_step.dependOn(tests.addCompileErrorTests(b, test_filter, modes));188 if (!skip_compile_errors) {
189 test_step.dependOn(tests.addCompileErrorTests(b, test_filter, modes));
190 }
186 test_step.dependOn(docs_step);191 test_step.dependOn(docs_step);
187}192}
188193
ci/azure/windows_msvc_script.bat+1-1
...@@ -24,7 +24,7 @@ cd %ZIGBUILDDIR%...@@ -24,7 +24,7 @@ cd %ZIGBUILDDIR%
24cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release || exit /b24cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release || exit /b
25msbuild /maxcpucount /p:Configuration=Release INSTALL.vcxproj || exit /b25msbuild /maxcpucount /p:Configuration=Release INSTALL.vcxproj || exit /b
2626
27"%ZIGINSTALLDIR%\bin\zig.exe" build test || exit /b27"%ZIGINSTALLDIR%\bin\zig.exe" build test -Dskip-compile-errors || exit /b
2828
29set "PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem"29set "PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem"
30SET "MSYSTEM=MINGW64"30SET "MSYSTEM=MINGW64"
doc/langref.html.in+581-9
...@@ -10308,14 +10308,586 @@ fn readU32Be() u32 {}...@@ -10308,14 +10308,586 @@ fn readU32Be() u32 {}
10308 {#header_close#}10308 {#header_close#}
1030910309
10310 {#header_open|Keyword Reference#}10310 {#header_open|Keyword Reference#}
10311 <p>10311 <div class="table-wrapper">
10312 TODO the rest of the keywords. Most of these can just be links to the relevant section.10312 <table>
10313 </p>10313 <tr>
10314 {#header_open|Keyword: pub#}10314 <th>
10315 <p>The {#syntax#}pub{#endsyntax#} in front of a top level declaration makes the10315 Keyword
10316 declaration available to reference from a different file than the one it is declared in.</p>10316 </th>
10317 {#see_also|@import#}10317 <th>
10318 {#header_close#}10318 Description
10319 </th>
10320 </tr>
10321 <tr>
10322 <td>
10323 <pre>{#syntax#}align{#endsyntax#}</pre>
10324 </td>
10325 <td>
10326 {#syntax#}align{#endsyntax#} can be used to specify the alignment of a pointer.
10327 It can also be used after a variable or function declaration to specify the alignment of pointers to that variable or function.
10328 <ul>
10329 <li>See also {#link|Alignment#}</li>
10330 </ul>
10331 </td>
10332 </tr>
10333 <tr>
10334 <td>
10335 <pre>{#syntax#}allowzero{#endsyntax#}</pre>
10336 </td>
10337 <td>
10338 The pointer attribute {#syntax#}allowzero{#endsyntax#} allows a pointer to have address zero.
10339 <ul>
10340 <li>See also {#link|allowzero#}</li>
10341 </ul>
10342 </td>
10343 </tr>
10344 <tr>
10345 <td>
10346 <pre>{#syntax#}and{#endsyntax#}</pre>
10347 </td>
10348 <td>
10349 The boolean operator {#syntax#}and{#endsyntax#}.
10350 <ul>
10351 <li>See also {#link|Operators#}</li>
10352 </ul>
10353 </td>
10354 </tr>
10355 <tr>
10356 <td>
10357 <pre>{#syntax#}anyframe{#endsyntax#}</pre>
10358 </td>
10359 <td>
10360 {#syntax#}anyframe{#endsyntax#} can be used as a type for variables which hold pointers to function frames.
10361 <ul>
10362 <li>See also {#link|Async Functions#}</li>
10363 </ul>
10364 </td>
10365 </tr>
10366 <tr>
10367 <td>
10368 <pre>{#syntax#}anytype{#endsyntax#}</pre>
10369 </td>
10370 <td>
10371 Function parameters and struct fields can be declared with {#syntax#}anytype{#endsyntax#} in place of the type.
10372 The type will be inferred where the function is called or the struct is instantiated.
10373 <ul>
10374 <li>See also {#link|Function Parameter Type Inference#}</li>
10375 </ul>
10376 </td>
10377 </tr>
10378 <tr>
10379 <td>
10380 <pre>{#syntax#}asm{#endsyntax#}</pre>
10381 </td>
10382 <td>
10383 {#syntax#}asm{#endsyntax#} begins an inline assembly expression. This allows for directly controlling the machine code generated on compilation.
10384 <ul>
10385 <li>See also {#link|Assembly#}</li>
10386 </ul>
10387 </td>
10388 </tr>
10389 <tr>
10390 <td>
10391 <pre>{#syntax#}async{#endsyntax#}</pre>
10392 </td>
10393 <td>
10394 {#syntax#}async{#endsyntax#} can be used before a function call to get a pointer to the function's frame when it suspends.
10395 <ul>
10396 <li>See also {#link|Async Functions#}</li>
10397 </ul>
10398 </td>
10399 </tr>
10400 <tr>
10401 <td>
10402 <pre>{#syntax#}await{#endsyntax#}</pre>
10403 </td>
10404 <td>
10405 {#syntax#}await{#endsyntax#} can be used to suspend the current function until the frame provided after the {#syntax#}await{#endsyntax#} completes.
10406 {#syntax#}await{#endsyntax#} copies the value returned from the target function's frame to the caller.
10407 <ul>
10408 <li>See also {#link|Async Functions#}</li>
10409 </ul>
10410 </td>
10411 </tr>
10412 <tr>
10413 <td>
10414 <pre>{#syntax#}break{#endsyntax#}</pre>
10415 </td>
10416 <td>
10417 {#syntax#}break{#endsyntax#} can be used with a block label to return a value from the block.
10418 It can also be used to exit a loop before iteration completes naturally.
10419 <ul>
10420 <li>See also {#link|blocks#}, {#link|while#}, {#link|for#}</li>
10421 </ul>
10422 </td>
10423 </tr>
10424 <tr>
10425 <td>
10426 <pre>{#syntax#}catch{#endsyntax#}</pre>
10427 </td>
10428 <td>
10429 {#syntax#}catch{#endsyntax#} can be used to evaluate an expression if the expression before it evaluates to an error.
10430 The expression after the {#syntax#}catch{#endsyntax#} can optionally capture the error value.
10431 <ul>
10432 <li>See also {#link|catch#}, {#link|Operators#}</li>
10433 </ul>
10434 </td>
10435 </tr>
10436 <tr>
10437 <td>
10438 <pre>{#syntax#}comptime{#endsyntax#}</pre>
10439 </td>
10440 <td>
10441 {#syntax#}comptime{#endsyntax#} before a declaration can be used to label variables or function parameters as known at compile time.
10442 It can also be used to guarantee an expression is run at compile time.
10443 <ul>
10444 <li>See also {#link|comptime#}</li>
10445 </ul>
10446 </td>
10447 </tr>
10448 <tr>
10449 <td>
10450 <pre>{#syntax#}const{#endsyntax#}</pre>
10451 </td>
10452 <td>
10453 {#syntax#}const{#endsyntax#} declares a variable that can not be modified.
10454 Used as a pointer attribute, it denotes the value referenced by the pointer cannot be modified.
10455 <ul>
10456 <li>See also {#link|Variables#}</li>
10457 </ul>
10458 </td>
10459 </tr>
10460 <tr>
10461 <td>
10462 <pre>{#syntax#}continue{#endsyntax#}</pre>
10463 </td>
10464 <td>
10465 {#syntax#}continue{#endsyntax#} can be used in a loop to jump back to the beginning of the loop.
10466 <ul>
10467 <li>See also {#link|while#}, {#link|for#}</li>
10468 </ul>
10469 </td>
10470 </tr>
10471 <tr>
10472 <td>
10473 <pre>{#syntax#}defer{#endsyntax#}</pre>
10474 </td>
10475 <td>
10476 {#syntax#}defer{#endsyntax#} will execute an expression when control flow leaves the current block.
10477 <ul>
10478 <li>See also {#link|defer#}</li>
10479 </ul>
10480 </td>
10481 </tr>
10482 <tr>
10483 <td>
10484 <pre>{#syntax#}else{#endsyntax#}</pre>
10485 </td>
10486 <td>
10487 {#syntax#}else{#endsyntax#} can be used to provide an alternate branch for {#syntax#}if{#endsyntax#}, {#syntax#}switch{#endsyntax#},
10488 {#syntax#}while{#endsyntax#}, and {#syntax#}for{#endsyntax#} expressions.
10489 <ul>
10490 <li>If used after an if expression, the else branch will be executed if the test value returns false, null, or an error.</li>
10491 <li>If used within a switch expression, the else branch will be executed if the test value matches no other cases.</li>
10492 <li>If used after a loop expression, the else branch will be executed if the loop finishes without breaking.</li>
10493 <li>See also {#link|if#}, {#link|switch#}, {#link|while#}, {#link|for#}</li>
10494 </ul>
10495 </td>
10496 </tr>
10497 <tr>
10498 <td>
10499 <pre>{#syntax#}enum{#endsyntax#}</pre>
10500 </td>
10501 <td>
10502 {#syntax#}enum{#endsyntax#} defines an enum type.
10503 <ul>
10504 <li>See also {#link|enum#}</li>
10505 </ul>
10506 </td>
10507 </tr>
10508 <tr>
10509 <td>
10510 <pre>{#syntax#}errdefer{#endsyntax#}</pre>
10511 </td>
10512 <td>
10513 {#syntax#}errdefer{#endsyntax#} will execute an expression when control flow leaves the current block if the function returns an error.
10514 <ul>
10515 <li>See also {#link|errdefer#}</li>
10516 </ul>
10517 </td>
10518 </tr>
10519 <tr>
10520 <td>
10521 <pre>{#syntax#}error{#endsyntax#}</pre>
10522 </td>
10523 <td>
10524 {#syntax#}error{#endsyntax#} defines an error type.
10525 <ul>
10526 <li>See also {#link|Errors#}</li>
10527 </ul>
10528 </td>
10529 </tr>
10530 <tr>
10531 <td>
10532 <pre>{#syntax#}export{#endsyntax#}</pre>
10533 </td>
10534 <td>
10535 {#syntax#}export{#endsyntax#} makes a function or variable externally visible in the generated object file.
10536 Exported functions default to the C calling convention.
10537 <ul>
10538 <li>See also {#link|Functions#}</li>
10539 </ul>
10540 </td>
10541 </tr>
10542 <tr>
10543 <td>
10544 <pre>{#syntax#}extern{#endsyntax#}</pre>
10545 </td>
10546 <td>
10547 {#syntax#}extern{#endsyntax#} can be used to declare a function or variable that will be resolved at link time, when linking statically
10548 or at runtime, when linking dynamically.
10549 <ul>
10550 <li>See also {#link|Functions#}</li>
10551 </ul>
10552 </td>
10553 </tr>
10554 <tr>
10555 <td>
10556 <pre>{#syntax#}false{#endsyntax#}</pre>
10557 </td>
10558 <td>
10559 The boolean value {#syntax#}false{#endsyntax#}.
10560 <ul>
10561 <li>See also {#link|Primitive Values#}</li>
10562 </ul>
10563 </td>
10564 </tr>
10565 <tr>
10566 <td>
10567 <pre>{#syntax#}fn{#endsyntax#}</pre>
10568 </td>
10569 <td>
10570 {#syntax#}fn{#endsyntax#} declares a function.
10571 <ul>
10572 <li>See also {#link|Functions#}</li>
10573 </ul>
10574 </td>
10575 </tr>
10576 <tr>
10577 <td>
10578 <pre>{#syntax#}for{#endsyntax#}</pre>
10579 </td>
10580 <td>
10581 A {#syntax#}for{#endsyntax#} expression can be used to iterate over the elements of a slice, array, or tuple.
10582 <ul>
10583 <li>See also {#link|for#}</li>
10584 </ul>
10585 </td>
10586 </tr>
10587 <tr>
10588 <td>
10589 <pre>{#syntax#}if{#endsyntax#}</pre>
10590 </td>
10591 <td>
10592 An {#syntax#}if{#endsyntax#} expression can test boolean expressions, optional values, or error unions.
10593 For optional values or error unions, the if expression can capture the unwrapped value.
10594 <ul>
10595 <li>See also {#link|if#}</li>
10596 </ul>
10597 </td>
10598 </tr>
10599 <tr>
10600 <td>
10601 <pre>{#syntax#}inline{#endsyntax#}</pre>
10602 </td>
10603 <td>
10604 {#syntax#}inline{#endsyntax#} can be used to label a loop expression such that it will be unrolled at compile time.
10605 It can also be used to force a function to be inlined at all call sites.
10606 <ul>
10607 <li>See also {#link|inline while#}, {#link|inline for#}, {#link|Functions#}</li>
10608 </ul>
10609 </td>
10610 </tr>
10611 <tr>
10612 <td>
10613 <pre>{#syntax#}noalias{#endsyntax#}</pre>
10614 </td>
10615 <td>
10616 The {#syntax#}noalias{#endsyntax#} keyword.
10617 <ul>
10618 <li>TODO add documentation for noalias</li>
10619 </ul>
10620 </td>
10621 </tr>
10622 <tr>
10623 <td>
10624 <pre>{#syntax#}nosuspend{#endsyntax#}</pre>
10625 </td>
10626 <td>
10627 The {#syntax#}nosuspend{#endsyntax#} keyword.
10628 <ul>
10629 <li>TODO add documentation for nosuspend</li>
10630 </ul>
10631 </td>
10632 </tr>
10633 <tr>
10634 <td>
10635 <pre>{#syntax#}null{#endsyntax#}</pre>
10636 </td>
10637 <td>
10638 The optional value {#syntax#}null{#endsyntax#}.
10639 <ul>
10640 <li>See also {#link|null#}</li>
10641 </ul>
10642 </td>
10643 </tr>
10644 <tr>
10645 <td>
10646 <pre>{#syntax#}or{#endsyntax#}</pre>
10647 </td>
10648 <td>
10649 The boolean operator {#syntax#}or{#endsyntax#}.
10650 <ul>
10651 <li>See also {#link|Operators#}</li>
10652 </ul>
10653 </td>
10654 </tr>
10655 <tr>
10656 <td>
10657 <pre>{#syntax#}orelse{#endsyntax#}</pre>
10658 </td>
10659 <td>
10660 {#syntax#}orelse{#endsyntax#} can be used to evaluate an expression if the expression before it evaluates to null.
10661 <ul>
10662 <li>See also {#link|Optionals#}, {#link|Operators#}</li>
10663 </ul>
10664 </td>
10665 </tr>
10666 <tr>
10667 <td>
10668 <pre>{#syntax#}packed{#endsyntax#}</pre>
10669 </td>
10670 <td>
10671 The {#syntax#}packed{#endsyntax#} keyword before a struct definition changes the struct's in-memory layout
10672 to the guaranteed {#syntax#}packed{#endsyntax#} layout.
10673 <ul>
10674 <li>See also {#link|packed struct#}</li>
10675 </ul>
10676 </td>
10677 </tr>
10678 <tr>
10679 <td>
10680 <pre>{#syntax#}pub{#endsyntax#}</pre>
10681 </td>
10682 <td>
10683 The {#syntax#}pub{#endsyntax#} in front of a top level declaration makes the declaration available
10684 to reference from a different file than the one it is declared in.
10685 <ul>
10686 <li>See also {#link|import#}</li>
10687 </ul>
10688 </td>
10689 </tr>
10690 <tr>
10691 <td>
10692 <pre>{#syntax#}resume{#endsyntax#}</pre>
10693 </td>
10694 <td>
10695 {#syntax#}resume{#endsyntax#} will continue execution of a function frame after the point the function was suspended.
10696 <ul>
10697 <li>See also {#link|Suspend and Resume#}</li>
10698 </ul>
10699 </td>
10700 </tr>
10701 <tr>
10702 <td>
10703 <pre>{#syntax#}return{#endsyntax#}</pre>
10704 </td>
10705 <td>
10706 {#syntax#}return{#endsyntax#} exits a function with a value.
10707 <ul>
10708 <li>See also {#link|Functions#}</li>
10709 </ul>
10710 </td>
10711 </tr>
10712 <tr>
10713 <td>
10714 <pre>{#syntax#}linksection{#endsyntax#}</pre>
10715 </td>
10716 <td>
10717 The {#syntax#}linksection{#endsyntax#} keyword.
10718 <ul>
10719 <li>TODO add documentation for linksection</li>
10720 </ul>
10721 </td>
10722 </tr>
10723 <tr>
10724 <td>
10725 <pre>{#syntax#}struct{#endsyntax#}</pre>
10726 </td>
10727 <td>
10728 {#syntax#}struct{#endsyntax#} defines a struct.
10729 <ul>
10730 <li>See also {#link|struct#}</li>
10731 </ul>
10732 </td>
10733 </tr>
10734 <tr>
10735 <td>
10736 <pre>{#syntax#}suspend{#endsyntax#}</pre>
10737 </td>
10738 <td>
10739 {#syntax#}suspend{#endsyntax#} will cause control flow to return to the call site or resumer of the function.
10740 {#syntax#}suspend{#endsyntax#} can also be used before a block within a function,
10741 to allow the function access to its frame before control flow returns to the call site.
10742 <ul>
10743 <li>See also {#link|Suspend and Resume#}</li>
10744 </ul>
10745 </td>
10746 </tr>
10747 <tr>
10748 <td>
10749 <pre>{#syntax#}switch{#endsyntax#}</pre>
10750 </td>
10751 <td>
10752 A {#syntax#}switch{#endsyntax#} expression can be used to test values of a common type.
10753 {#syntax#}switch{#endsyntax#} cases can capture field values of a {#link|Tagged union#}.
10754 <ul>
10755 <li>See also {#link|switch#}</li>
10756 </ul>
10757 </td>
10758 </tr>
10759 <tr>
10760 <td>
10761 <pre>{#syntax#}test{#endsyntax#}</pre>
10762 </td>
10763 <td>
10764 The {#syntax#}test{#endsyntax#} keyword can be used to denote a top-level block of code
10765 used to make sure behavior meets expectations.
10766 <ul>
10767 <li>See also {#link|Zig Test#}</li>
10768 </ul>
10769 </td>
10770 </tr>
10771 <tr>
10772 <td>
10773 <pre>{#syntax#}threadlocal{#endsyntax#}</pre>
10774 </td>
10775 <td>
10776 {#syntax#}threadlocal{#endsyntax#} can be used to specify a variable as thread-local.
10777 <ul>
10778 <li>See also {#link|Thread Local Variables#}</li>
10779 </ul>
10780 </td>
10781 </tr>
10782 <tr>
10783 <td>
10784 <pre>{#syntax#}true{#endsyntax#}</pre>
10785 </td>
10786 <td>
10787 The boolean value {#syntax#}true{#endsyntax#}.
10788 <ul>
10789 <li>See also {#link|Primitive Values#}</li>
10790 </ul>
10791 </td>
10792 </tr>
10793 <tr>
10794 <td>
10795 <pre>{#syntax#}try{#endsyntax#}</pre>
10796 </td>
10797 <td>
10798 {#syntax#}try{#endsyntax#} evaluates an error union expression.
10799 If it is an error, it returns from the current function with the same error.
10800 Otherwise, the expression results in the unwrapped value.
10801 <ul>
10802 <li>See also {#link|try#}</li>
10803 </ul>
10804 </td>
10805 </tr>
10806 <tr>
10807 <td>
10808 <pre>{#syntax#}undefined{#endsyntax#}</pre>
10809 </td>
10810 <td>
10811 {#syntax#}undefined{#endsyntax#} can be used to leave a value uninitialized.
10812 <ul>
10813 <li>See also {#link|undefined#}</li>
10814 </ul>
10815 </td>
10816 </tr>
10817 <tr>
10818 <td>
10819 <pre>{#syntax#}union{#endsyntax#}</pre>
10820 </td>
10821 <td>
10822 {#syntax#}union{#endsyntax#} defines a union.
10823 <ul>
10824 <li>See also {#link|union#}</li>
10825 </ul>
10826 </td>
10827 </tr>
10828 <tr>
10829 <td>
10830 <pre>{#syntax#}unreachable{#endsyntax#}</pre>
10831 </td>
10832 <td>
10833 {#syntax#}unreachable{#endsyntax#} can be used to assert that control flow will never happen upon a particular location.
10834 Depending on the build mode, {#syntax#}unreachable{#endsyntax#} may emit a panic.
10835 <ul>
10836 <li>Emits a panic in {#syntax#}Debug{#endsyntax#} and {#syntax#}ReleaseSafe{#endsyntax#} mode, or when using <code>zig test</code>.</li>
10837 <li>Does not emit a panic in {#syntax#}ReleaseFast{#endsyntax#} mode, unless <code>zig test</code> is being used.</li>
10838 <li>See also {#link|unreachable#}</li>
10839 </ul>
10840 </td>
10841 </tr>
10842 <tr>
10843 <td>
10844 <pre>{#syntax#}usingnamespace{#endsyntax#}</pre>
10845 </td>
10846 <td>
10847 {#syntax#}usingnamespace{#endsyntax#} is a top-level declaration that imports all the public declarations of the operand,
10848 which must be a struct, union, or enum, into the current scope.
10849 <ul>
10850 <li>See also {#link|usingnamespace#}</li>
10851 </ul>
10852 </td>
10853 </tr>
10854 <tr>
10855 <td>
10856 <pre>{#syntax#}var{#endsyntax#}</pre>
10857 </td>
10858 <td>
10859 {#syntax#}var{#endsyntax#} declares a variable that may be modified.
10860 <ul>
10861 <li>See also {#link|Variables#}</li>
10862 </ul>
10863 </td>
10864 </tr>
10865 <tr>
10866 <td>
10867 <pre>{#syntax#}volatile{#endsyntax#}</pre>
10868 </td>
10869 <td>
10870 {#syntax#}volatile{#endsyntax#} can be used to denote loads or stores of a pointer have side effects.
10871 It can also modify an inline assembly expression to denote it has side effects.
10872 <ul>
10873 <li>See also {#link|volatile#}, {#link|Assembly#}</li>
10874 </ul>
10875 </td>
10876 </tr>
10877 <tr>
10878 <td>
10879 <pre>{#syntax#}while{#endsyntax#}</pre>
10880 </td>
10881 <td>
10882 A {#syntax#}while{#endsyntax#} expression can be used to repeatedly test a boolean, optional, or error union expression,
10883 and cease looping when that expression evaluates to false, null, or an error, respectively.
10884 <ul>
10885 <li>See also {#link|while#}</li>
10886 </ul>
10887 </td>
10888 </tr>
10889 </table>
10890 </div>
10319 {#header_close#}10891 {#header_close#}
1032010892
10321 {#header_open|Grammar#}10893 {#header_open|Grammar#}
...@@ -10822,7 +11394,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_and / KEYWORD_anyframe / KEYWORD_anytype...@@ -10822,7 +11394,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_and / KEYWORD_anyframe / KEYWORD_anytype
10822 <li>Reduce the amount one must remember.</li>11394 <li>Reduce the amount one must remember.</li>
10823 <li>Minimize energy spent on coding style.</li>11395 <li>Minimize energy spent on coding style.</li>
10824 <li>Resource deallocation must succeed.</li>11396 <li>Resource deallocation must succeed.</li>
10825 <li>Together we serve end users.</li>11397 <li>Together we serve the users.</li>
10826 </ul>11398 </ul>
10827 {#header_close#}11399 {#header_close#}
10828 </div></div>11400 </div></div>
lib/libc/glibc/abi.txt+3606-351
...@@ -200,7 +200,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -200,7 +200,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2002920029
201201
2022920229
203
2032920429
205
2042920629
205207
206208
...@@ -229,6 +231,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -229,6 +231,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
229231
230232
231233
234
235
2322923629
2332923729
2342923829
...@@ -237,47 +241,83 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -237,47 +241,83 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2372924129
238242
2392924329
244
245
2402924629
2412924729
2422924829
249
250
2432925129
2442925229
2452925329
2462925429
247255
2482925629
257
2492925829
2502925929
251260
2522926129
262
2532926329
254264
255265
256266
267
2572926829
2582926929
2592927029
2602927129
2612927229
273
274
275
276
277
278
279
280
281
282
283
284
285
286
2622928729
2632928829
289
2642929029
2652929129
292
2662929329
294
2672929529
2682929629
269297
2702929829
2712929929
300
2722930129
302
2732930329
274304
2752930529
306
2762930729
277308
278309
279310
280311
312
313
314
315
316
317
318
319
320
2812932129
2822932229
283323
...@@ -301,29 +341,50 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -301,29 +341,50 @@ aarch64-linux-gnu aarch64_be-linux-gnu
301341
302342
3032934329
344
345
3042934629
3052934729
3062934829
3072934929
308350
309351
352
353
354
3102935529
356
357
358
3112935929
312360
3132936129
362
3142936329
3152936429
316365
3172936629
367
3182936829
3192936929
320370
3212937129
322372
373
3232937429
3243537535
325376
326377
378
379
380
381
382
383
384
385
386
387
3272938829
3282938929
3292939029
...@@ -334,6 +395,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -334,6 +395,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
334395
335396
336397
398
3372939929
3382940029
3392940129
...@@ -361,9 +423,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -361,9 +423,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu
361423
362424
363425
426
427
428
429
430
431
3642943229
365433
3662943429
435
3672943629
3682943729
3692943829
...@@ -372,6 +441,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -372,6 +441,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3722944129
3732944229
3742944329
444
445
3752944629
3762944729
377448
...@@ -381,10 +452,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -381,10 +452,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3812945229
3822945329
3832945429
455
456
457
458
3842945929
3852946029
461
462
3862946329
3872946429
465
3882946629
3892946729
3902946829
...@@ -404,6 +482,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -404,6 +482,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
4042948229
4052948329
4062948429
485
4072948629
4082948729
4092948829
...@@ -419,7 +498,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -419,7 +498,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
4192949829
420499
4212950029
501
4222950229
503
4232950429
4242950529
4252950629
...@@ -443,17 +524,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -443,17 +524,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu
443524
4442952529
4452952629
527
4462952829
529
4472953029
531
4482953229
533
4492953429
535
4502953629
537
4512953829
539
4522954029
541
4532954229
543
4542954429
545
4552954629
547
4562954829
549
4572955029
4582955129
4593055230
...@@ -481,23 +574,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -481,23 +574,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu
4812957429
482575
4832957629
577
4842957829
4852957929
486580
4872958129
582
4882958329
4892958429
490585
4912958629
587
4922958829
4932958929
4942959029
4952959129
496592
497593
594
4982959529
499596
5002959729
598
599
5012960029
5022960129
5032960229
...@@ -513,23 +612,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -513,23 +612,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu
5132961229
5142961329
5152961429
61542
5162961629
5172961729
5182961829
519619
620
621
622
5202962329
521624
5222962529
626
5232962729
628
5242962929
525630
5262963129
632
5272963329
5282963429
529635
636
5302963729
638
5312963929
5322964029
641
642
5332964329
534644
535645
...@@ -568,17 +678,26 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -568,17 +678,26 @@ aarch64-linux-gnu aarch64_be-linux-gnu
568678
569679
570680
681
5712968229
5722968329
5732968429
574685
575686
687
5762968829
577689
578690
579691
580692
693
5812969429
695
696
697
698
699
700
5822970129
583702
584703
...@@ -691,7 +810,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -691,7 +810,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
6912981029
6922981129
6932981229
813
814
6942981529
816
817
6952981829
6962981929
6972982029
...@@ -707,6 +830,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -707,6 +830,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7072983029
708831
7092983229
833
7102983429
711835
7122983629
...@@ -714,7 +838,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -714,7 +838,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7142983829
7152983929
7162984029
841
7172984229
843
844
7182984529
7192984629
7202984729
...@@ -745,6 +872,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -745,6 +872,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7452987229
7462987329
7472987429
875
876
877
878
879
7482988029
7492988129
7502988229
...@@ -763,12 +895,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -763,12 +895,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7632989529
764896
7652989729
898
7662989929
900
7672990129
7682990229
7692990329
7702990429
7712990529
906
907
908
7722990929
7732991029
7742991129
...@@ -776,7 +913,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -776,7 +913,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7762991329
7772991429
7782991529
916
7792991729
918
919
920
7802992129
7812992229
7822992329
...@@ -790,6 +931,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -790,6 +931,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
7902993129
7912993229
7922993329
934
935
7932993629
7942993729
7952993829
...@@ -800,24 +943,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -800,24 +943,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu
800943
8012994429
8023394533
946
8032994729
8042994829
8052994929
806950
807951
808952
953
8092995429
810955
8112995629
957
8122995829
959
8132996029
961
962
8142996329
964
965
8152996629
816967
817968
8182996929
970
8192997129
820972
973
8212997429
8222997529
8232997629
...@@ -850,6 +1003,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -850,6 +1003,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
85029100329
85129100429
85229100529
1006
1007
1008
85329100929
8541010
85529101129
...@@ -884,6 +1040,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -884,6 +1040,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
8841040
88529104129
88629104229
1043
1044
88729104529
88829104629
88929104729
...@@ -903,48 +1061,93 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -903,48 +1061,93 @@ aarch64-linux-gnu aarch64_be-linux-gnu
9031061
9041062
90529106329
1064
1065
1066
90629106729
9071068
90829106929
1070
1071
90929107229
1073
1074
1075
91029107629
91129107729
9121078
9131079
91429108029
91529108129
1082
1083
91629108429
91729108529
91829108629
91929108729
92029108829
9211089
1090
92229109129
92329109229
9241093
9251094
92629109529
9271096
1097
1098
92829109929
9291100
9301101
93129110229
93229110329
1104
1105
93329110629
1107
1108
1109
1110
93429111129
93529111229
1113
1114
93629111529
1116
93729111729
1118
1119
1120
93829112129
1122
1123
1124
93929112529
94029112629
1127
1128
94129112929
1130
1131
94229113229
1133
94329113429
1135
1136
1137
94429113829
1139
1140
1141
1142
94529114329
1144
1145
1146
94629114729
94729114829
1149
1150
94829115129
94929115229
95029115329
...@@ -963,6 +1166,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -963,6 +1166,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
9631166
96429116729
96529116829
1169
1170
96629117129
96729117229
96829117329
...@@ -984,7 +1189,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -984,7 +1189,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
98429118929
98529119029
98629119129
1192
1193
98729119429
1195
98829119629
98929119729
99029119829
...@@ -997,14 +1205,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -997,14 +1205,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
99729120529
9981206
99929120729
1208
100029120929
100129121029
10021211
100329121229
1213
100429121429
100529121529
10061216
100729121729
1218
100829121929
100929122029
101029122129
...@@ -1602,7 +1813,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -1602,7 +1813,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
160229181329
160329 39181429 39
160429181529
160529181629 42
160637181737
160737181837
160837181937
...@@ -2728,17 +2939,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2728,17 +2939,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu
272829293929
272929294029
273029294129
294242
273129294329
273229294429
273329294529
273429294629
294729 42
273529294829
273629294929
273729295029
273829295129
273929295229
274029295329
274129295442
274229295529
274329295629
274429295729
...@@ -2768,8 +2981,20 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2768,8 +2981,20 @@ aarch64-linux-gnu aarch64_be-linux-gnu
276829298129
276929298229
277029298329
277129298429 42
277230298530
298629 42
298729
298829
298929
299029
299129
299229
299329
299429
299529
299629
299740
277329299829
277429299929
277529300029
...@@ -2781,6 +3006,23 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2781,6 +3006,23 @@ aarch64-linux-gnu aarch64_be-linux-gnu
278129300629
278229300729
278329300829
300929
301029
301129
301229
301329
301429
301529
301629
301729
301829
301929
302029
302129
302229
302329
302429
302540
278440302640
278529302729
278629302829
...@@ -2799,6 +3041,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2799,6 +3041,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu
279929304129
280029304229
280129304329
304430
304529
304629
304729
304829
304929
305029
305129
305229 42
305329
305429
305529
305629
305729
305829
305929
306029
306129
306229
306329
306429
306529
306629
306729
306829
306929
307029
307129
307229
307329
307429
307529
307629
307729
307829
280229307929
280329308029
280429308129
...@@ -2809,9 +3086,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2809,9 +3086,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
280929308629
281029308729
281129308829
281240308936
281340
281429309029
309136
281529309229
281629309329
281729309429
...@@ -2820,6 +3097,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2820,6 +3097,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
282029309729
282129309829
282229309929
310029 34
282329310129
282429310229
282529310329
...@@ -2828,7 +3106,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2828,7 +3106,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
282829310629
282929310729
283029310829
283130
283229310929
283329311029
283429311129
...@@ -2836,6 +3113,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2836,6 +3113,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
283629311329
283729311429
283829311529
3116
283929311729
284029311829
284129311929
...@@ -2851,6 +3129,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2851,6 +3129,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
285129312929
285229313029
285329313129
313236
285429313329
285529313429
285629313529
...@@ -2868,39 +3147,65 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2868,39 +3147,65 @@ aarch64-linux-gnu aarch64_be-linux-gnu
286829314729
286929314829
287029314929
315037
315137
315237
315337
315437
287129315529
287229315629
287329315729
287429315829
287529315929
287636
287729316029
287836
287929316129
316237
316337
316437
316537
316637
288029316729
288129316829
288229316929
317038
3171
288329317229
288429317329
288529317429
288629317529
288729 34
288829317629
288929317729
289029317829
289129317929
289229318029
318137
318237
318337
318437
318537
289329318629
289429318729
289529318829
318935
319035
319137
319237
319337
319437
319537
319635
289629319729
319837
319937
320037
320137
320237
289729320329
289829320429
289929320529
290029320629
290129320729
290229320829
2903
290429320929
290529321029
290629321129
...@@ -2910,13 +3215,51 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2910,13 +3215,51 @@ aarch64-linux-gnu aarch64_be-linux-gnu
291029321529
291129321629
291229321729
321837
321937
322037
322137
322237
322329
322429
322529
322637
322737
322837
322937
323037
323129
323229
323329
323429
323529
323629
323729
323829
323929
324029
324129
324229
324329
324429
324529
324629
324729
324829
324929
325029
325129
325229
325340
325429
325529
325629
291329325729
291429325829
291529325929
291629326029
291729326129
291829326229
291936
292029326329
292129326429
292229326529
...@@ -2934,11 +3277,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2934,11 +3277,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
293429327729
293529327829
293629327929
293737
293837
293937
294037
294137
294229328029
294329328129
294429328229
...@@ -2946,16 +3284,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2946,16 +3284,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
294629328429
294729328529
294829328629
294937
295037
295137
295237
295337
295429328729
295529328829
295629328929
295738
2958
295929329029
296029329129
296129329229
...@@ -2965,11 +3296,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2965,11 +3296,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
296529329629
296629329729
296729329829
296837
296937
297037
297137
297237
297329329929
297429330029
297529330129
...@@ -2981,12 +3307,79 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -2981,12 +3307,79 @@ aarch64-linux-gnu aarch64_be-linux-gnu
298137330737
298237330837
298335330935
298429331035
331135
298537331237
298637331337
298737331437
298837331537
298937331637
331735
331829
331929
332029
332129
332229
332329
332429
332529
332629
332729
332829
332929
333029
333129
333229
333329
333429
333529
333629
333729
333829
333929
334029
334129
334229
334329
334429
334529
334629
334729
334829
334929
335029
335129
335229
335329
335429
335529
335629
335742
335829
335929
336029
336129
336229
336329
336442
336529
336629
336729
336829
336929
337029
337129
337229
337329
337429
337529
337629
337729
337829
337929
338029
338129
338229
299029338329
299129338429
299229338529
...@@ -3009,6 +3402,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3009,6 +3402,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu
300937340237
301029340329
301129340429
340537
340637
340737
340837
340937
341029
301229341129
301337341237
301437341337
...@@ -3027,6 +3426,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3027,6 +3426,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
302729342629
302829342729
302929342829
342937
343037
343137
343237
343337
303029343429
303129343529
303229343629
...@@ -3037,10 +3441,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3037,10 +3441,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
303729344129
303829344229
303929344329
304040
304129344429
304229344529
304329344629
344738
304429344829
304529344929
304629345029
...@@ -3063,8 +3467,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3063,8 +3467,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu
306329346729
306429346829
306529346929
347042
347142
306629347229
306729347329
347435
347535
347637
347737
347837
347937
348037
348135
348229
306829348329
306929348429
307029348529
...@@ -3086,27 +3501,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3086,27 +3501,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu
308629350129
308729350229
308829350329
308935
309035
309137350437
309237350537
309337350637
309437350737
309537350837
309635
309735
309835
309937350937
310037351037
310137351137
310237351237
310337351337
310435
310529
310629
310729
310829
310929
311029351429
311129351529
311229351629
...@@ -3176,6 +3580,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3176,6 +3580,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
317629358029
317729358129
317829358229
3583
317929358429
318029358529
318129358629
...@@ -3194,11 +3599,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3194,11 +3599,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu
319437359937
319529360029
319629360129
319737360229
319837360329
319937360429
320037360529
320137360629
360729
320229360829
320329360929
320429361029
...@@ -3217,6 +3623,15 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3217,6 +3623,15 @@ aarch64-linux-gnu aarch64_be-linux-gnu
321737362337
321837362437
321929362529
362640
362738
362838
362938
363038
363138
363238
363338
363438
322029363529
322129363629
322229363729
...@@ -3229,9 +3644,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3229,9 +3644,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
322929364429
323029364529
323129364629
323238
323329
323429
323529364729
323629364829
323729364929
...@@ -3241,6 +3653,22 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3241,6 +3653,22 @@ aarch64-linux-gnu aarch64_be-linux-gnu
324129365329
324229365429
324329365529
365635 41
365735 41
365837 41
365937 41
366037 41
366137 41
366237 41
366335 41
366435 41
366535 41
366637 41
366737 41
366837 41
366937 41
367037 41
367135 41
324429367229
324529367329
324629367429
...@@ -3254,46 +3682,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3254,46 +3682,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu
325429368229
325529368329
325629368429
325735
325835
325937368537
326037368637
326137368737
326237368837
326337368937
326435
326529
326629
326729
326829
326929
327029
327129
327229
327329
327429
327529
327629
327729
327829369029
327929369129
369238
369338
369438
369538
328029369629
328129369729
328229369829
328329369929
370040
328429370129
328529370229
328629370329
370435
370535
328737370637
328837370737
328937370837
329037370937
329137371037
371135
371235
371335
329237371437
329337371537
329437371637
329537371737
329637371837
371935
329729372029
329829372129
329929372229
...@@ -3333,213 +3756,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu...@@ -3333,213 +3756,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
333329375629
333429375729
333529375829
3336293759
333729
333829
333929
334029
334129
334229
334329
334429
334529
334629
334729
334829
334929
335029
335129
335229
335329
335429
335529
335629
335729
335829
335929
336029
336129
336229
336329
336429
336529
3366
336729
336829
336929
337029
337137
337237
337337
337437
337537
337629
337729
337837
337937
338037
338137
338237
338329
338429
338529
338629
338729
338829
338929
339029
339129
339229
339329
339429
339529
339629
339729
339829
339929
340029
340129
340229
340337
340437
340537
340637
340737
340829
340940
341038
341138
341238
341338
341438
341538
341638
341738
341829
341929
342029
342129
342229
342329
342429
342529
342629
342729
342829
342929
343029
343129
343229
343329
343429
343529
343629
343729
343829
343935 41
344035 41
344137 41
344237 41
344337 41
344437 41
344537 41
344635 41
344735 41
344835 41
344937 41
345037 41
345137 41
345237 41
345337 41
345435 41
345529
345629
345729
345829
345929
346029
346129
346229
346329
346429
346529
346629
346729
346837
346937
347037
347137
347237
347329
347429
347538
347638
347738
347838
347929
348029
348129
348229
348340
348429
348529
348629
348735
348835
348937
349037
349137
349237
349337
349435
349535
349635
349737
349837
349937
350037
350137
350235
350329
350429
350529
350629
350729
350829
350929
351029
351129
351229
351329
351429
351529
351629
351729
351829
351929
352029
352129
352229
352329
352429
352529
352629
352729
352829
352929
353029
353129
353229
353329
353429
353529
353629
353729
353829
353929
354029
354129
3542
354329376029
354429376129
354529376229
...@@ -3942,7 +4159,9 @@ s390x-linux-gnu...@@ -3942,7 +4159,9 @@ s390x-linux-gnu
394227415927
39434160
394427416127
4162
394527416327
4164
394627416527
39474166
39484167
...@@ -3971,6 +4190,8 @@ s390x-linux-gnu...@@ -3971,6 +4190,8 @@ s390x-linux-gnu
39714190
39724191
39734192
4193
4194
3974541955
3975541965
3976541975
...@@ -3979,43 +4200,79 @@ s390x-linux-gnu...@@ -3979,43 +4200,79 @@ s390x-linux-gnu
397927420027
39804201
398127420227
4203
4204
398227420527
39835 1642065 16
398420420720
4208
4209
3985542105
3986542115
3987542125
398827421327
39894214
399027421527
4216
399127421727
399227421827
39934219
399427422027
4221
399527422227
39964223
39974224
39984225
4226
3999542275
4000542285
4001542295
4002542305
4003542315
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
4004542465
400515424715
4248
4006542495
4007542505
4251
40085 1642525 16
4253
4009542545
4010542555
40114256
4012542575
401316425816
4259
4014542605
4261
401527426227
40164263
401727426427
4265
401827426627
4267
4268
4269
4270
4271
4272
4273
4274
4275
4019542765
4020542775
4021542785
...@@ -4043,29 +4300,50 @@ s390x-linux-gnu...@@ -4043,29 +4300,50 @@ s390x-linux-gnu
40434300
40444301
404520430220
4303
4304
4046543055
4047543065
4048543075
4049543085
40504309
40514310
4311
4312
4313
4052543145
4315
4316
4317
405327431827
40544319
405527432027
4321
405627432227
405727432327
40584324
405927432527
4326
406027432727
406127432827
40624329
406327433027
40644331
4332
406527433327
406635433435
40674335
40684336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
4069543475
4070543485
407127434927
...@@ -4075,6 +4353,7 @@ s390x-linux-gnu...@@ -4075,6 +4353,7 @@ s390x-linux-gnu
40754353
40764354
40774355
4356
407839435739
4079543585
408016435916
...@@ -4103,9 +4382,16 @@ s390x-linux-gnu...@@ -4103,9 +4382,16 @@ s390x-linux-gnu
41034382
41044383
41054384
4385
4386
4387
4388
4389
4390
410627439127
41074392
410827439327
4394
410927439527
4110543965
4111543975
...@@ -4114,6 +4400,8 @@ s390x-linux-gnu...@@ -4114,6 +4400,8 @@ s390x-linux-gnu
411416440016
4115544015
411615 16440215 16
4403
4404
4117544055
4118544065
4119544075
...@@ -4123,10 +4411,17 @@ s390x-linux-gnu...@@ -4123,10 +4411,17 @@ s390x-linux-gnu
4123544115
4124544125
4125544135
4414
4415
4416
4417
4126544185
412716441916
4420
4421
4128544225
4129544235
4424
4130544255
4131544265
413216442716
...@@ -4146,6 +4441,7 @@ s390x-linux-gnu...@@ -4146,6 +4441,7 @@ s390x-linux-gnu
414616444116
4147544425
4148544435
4444
4149544455
4150544465
415115444715
...@@ -4161,7 +4457,9 @@ s390x-linux-gnu...@@ -4161,7 +4457,9 @@ s390x-linux-gnu
416127445727
41624458
416327445927
4460
416427446127
4462
4165544635
4166544645
4167544655
...@@ -4185,17 +4483,29 @@ s390x-linux-gnu...@@ -4185,17 +4483,29 @@ s390x-linux-gnu
41854483
41865 1644845 16
418719448519
4486
418819448719
4488
418919448919
4490
419019449119
4492
419119449319
4494
419219449519
4496
419319449719
4498
419419449919
4500
419519450119
4502
419619450319
4504
419719450519
4506
419819450719
4508
4199545095
4200545105
420130451130
...@@ -4223,23 +4533,29 @@ s390x-linux-gnu...@@ -4223,23 +4533,29 @@ s390x-linux-gnu
422327453327
42244534
422527453527
4536
422627453727
422727453827
42284539
422927454027
4541
423027454227
423127454327
42324544
423327454527
4546
423427454727
4235545485
4236545495
4237545505
42384551
42394552
4553
424027455427
42414555
424227455627
4557
4558
424327455927
4244545605
4245545615
...@@ -4255,23 +4571,34 @@ s390x-linux-gnu...@@ -4255,23 +4571,34 @@ s390x-linux-gnu
4255545715
4256545725
4257545735
457442
4258545755
4259545765
4260545775
42611145788 11
4579
4580
4581
426227458227
42634583
426427458427
4585
426527458627
4587
426627458827
42674589
426827459027
4591
426927459227
427027459327
42714594
4595
427227459627
4597
427327459827
427423 31459923 31
4600
4601
4275546025
42764603
42774604
...@@ -4310,17 +4637,26 @@ s390x-linux-gnu...@@ -4310,17 +4637,26 @@ s390x-linux-gnu
43104637
43114638
43124639
4640
4313546415
4314546425
431519464319
43164644
43174645
4646
431811464711
43194648
43204649
43214650
43224651
4652
4323546535
4654
4655
4656
4657
4658
4659
4324546605
432516466116
432616466216
...@@ -4433,7 +4769,11 @@ s390x-linux-gnu...@@ -4433,7 +4769,11 @@ s390x-linux-gnu
4433547695
4434547705
443520477120
4772
4773
443620477420
4775
4776
4437547775
4438547785
443919477919
...@@ -4449,6 +4789,7 @@ s390x-linux-gnu...@@ -4449,6 +4789,7 @@ s390x-linux-gnu
444927478927
44504790
445127479127
4792
445227479327
44534794
445428479528
...@@ -4456,7 +4797,10 @@ s390x-linux-gnu...@@ -4456,7 +4797,10 @@ s390x-linux-gnu
445616479716
445716479816
445815 16479915 16
4800
44595 1648015 16
4802
4803
4460548045
4461548055
4462548065
...@@ -4487,6 +4831,11 @@ s390x-linux-gnu...@@ -4487,6 +4831,11 @@ s390x-linux-gnu
448714483114
448816483216
4489548335
4834
4835
4836
4837
4838
4490548395
4491548405
4492548415
...@@ -4505,12 +4854,17 @@ s390x-linux-gnu...@@ -4505,12 +4854,17 @@ s390x-linux-gnu
450527485427
45064855
450727485627
4857
450827485827
4859
4509548605
4510548615
4511548625
4512548635
4513548645
4865
4866
4867
4514848688
4515848698
4516848708
...@@ -4518,7 +4872,11 @@ s390x-linux-gnu...@@ -4518,7 +4872,11 @@ s390x-linux-gnu
4518548725
451927487327
452027487427
4875
452127487627
4877
4878
4879
452219488019
452318488118
452419488219
...@@ -4532,6 +4890,8 @@ s390x-linux-gnu...@@ -4532,6 +4890,8 @@ s390x-linux-gnu
4532548905
4533548915
4534548925
4893
4894
4535548955
4536548965
4537548975
...@@ -4542,24 +4902,34 @@ s390x-linux-gnu...@@ -4542,24 +4902,34 @@ s390x-linux-gnu
45424902
454316490316
454433490433
4905
4545549065
454631 5490731 5
4547549085
45484909
45494910
45504911
4912
455127491327
45524914
455327491527
4916
455427491727
4918
455515 16491915 16
4920
4921
455615 16492215 16
4923
4924
455727492527
45584926
45594927
456027492827
4929
456127493027
45624931
4932
456316493316
45644934
4565549355
...@@ -4592,6 +4962,9 @@ s390x-linux-gnu...@@ -4592,6 +4962,9 @@ s390x-linux-gnu
4592549625
4593549635
45945 1649645 16
4965
4966
4967
459512496812
45964969
4597549705
...@@ -4626,6 +4999,8 @@ s390x-linux-gnu...@@ -4626,6 +4999,8 @@ s390x-linux-gnu
46264999
4627550005
4628550015
5002
5003
4629550045
4630550055
4631550065
...@@ -4645,48 +5020,93 @@ s390x-linux-gnu...@@ -4645,48 +5020,93 @@ s390x-linux-gnu
46455020
46465021
464716502216
5023
5024
5025
4648550265
4649550275
465016502816
5029
5030
4651550315
5032
5033
5034
4652550355
46535036
46545037
465512503812
4656550395
4657550405
5041
5042
4658550435
4659550445
4660550455
4661550465
4662550475
46635048
5049
466416505016
4665550515
46665052
46675053
4668550545
46695055
5056
5057
4670550585
46715059
46725060
467312506112
467420506220
5063
5064
467520506520
5066
5067
5068
5069
4676550705
467715 16507115 16
5072
5073
46785 1650745 16
5075
467916507616
5077
5078
5079
468015 16508015 16
5081
5082
5083
46815 1650845 16
468215 16508515 16
5086
5087
468315 16508815 16
5089
5090
46845 1650915 16
5092
468516509316
5094
5095
5096
468616509716
5098
5099
5100
5101
468716510216
5103
5104
5105
4688551065
4689551075
5108
5109
469016511016
469116511116
469216511216
...@@ -4705,6 +5125,8 @@ s390x-linux-gnu...@@ -4705,6 +5125,8 @@ s390x-linux-gnu
47055125
4706551265
4707551275
5128
5129
4708551305
4709551315
47105 1651325 16
...@@ -4726,7 +5148,10 @@ s390x-linux-gnu...@@ -4726,7 +5148,10 @@ s390x-linux-gnu
472616514816
4727551495
472816515016
5151
5152
4729551535
5154
4730551555
4731551565
4732551575
...@@ -4739,14 +5164,17 @@ s390x-linux-gnu...@@ -4739,14 +5164,17 @@ s390x-linux-gnu
473927516427
47405165
474127516627
5167
474227516827
474327516927
47445170
474527517127
5172
474627517327
474727517427
47485175
474927517627
5177
475027517827
4751551795
4752551805
...@@ -5344,7 +5772,7 @@ s390x-linux-gnu...@@ -5344,7 +5772,7 @@ s390x-linux-gnu
5344557725
53455 3957735 39
5346557745
5347557755 42
534837577637
534937577737
535037577837
...@@ -6470,17 +6898,19 @@ s390x-linux-gnu...@@ -6470,17 +6898,19 @@ s390x-linux-gnu
6470568985
6471568995
6472569005
690142
6473569025
6474569035
6475569045
6476569055
647714 15690614 15 42
6478569075
6479569085
6480569095
6481569105
6482569115
6483569125
691342
6484569145
6485569155
6486569165
...@@ -6510,9 +6940,9 @@ s390x-linux-gnu...@@ -6510,9 +6940,9 @@ s390x-linux-gnu
6510569405
6511569415
6512569425
651314 15694314 15 42
651430694430
6515869458 42
6516569465
6517569475
651824694824
...@@ -6578,7 +7008,7 @@ s390x-linux-gnu...@@ -6578,7 +7008,7 @@ s390x-linux-gnu
6578570085
657915700915
6580570105
6581570115 42
658223701223
6583570135
6584570145
...@@ -6883,12 +7313,14 @@ s390x-linux-gnu...@@ -6883,12 +7313,14 @@ s390x-linux-gnu
6883573135
6884573145
6885573155
731642
6886573175
6887573185
6888573195
6889573205
6890573215
6891573225
732342
6892573245
6893573255
6894573265
...@@ -6994,6 +7426,8 @@ s390x-linux-gnu...@@ -6994,6 +7426,8 @@ s390x-linux-gnu
6994574265
699518742718
6996574285
742942
743042
69975 1674315 16
699812 16743212 16
699935743335
...@@ -7688,6 +8122,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7688,6 +8122,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
76888122
76898123
76908124
8125
8126
769116812716
769216812816
769316812916
...@@ -7713,6 +8149,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7713,6 +8149,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77138149
77148150
77158151
8152
8153
771616815416
771716815516
771816815616
...@@ -7722,8 +8160,12 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7722,8 +8160,12 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77228160
772327816127
77248162
8163
8164
772516816516
772620816620
8167
8168
772716816916
772816817016
772916817116
...@@ -7731,6 +8173,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7731,6 +8173,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77318173
773227817427
77338175
8176
773427817727
77358178
773627817927
...@@ -7738,22 +8181,43 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7738,22 +8181,43 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77388181
77398182
77408183
8184
8185
774116818616
774216818716
774316818816
774416818916
774516819016
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
774616820516
774716820616
8207
774816820816
774916820916
8210
775016821116
8212
775116821316
775216821416
77538215
775416821616
775516821716
8218
775616821916
8220
775727822127
77588222
775927822327
...@@ -7762,6 +8226,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7762,6 +8226,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77628226
77638227
77648228
8229
8230
8231
8232
8233
8234
8235
8236
8237
8238
776516823916
776616824016
77678241
...@@ -7785,29 +8259,50 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7785,29 +8259,50 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77858259
77868260
778720826120
8262
8263
778816826416
778916826516
779016826616
779116826716
77928268
77938269
8270
8271
8272
779416827316
8274
8275
8276
779527827727
77968278
779727827927
77988280
8281
779927828227
78008283
780127828427
78028285
8286
780327828727
78048288
780527828927
78068290
78078291
8292
780835829335
78098294
78108295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
781116830616
781216830716
781327830827
...@@ -7818,6 +8313,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7818,6 +8313,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
78188313
78198314
78208315
8316
782116831716
782216831816
782316831916
...@@ -7845,10 +8341,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7845,10 +8341,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
78458341
78468342
78478343
8344
8345
8346
8347
8348
8349
784827835027
78498351
785027835227
78518353
8354
785216835516
785316835616
785416835716
...@@ -7856,6 +8359,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7856,6 +8359,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
78568359
785716836016
785816836116
8362
8363
785916836416
786016836516
78618366
...@@ -7865,10 +8370,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7865,10 +8370,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
786516837016
786616837116
786716837216
8373
8374
8375
8376
786816837716
786916837816
8379
8380
787016838116
787116838216
8383
787216838416
787316838516
787416838616
...@@ -7888,6 +8400,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7888,6 +8400,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
788816840016
788916840116
789016840216
8403
789116840416
789216840516
789316840616
...@@ -7904,6 +8417,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7904,6 +8417,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79048417
790527841827
79068419
8420
8421
790716842216
790816842316
790916842416
...@@ -7927,17 +8442,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7927,17 +8442,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79278442
792816844316
792919844419
8445
793019844619
8447
793119844819
8449
793219845019
8451
793319845219
8453
793419845419
8455
793519845619
8457
793619845819
8459
793719846019
8461
793819846219
8463
793919846419
8465
794019846619
8467
794116846816
794216846916
794330847030
...@@ -7966,23 +8493,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7966,23 +8493,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79668493
796727849427
79688495
8496
796927849727
79708498
797127849927
79728500
8501
797327850227
79748503
797527850427
79768505
8506
797716850716
797816850816
797916850916
79808510
79818511
8512
798227851327
79838514
798427851527
79858516
8517
8518
798616851916
798716852016
798816852116
...@@ -7997,23 +8530,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -7997,23 +8530,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
799716853016
799816853116
799916853216
853342
800016853416
800116853516
800216853616
80038537
8538
8539
8540
800427854127
80058542
800627854327
80078544
8545
8546
800827854727
80098548
801027854927
80118550
8551
801227855227
80138553
8554
801427855527
80158556
8557
801623855823
8559
8560
801716856116
80188562
80198563
...@@ -8052,17 +8596,26 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8052,17 +8596,26 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
80528596
80538597
80548598
8599
805516860016
805616860116
805719860219
80588603
80598604
8605
806016860616
80618607
80628608
80638609
80648610
8611
806516861216
8613
8614
8615
8616
8617
8618
806616861916
80678620
80688621
...@@ -8175,7 +8728,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8175,7 +8728,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
817516872816
817616872916
817720873020
8731
8732
817820873320
8734
8735
817916873616
818016873716
818119873819
...@@ -8193,12 +8750,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8193,12 +8750,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
819327875027
81948751
81958752
8753
819628875428
819716875516
819816875616
819916875716
820016875816
8759
820116876016
8761
8762
820216876316
820316876416
820416876516
...@@ -8229,6 +8790,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8229,6 +8790,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
822916879016
823016879116
823116879216
8793
8794
8795
8796
8797
823216879816
823316879916
823416880016
...@@ -8248,11 +8814,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8248,11 +8814,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
82488814
824927881527
82508816
8817
8818
825116881916
825216882016
825316882116
825416882216
825516882316
8824
8825
8826
825616882716
825716882816
825816882916
...@@ -8261,6 +8832,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8261,6 +8832,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
826127883227
826227883327
82638834
8835
8836
8837
8838
826419883919
826518884018
826619884119
...@@ -8274,6 +8849,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8274,6 +8849,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
827416884916
827516885016
827616885116
8852
8853
827716885416
827816885516
827916885616
...@@ -8284,24 +8861,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8284,24 +8861,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
82848861
82858862
828633886333
8864
828716886516
828816886616
828916886716
82908868
82918869
82928870
8871
829327887227
82948873
829527887427
82968875
8876
8877
829716887816
8879
8880
829816888116
8882
8883
829927888427
83008885
83018886
830227888727
83038888
83048889
8890
8891
830516889216
830616889316
830716889416
...@@ -8334,6 +8921,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8334,6 +8921,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
833416892116
833516892216
833616892316
8924
8925
8926
833716892716
83388928
833916892916
...@@ -8368,6 +8958,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8368,6 +8958,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
83688958
836916895916
837016896016
8961
8962
837116896316
837216896416
837316896516
...@@ -8387,48 +8979,93 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8387,48 +8979,93 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
83878979
83888980
838916898116
8982
8983
8984
839016898516
839116898616
839216898716
8988
8989
839316899016
8991
8992
8993
839416899416
839516899516
83968996
83978997
839816899816
839916899916
9000
9001
840016900216
840116900316
840216900416
840316900516
840416900616
84059007
9008
840616900916
840716901016
84089011
84099012
841016901316
84119014
9015
9016
841216901716
84139018
84149019
841516902016
841620902120
9022
9023
841720902420
9025
9026
9027
9028
841816902916
841916903016
9031
9032
842016903316
9034
842116903516
9036
9037
9038
842216903916
9040
9041
9042
842316904316
842416904416
9045
9046
842516904716
9048
9049
842616905016
9051
842716905216
9053
9054
9055
842816905616
9057
9058
9059
9060
842916906116
9062
9063
9064
843016906516
843116906616
9067
9068
843216906916
843316907016
843416907116
...@@ -8447,6 +9084,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8447,6 +9084,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
84479084
844816908516
844916908616
9087
9088
845016908916
845116909016
845216909116
...@@ -8468,7 +9107,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8468,7 +9107,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
846816910716
846916910816
847016910916
9110
9111
847116911216
9113
847216911416
847316911516
847416911616
...@@ -8482,14 +9124,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -8482,14 +9124,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
84829124
848327912527
84849126
9127
848527912827
84869129
848727913027
84889131
9132
848927913327
84909134
849127913527
84929136
9137
849316913816
849416913916
849516914016
...@@ -9086,7 +9731,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -9086,7 +9731,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
908616973116
908739 16973239 16
908816973316
908916973442 16
90909735
909137973637
909237973737
...@@ -10212,17 +10857,19 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -10212,17 +10857,19 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
10212161085716
10213161085816
10214161085916
1086042
10215161086116
10216161086216
10217161086316
10218161086416
1086542 16
10219161086616
10220161086716
10221161086816
10222161086916
10223161087016
10224161087116
10225161087242
10226161087316
10227161087416
10228161087516
...@@ -10252,9 +10899,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -10252,9 +10899,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
10252161089916
10253161090016
10254161090116
10255161090242 16
10256301090330
10257161090442 16
10258161090516
10259161090616
10260241090724
...@@ -10320,7 +10967,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -10320,7 +10967,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
10320161096716
10321161096816
10322161096916
10323161097042 16
10324231097123
10325161097216
10326161097316
...@@ -10625,12 +11272,14 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -10625,12 +11272,14 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
10625161127216
10626161127316
10627161127416
1127542
10628161127616
10629161127716
10630161127816
10631161127916
10632161128016
10633161128116
1128242
10634161128316
10635161128416
10636161128516
...@@ -10736,6 +11385,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf...@@ -10736,6 +11385,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
10736161138516
10737181138618
10738161138716
1138842
1138942
10739161139016
10740161139116
10741351139235
...@@ -11426,7 +12077,9 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11426,7 +12077,9 @@ sparc-linux-gnu sparcel-linux-gnu
11426271207727
1142712078
11428271207927
12080
11429271208127
12082
11430271208327
1143112084
1143212085
...@@ -11455,6 +12108,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11455,6 +12108,8 @@ sparc-linux-gnu sparcel-linux-gnu
1145512108
1145612109
1145712110
12111
12112
114580121130
114590121140
114600121150
...@@ -11463,43 +12118,79 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11463,43 +12118,79 @@ sparc-linux-gnu sparcel-linux-gnu
11463271211827
1146412119
11465271212027
12121
12122
11466271212327
114671 16121241 16
11468201212520
12126
12127
114695121285
114700121290
114710121300
11472271213127
1147312132
11474271213327
12134
11475271213527
11476271213627
1147712137
11478271213827
12139
11479271214027
1148012141
1148112142
1148212143
12144
114831121451
114841121461
114851121471
114860121480
114870121490
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
114880121640
11489151216515
12166
114901121671
114911121681
12169
114921 16121701 16
12171
114930121720
114940121730
1149512174
114960121750
11497161217616
12177
114980121780
12179
11499271218027
1150012181
11501271218227
12183
11502271218427
12185
12186
12187
12188
12189
12190
12191
12192
12193
115030121940
115045121955
115055121965
...@@ -11527,29 +12218,50 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11527,29 +12218,50 @@ sparc-linux-gnu sparcel-linux-gnu
1152712218
1152812219
11529201222020
12221
12222
115300122230
115311122241
115325122255
115330122260
1153412227
1153512228
12229
12230
12231
115360122320
12233
12234
12235
11537271223627
1153812237
11539271223827
12239
11540271224027
11541271224127
1154212242
11543271224327
12244
11544271224527
11545271224627
1154612247
11547271224827
1154812249
12250
11549271225127
11550351225235
1155112253
1155212254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
115535122655
115540122660
11555271226727
...@@ -11560,6 +12272,7 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11560,6 +12272,7 @@ sparc-linux-gnu sparcel-linux-gnu
1156012272
1156112273
1156212274
12275
115630122760
11564161227716
11565161227816
...@@ -11587,9 +12300,16 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11587,9 +12300,16 @@ sparc-linux-gnu sparcel-linux-gnu
1158712300
1158812301
1158912302
12303
12304
12305
12306
12307
12308
11590271230927
1159112310
11592271231127
12312
11593271231327
115940123140
115951123151
...@@ -11598,6 +12318,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11598,6 +12318,8 @@ sparc-linux-gnu sparcel-linux-gnu
11598161231816
115995123195
1160015 161232015 16
12321
12322
116010123230
116025123245
116030123250
...@@ -11607,10 +12329,17 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11607,10 +12329,17 @@ sparc-linux-gnu sparcel-linux-gnu
116075123295
116080123300
116091123311
12332
12333
12334
12335
116105123365
11611161233716
12338
12339
116125123405
116135123415
12342
116140123430
116151 5123441 5
11616161234516
...@@ -11630,6 +12359,7 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11630,6 +12359,7 @@ sparc-linux-gnu sparcel-linux-gnu
11630161235916
116315123605
116320123610
12362
116330123630
116340123640
11635151236515
...@@ -11645,7 +12375,9 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11645,7 +12375,9 @@ sparc-linux-gnu sparcel-linux-gnu
11645271237527
1164612376
11647271237727
12378
11648271237927
12380
116491123811
116501123821
116511123831
...@@ -11669,17 +12401,29 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11669,17 +12401,29 @@ sparc-linux-gnu sparcel-linux-gnu
1166912401
116700 16124020 16
11671191240319
12404
11672191240519
12406
11673191240719
12408
11674191240919
12410
11675191241119
12412
11676191241319
12414
11677191241519
12416
11678191241719
12418
11679191241919
12420
11680191242119
12422
11681191242319
12424
11682191242519
12426
116831124271
116841124281
11685301242930
...@@ -11707,23 +12451,29 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11707,23 +12451,29 @@ sparc-linux-gnu sparcel-linux-gnu
11707271245127
1170812452
11709271245327
12454
11710271245527
11711271245627
1171212457
11713271245827
12459
11714271246027
11715271246127
1171612462
11717271246327
12464
11718271246527
117191124661
117201124671
117211124681
1172212469
1172312470
12471
11724271247227
1172512473
11726271247427
12475
12476
11727271247727
117281124781
117290124790
...@@ -11739,23 +12489,34 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11739,23 +12489,34 @@ sparc-linux-gnu sparcel-linux-gnu
117390124890
117400124900
117411124911
1249242
117421124931
117430124940
117440124950
117453 11124963 8 11
12497
12498
12499
11746271250027
1174712501
11748271250227
12503
11749271250427
12505
11750271250627
1175112507
11752271250827
12509
11753271251027
11754271251127
1175512512
12513
11756271251427
12515
11757271251627
11758231251723
12518
12519
117590125200
1176012521
1176112522
...@@ -11794,17 +12555,26 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11794,17 +12555,26 @@ sparc-linux-gnu sparcel-linux-gnu
1179412555
1179512556
1179612557
12558
117970125590
117980125600
11799191256119
1180012562
1180112563
12564
11802111256511
1180312566
1180412567
1180512568
1180612569
12570
118071125711
12572
12573
12574
12575
12576
12577
118085125785
11809161257916
11810161258016
...@@ -11917,7 +12687,11 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11917,7 +12687,11 @@ sparc-linux-gnu sparcel-linux-gnu
119170126870
119180126880
11919201268920
12690
12691
11920201269220
12693
12694
119210126950
119225126965
11923191269719
...@@ -11933,6 +12707,7 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11933,6 +12707,7 @@ sparc-linux-gnu sparcel-linux-gnu
11933271270727
1193412708
11935271270927
12710
11936271271127
1193712712
11938281271328
...@@ -11940,7 +12715,10 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11940,7 +12715,10 @@ sparc-linux-gnu sparcel-linux-gnu
11940161271516
11941161271616
1194215 161271715 16
12718
119430 16127190 16
12720
12721
119440127220
119450127230
119460127240
...@@ -11971,6 +12749,11 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11971,6 +12749,11 @@ sparc-linux-gnu sparcel-linux-gnu
11971141274914
11972161275016
119731 5127511 5
12752
12753
12754
12755
12756
119741127571
119750127580
119760127590
...@@ -11989,12 +12772,17 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -11989,12 +12772,17 @@ sparc-linux-gnu sparcel-linux-gnu
11989271277227
1199012773
11991271277427
12775
11992271277627
12777
119935127785
119945127795
119955127805
119960127810
119975127825
12783
12784
12785
119988127868
119998127878
120008127888
...@@ -12002,7 +12790,11 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12002,7 +12790,11 @@ sparc-linux-gnu sparcel-linux-gnu
120020127900
12003271279127
12004271279227
12793
12005271279427
12795
12796
12797
12006191279819
12007181279918
12008191280019
...@@ -12016,6 +12808,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12016,6 +12808,8 @@ sparc-linux-gnu sparcel-linux-gnu
120160128080
120170128090
120185128105
12811
12812
120190128130
120200128140
120210128150
...@@ -12026,24 +12820,34 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12026,24 +12820,34 @@ sparc-linux-gnu sparcel-linux-gnu
1202612820
12027161282116
12028331282233
12823
120290128240
120300128250
120314128264
1203212827
1203312828
1203412829
12830
12035271283127
1203612832
12037271283327
12834
12038271283527
12836
1203915 161283715 16
12838
12839
1204015 161284015 16
12841
12842
12041271284327
1204212844
1204312845
12044271284627
12847
12045331284833
1204612849
12850
12047161285116
1204812852
120495128535
...@@ -12076,6 +12880,9 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12076,6 +12880,9 @@ sparc-linux-gnu sparcel-linux-gnu
120760128800
120770128810
120781 16128821 16
12883
12884
12885
12079121288612
1208012887
120811128881
...@@ -12110,6 +12917,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12110,6 +12917,8 @@ sparc-linux-gnu sparcel-linux-gnu
1211012917
121110129180
121121129191
12920
12921
121130129220
121142129232
121150129240
...@@ -12129,48 +12938,93 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12129,48 +12938,93 @@ sparc-linux-gnu sparcel-linux-gnu
1212912938
1213012939
12131161294016
12941
12942
12943
121325129445
121335129455
12134161294616
12947
12948
121350129490
12950
12951
12952
121360129530
12137121295412
1213812955
1213912956
121401129571
121411129581
12959
12960
121421129611
121431129621
121441129631
121451129641
121461129651
1214712966
12967
12148161296816
121490129690
1215012970
1215112971
121520129720
1215312973
12974
12975
121540129760
1215512977
1215612978
12157121297912
12158201298020
12981
12982
12159201298320
12984
12985
12986
12987
121603129883
1216115 161298915 16
12990
12991
121620 16129920 16
12993
12163161299416
12995
12996
12997
1216415 161299815 16
12999
13000
13001
121650 16130020 16
1216615 161300315 16
13004
13005
1216715 161300615 16
13007
13008
121680 16130090 16
13010
12169161301116
13012
13013
13014
12170161301516
13016
13017
13018
13019
12171161302016
13021
13022
13023
121720130240
121730130250
13026
13027
12174161302816
12175161302916
12176161303016
...@@ -12189,6 +13043,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12189,6 +13043,8 @@ sparc-linux-gnu sparcel-linux-gnu
1218913043
121900130440
121911130451
13046
13047
121920130480
121931130491
121940 16130500 16
...@@ -12210,7 +13066,10 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12210,7 +13066,10 @@ sparc-linux-gnu sparcel-linux-gnu
12210161306616
122115130675
12212161306816
13069
13070
122130130710
13072
122145130735
122155130745
122160130750
...@@ -12223,14 +13082,17 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12223,14 +13082,17 @@ sparc-linux-gnu sparcel-linux-gnu
12223271308227
1222413083
12225271308427
13085
12226271308627
12227271308727
1222813088
12229271308927
13090
12230271309127
12231271309227
1223213093
12233271309427
13095
12234271309627
122351130971
122361130981
...@@ -12828,7 +13690,7 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -12828,7 +13690,7 @@ sparc-linux-gnu sparcel-linux-gnu
128280136900
128290 39136910 39
128301136921
128311136931 42
12832371369437
12833371369537
12834371369637
...@@ -13954,17 +14816,19 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -13954,17 +14816,19 @@ sparc-linux-gnu sparcel-linux-gnu
139540148160
139550148170
139560148180
1481942
139575148205
139581148211
139591148221
139600 1148230 1
1396114 151482414 15 42
139620148250
139631148261
139640148270
139650148280
139660148290
139670148300
1483142
139685 14148325 14
139691148331
139701 14148341 14
...@@ -13994,9 +14858,9 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -13994,9 +14858,9 @@ sparc-linux-gnu sparcel-linux-gnu
139940148580
139950148590
139960148600
1399714 151486114 15 42
13998301486230
139998148638 42
140001148641
140015148655
14002241486624
...@@ -14062,7 +14926,7 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -14062,7 +14926,7 @@ sparc-linux-gnu sparcel-linux-gnu
140620149260
14063151492715
140640149280
140650149290 42
14066231493023
140675149315
140685149325
...@@ -14367,12 +15231,14 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -14367,12 +15231,14 @@ sparc-linux-gnu sparcel-linux-gnu
143670152310
143680152320
143690152330
1523442
143700152350
143710152360
143720152370
143730152380
143740152390
143750152400
1524142
143760152420
143770152430
143780152440
...@@ -14478,6 +15344,8 @@ sparc-linux-gnu sparcel-linux-gnu...@@ -14478,6 +15344,8 @@ sparc-linux-gnu sparcel-linux-gnu
144780153440
14479181534518
144800153460
1534742
1534842
144810 16153490 16
1448212 161535012 16
14483351535135
...@@ -15168,7 +16036,9 @@ sparcv9-linux-gnu...@@ -15168,7 +16036,9 @@ sparcv9-linux-gnu
15168271603627
1516916037
15170271603827
16039
15171271604027
16041
15172271604227
1517316043
1517416044
...@@ -15197,6 +16067,8 @@ sparcv9-linux-gnu...@@ -15197,6 +16067,8 @@ sparcv9-linux-gnu
151975160675
151985160685
1519916069
16070
16071
152005160725
152015160735
152025160745
...@@ -15205,43 +16077,79 @@ sparcv9-linux-gnu...@@ -15205,43 +16077,79 @@ sparcv9-linux-gnu
15205271607727
1520616078
15207271607927
16080
16081
15208271608227
152095160835
15210201608420
16085
16086
152115160875
152125160885
152135160895
15214271609027
1521516091
15216271609227
16093
15217271609427
15218271609527
1521916096
15220271609727
16098
15221271609927
1522216100
1522316101
1522416102
16103
152255161045
152265161055
152275161065
152285161075
152295161085
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
152305161235
15231151612415
16125
152325161265
152335161275
16128
152345161295
16130
152355161315
152365161325
1523716133
152385161345
15239161613516
16136
152405161375
16138
15241271613927
1524216140
15243271614127
16142
15244271614327
16144
16145
16146
16147
16148
16149
16150
16151
16152
152455161535
152465161545
152475161555
...@@ -15269,29 +16177,50 @@ sparcv9-linux-gnu...@@ -15269,29 +16177,50 @@ sparcv9-linux-gnu
1526916177
1527016178
15271201617920
16180
16181
152725161825
152735161835
152745161845
152755161855
1527616186
1527716187
16188
16189
16190
152785161915
16192
16193
16194
15279271619527
1528016196
15281271619727
16198
15282271619927
15283271620027
1528416201
15285271620227
16203
15286271620427
15287271620527
1528816206
15289271620727
1529016208
16209
15291271621027
15292351621135
1529316212
1529416213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
152955162245
152965162255
15297271622627
...@@ -15302,6 +16231,7 @@ sparcv9-linux-gnu...@@ -15302,6 +16231,7 @@ sparcv9-linux-gnu
1530216231
1530316232
1530416233
16234
153055162355
15306161623616
15307161623716
...@@ -15329,9 +16259,16 @@ sparcv9-linux-gnu...@@ -15329,9 +16259,16 @@ sparcv9-linux-gnu
1532916259
1533016260
1533116261
16262
16263
16264
16265
16266
16267
15332271626827
1533316269
15334271627027
16271
15335271627227
153365162735
153375162745
...@@ -15340,6 +16277,8 @@ sparcv9-linux-gnu...@@ -15340,6 +16277,8 @@ sparcv9-linux-gnu
153405162775
153415162785
15342151627915
16280
16281
153435162825
153445162835
153455162845
...@@ -15349,10 +16288,17 @@ sparcv9-linux-gnu...@@ -15349,10 +16288,17 @@ sparcv9-linux-gnu
153495162885
153505162895
153515162905
16291
16292
16293
16294
153525162955
15353161629616
16297
16298
153545162995
153555163005
16301
153565163025
153575163035
15358161630416
...@@ -15372,6 +16318,7 @@ sparcv9-linux-gnu...@@ -15372,6 +16318,7 @@ sparcv9-linux-gnu
15372161631816
153735163195
153745163205
16321
153755163225
153765163235
15377151632415
...@@ -15387,7 +16334,9 @@ sparcv9-linux-gnu...@@ -15387,7 +16334,9 @@ sparcv9-linux-gnu
15387271633427
1538816335
15389271633627
16337
15390271633827
16339
153915163405
153925163415
153935163425
...@@ -15411,17 +16360,29 @@ sparcv9-linux-gnu...@@ -15411,17 +16360,29 @@ sparcv9-linux-gnu
1541116360
154125163615
15413191636219
16363
15414191636419
16365
15415191636619
16367
15416191636819
16369
15417191637019
16371
15418191637219
16373
15419191637419
16375
15420191637619
16377
15421191637819
16379
15422191638019
16381
15423191638219
16383
15424191638419
16385
154255163865
154265163875
15427301638830
...@@ -15449,23 +16410,29 @@ sparcv9-linux-gnu...@@ -15449,23 +16410,29 @@ sparcv9-linux-gnu
15449271641027
1545016411
15451271641227
16413
15452271641427
15453271641527
1545416416
15455271641727
16418
15456271641927
15457271642027
1545816421
15459271642227
16423
15460271642427
154615164255
154625164265
154635164275
1546416428
1546516429
16430
15466271643127
1546716432
15468271643327
16434
16435
15469271643627
154705164375
154715164385
...@@ -15481,23 +16448,34 @@ sparcv9-linux-gnu...@@ -15481,23 +16448,34 @@ sparcv9-linux-gnu
154815164485
154825164495
154835164505
1645142
154845164525
154855164535
154865164545
1548711164558 11
16456
16457
16458
15488271645927
1548916460
15490271646127
16462
15491271646327
16464
15492271646527
1549316466
15494271646727
16468
15495271646927
15496271647027
1549716471
16472
15498271647327
16474
15499271647527
15500231647623
16477
16478
155015164795
1550216480
1550316481
...@@ -15536,17 +16514,26 @@ sparcv9-linux-gnu...@@ -15536,17 +16514,26 @@ sparcv9-linux-gnu
1553616514
1553716515
1553816516
16517
155395165185
155405165195
15541191652019
1554216521
1554316522
16523
15544111652411
1554516525
1554616526
1554716527
1554816528
16529
155495165305
16531
16532
16533
16534
16535
16536
155505165375
1555116538
1555216539
...@@ -15659,7 +16646,11 @@ sparcv9-linux-gnu...@@ -15659,7 +16646,11 @@ sparcv9-linux-gnu
156595166465
156605166475
15661201664820
16649
16650
15662201665120
16652
16653
156635166545
156645166555
15665191665619
...@@ -15675,6 +16666,7 @@ sparcv9-linux-gnu...@@ -15675,6 +16666,7 @@ sparcv9-linux-gnu
15675271666627
1567616667
15677271666827
16669
15678271667027
1567916671
15680281667228
...@@ -15682,7 +16674,10 @@ sparcv9-linux-gnu...@@ -15682,7 +16674,10 @@ sparcv9-linux-gnu
15682161667416
15683161667516
15684151667615
16677
156855166785
16679
16680
156865166815
156875166825
156885166835
...@@ -15713,6 +16708,11 @@ sparcv9-linux-gnu...@@ -15713,6 +16708,11 @@ sparcv9-linux-gnu
15713141670814
15714161670916
157155167105
16711
16712
16713
16714
16715
157165167165
157175167175
157185167185
...@@ -15731,12 +16731,17 @@ sparcv9-linux-gnu...@@ -15731,12 +16731,17 @@ sparcv9-linux-gnu
15731271673127
1573216732
15733271673327
16734
15734271673527
16736
157355167375
157365167385
157375167395
157385167405
157395167415
16742
16743
16744
157408167458
157418167468
157428167478
...@@ -15744,7 +16749,11 @@ sparcv9-linux-gnu...@@ -15744,7 +16749,11 @@ sparcv9-linux-gnu
157445167495
15745271675027
15746271675127
16752
15747271675327
16754
16755
16756
15748191675719
15749181675818
15750191675919
...@@ -15758,6 +16767,8 @@ sparcv9-linux-gnu...@@ -15758,6 +16767,8 @@ sparcv9-linux-gnu
157585167675
157595167685
157605167695
16770
16771
157615167725
157625167735
157635167745
...@@ -15768,24 +16779,34 @@ sparcv9-linux-gnu...@@ -15768,24 +16779,34 @@ sparcv9-linux-gnu
1576816779
157695167805
15770331678133
16782
157715167835
157725167845
157735167855
1577416786
1577516787
1577616788
16789
15777271679027
1577816791
15779271679227
16793
15780271679427
16795
15781151679615
16797
16798
15782151679915
16800
16801
15783271680227
1578416803
1578516804
15786271680527
16806
15787271680727
1578816808
16809
15789161681016
1579016811
157915168125
...@@ -15818,6 +16839,9 @@ sparcv9-linux-gnu...@@ -15818,6 +16839,9 @@ sparcv9-linux-gnu
158185168395
158195168405
158205168415
16842
16843
16844
15821121684512
1582216846
158235168475
...@@ -15852,6 +16876,8 @@ sparcv9-linux-gnu...@@ -15852,6 +16876,8 @@ sparcv9-linux-gnu
1585216876
158535168775
158545168785
16879
16880
158555168815
158565168825
158575168835
...@@ -15871,48 +16897,93 @@ sparcv9-linux-gnu...@@ -15871,48 +16897,93 @@ sparcv9-linux-gnu
1587116897
1587216898
15873161689916
16900
16901
16902
158745169035
158755169045
15876161690516
16906
16907
158775169085
16909
16910
16911
158785169125
15879121691312
1588016914
1588116915
158825169165
158835169175
16918
16919
158845169205
158855169215
158865169225
158875169235
158885169245
1588916925
16926
15890161692716
158915169285
1589216929
1589316930
158945169315
1589516932
16933
16934
158965169355
1589716936
1589816937
15899121693812
15900201693920
16940
16941
15901201694220
16943
16944
16945
16946
159025169475
15903151694815
16949
16950
159045169515
16952
15905161695316
16954
16955
16956
15906151695715
16958
16959
16960
159075169615
15908151696215
16963
16964
15909151696515
16966
16967
159105169685
16969
15911161697016
16971
16972
16973
15912161697416
16975
16976
16977
16978
15913161697916
16980
16981
16982
159145169835
159155169845
16985
16986
15916161698716
15917161698816
15918161698916
...@@ -15931,6 +17002,8 @@ sparcv9-linux-gnu...@@ -15931,6 +17002,8 @@ sparcv9-linux-gnu
1593117002
159325170035
159335170045
17005
17006
159345170075
159355170085
159365170095
...@@ -15952,7 +17025,10 @@ sparcv9-linux-gnu...@@ -15952,7 +17025,10 @@ sparcv9-linux-gnu
15952161702516
159535170265
15954161702716
17028
17029
159555170305
17031
159565170325
159575170335
159585170345
...@@ -15965,14 +17041,17 @@ sparcv9-linux-gnu...@@ -15965,14 +17041,17 @@ sparcv9-linux-gnu
15965271704127
1596617042
15967271704327
17044
15968271704527
15969271704627
1597017047
15971271704827
17049
15972271705027
15973271705127
1597417052
15975271705327
17054
15976271705527
159775170565
159785170575
...@@ -16570,7 +17649,7 @@ sparcv9-linux-gnu...@@ -16570,7 +17649,7 @@ sparcv9-linux-gnu
165705176495
165715 39176505 39
165725176515
165735176525 42
16574371765337
16575371765437
16576371765537
...@@ -17696,17 +18775,19 @@ sparcv9-linux-gnu...@@ -17696,17 +18775,19 @@ sparcv9-linux-gnu
176965187755
176975187765
176985187775
1877842
176995187795
177005187805
177015187815
177025187825
1770314 151878314 15 42
177045187845
177055187855
177065187865
177075187875
177085187885
177095187895
1879042
177105 14187915 14
177115187925
177125 14187935 14
...@@ -17736,9 +18817,9 @@ sparcv9-linux-gnu...@@ -17736,9 +18817,9 @@ sparcv9-linux-gnu
177365188175
177375188185
177385188195
1773914 151882014 15 42
17740301882130
177418188228 42
177425188235
177435188245
17744241882524
...@@ -17804,7 +18885,7 @@ sparcv9-linux-gnu...@@ -17804,7 +18885,7 @@ sparcv9-linux-gnu
178045188855
17805151888615
178065188875
178075188885 42
17808231888923
178095188905
178105188915
...@@ -18109,12 +19190,14 @@ sparcv9-linux-gnu...@@ -18109,12 +19190,14 @@ sparcv9-linux-gnu
181095191905
181105191915
181115191925
1919342
181125191945
181135191955
181145191965
181155191975
181165191985
181175191995
1920042
181185192015
181195192025
181205192035
...@@ -18220,6 +19303,8 @@ sparcv9-linux-gnu...@@ -18220,6 +19303,8 @@ sparcv9-linux-gnu
182205193035
18221181930418
182225193055
1930642
1930742
182235193085
18224121930912
18225351931035
...@@ -18910,7 +19995,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -18910,7 +19995,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
18910271999527
1891119996
18912271999727
19998
18913271999927
20000
18914272000127
1891520002
1891620003
...@@ -18939,6 +20026,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -18939,6 +20026,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1893920026
1894020027
1894120028
20029
20030
189420200310
189430200320
189440200330
...@@ -18947,43 +20036,79 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -18947,43 +20036,79 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
18947272003627
1894820037
18949272003827
20039
20040
18950272004127
189515200425
18952202004320
20044
20045
189535200465
189540200470
189550200480
18956272004927
1895720050
18958272005127
20052
18959272005327
18960272005427
1896120055
18962272005627
20057
18963272005827
1896420059
1896520060
1896620061
20062
189675200635
189685200645
189695200655
189700200660
189710200670
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
189720200820
18973152008315
20084
189745200855
189755200865
20087
189765200885
20089
189770200900
189780200910
1897920092
189800200930
18981162009416
20095
189820200960
20097
18983272009827
1898420099
18985272010027
20101
18986272010227
20103
20104
20105
20106
20107
20108
20109
20110
20111
189870201120
189885201135
189895201145
...@@ -19011,29 +20136,50 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19011,29 +20136,50 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1901120136
1901220137
19013202013820
20139
20140
190140201410
190155201425
190165201435
190170201440
1901820145
1901920146
20147
20148
20149
190200201500
20151
20152
20153
19021272015427
1902220155
19023272015627
20157
19024272015827
19025272015927
1902620160
19027272016127
20162
19028272016327
19029272016427
1903020165
19031272016627
1903220167
20168
19033272016927
19034352017035
1903520171
1903620172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
190375201835
190380201840
19039272018527
...@@ -19044,6 +20190,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19044,6 +20190,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1904420190
1904520191
1904620192
20193
190470201940
19048162019516
19049162019616
...@@ -19071,9 +20218,16 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19071,9 +20218,16 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1907120218
1907220219
1907320220
20221
20222
20223
20224
20225
20226
19074272022727
1907520228
19076272022927
20230
19077272023127
190780202320
190795202335
...@@ -19082,6 +20236,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19082,6 +20236,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
190825202365
190835202375
19084152023815
20239
20240
190850202410
190865202425
190870202430
...@@ -19091,10 +20247,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19091,10 +20247,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
190915202475
190920202480
190935202495
20250
20251
20252
20253
190945202545
19095162025516
20256
20257
190965202585
190975202595
20260
190980202610
190995202625
19100162026316
...@@ -19114,6 +20277,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19114,6 +20277,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19114162027716
191155202785
191160202790
20280
191170202810
191180202820
19119152028315
...@@ -19129,7 +20293,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19129,7 +20293,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19129272029327
1913020294
19131272029527
20296
19132272029727
20298
191335202995
191345203005
191355203015
...@@ -19153,17 +20319,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19153,17 +20319,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1915320319
191540203200
19155192032119
20322
19156192032319
20324
19157192032519
20326
19158192032719
20328
19159192032919
20330
19160192033119
20332
19161192033319
20334
19162192033519
20336
19163192033719
20338
19164192033919
20340
19165192034119
20342
19166192034319
20344
191675203455
191685203465
19169302034730
...@@ -19191,23 +20369,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19191,23 +20369,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19191272036927
1919220370
19193272037127
20372
19194272037327
19195272037427
1919620375
19197272037627
20377
19198272037827
19199272037927
1920020380
19201272038127
20382
19202272038327
192035203845
192045203855
192055203865
1920620387
1920720388
20389
19208272039027
1920920391
19210272039227
20393
20394
19211272039527
192125203965
192130203970
...@@ -19223,23 +20407,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19223,23 +20407,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
192230204070
192240204080
192255204095
2041042
192265204115
192270204120
192280204130
1922911204148 11
20415
20416
20417
19230272041827
1923120419
19232272042027
20421
19233272042227
20423
19234272042427
1923520425
19236272042627
20427
19237272042827
19238272042927
1923920430
20431
19240272043227
20433
19241272043427
19242232043523
20436
20437
192430204380
1924420439
1924520440
...@@ -19278,17 +20473,26 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19278,17 +20473,26 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1927820473
1927920474
1928020475
20476
192810204770
192820204780
19283192047919
1928420480
1928520481
20482
19286112048311
1928720484
1928820485
1928920486
1929020487
20488
192915204895
20490
20491
20492
20493
20494
20495
192925204965
1929320497
1929420498
...@@ -19401,7 +20605,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19401,7 +20605,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194010206050
194020206060
19403202060720
20608
20609
19404202061020
20611
20612
194050206130
194065206145
19407192061519
...@@ -19417,6 +20625,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19417,6 +20625,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19417272062527
1941820626
19419272062727
20628
19420272062927
1942120630
19422282063128
...@@ -19424,7 +20633,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19424,7 +20633,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19424162063316
19425162063416
19426152063515
20636
194270206370
20638
20639
194280206400
194290206410
194300206420
...@@ -19455,6 +20667,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19455,6 +20667,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19455142066714
19456162066816
194575206695
20670
20671
20672
20673
20674
194585206755
194590206760
194600206770
...@@ -19473,12 +20690,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19473,12 +20690,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19473272069027
1947420691
19475272069227
20693
19476272069427
20695
194775206965
194785206975
194795206985
194800206990
194815207005
20701
20702
20703
194828207048
194838207058
194848207068
...@@ -19486,7 +20708,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19486,7 +20708,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194860207080
19487272070927
19488272071027
20711
19489272071227
20713
20714
20715
19490192071619
19491182071718
19492192071819
...@@ -19500,6 +20726,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19500,6 +20726,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
195000207260
195010207270
195025207285
20729
20730
195030207310
195040207320
195050207330
...@@ -19510,24 +20738,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19510,24 +20738,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1951020738
195115207395
19512332074033
20741
195130207420
195140207430
195155207445
1951620745
1951720746
1951820747
20748
19519272074927
1952020750
19521272075127
20752
19522272075327
20754
19523152075515
20756
20757
19524152075815
20759
20760
19525272076127
1952620762
1952720763
19528272076427
20765
19529272076627
1953020767
20768
19531162076916
19532162077016
195335207715
...@@ -19560,6 +20798,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19560,6 +20798,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
195600207980
195610207990
195625208005
20801
20802
20803
19563122080412
1956420805
195655208065
...@@ -19594,6 +20835,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19594,6 +20835,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1959420835
195950208360
195965208375
20838
20839
195970208400
195985208415
195990208420
...@@ -19613,48 +20856,93 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19613,48 +20856,93 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1961320856
1961420857
19615162085816
20859
20860
20861
196165208625
196175208635
19618162086416
20865
20866
196190208670
20868
20869
20870
196200208710
19621122087212
1962220873
1962320874
196245208755
196255208765
20877
20878
196265208795
196275208805
196285208815
196295208825
196305208835
1963120884
20885
19632162088616
196330208870
1963420888
1963520889
196360208900
1963720891
20892
20893
196380208940
1963920895
1964020896
19641122089712
19642202089820
20899
20900
19643202090120
20902
20903
20904
20905
196445209065
19645152090715
20908
20909
196460209100
20911
19647162091216
20913
20914
20915
19648152091615
20917
20918
20919
196490209200
19650152092115
20922
20923
19651152092415
20925
20926
196520209270
20928
19653162092916
20930
20931
20932
19654162093316
20934
20935
20936
20937
19655162093816
20939
20940
20941
196560209420
196570209430
20944
20945
19658162094616
19659162094716
19660162094816
...@@ -19673,6 +20961,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19673,6 +20961,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1967320961
196740209620
196755209635
20964
20965
196760209660
196775209675
196780209680
...@@ -19694,7 +20984,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19694,7 +20984,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19694162098416
196955209855
19696162098616
20987
20988
196970209890
20990
196985209915
196995209925
197000209930
...@@ -19707,14 +21000,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -19707,14 +21000,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19707272100027
1970821001
19709272100227
21003
19710272100427
19711272100527
1971221006
19713272100727
21008
19714272100927
19715272101027
1971621011
19717272101227
21013
19718272101427
197195210155
197205210165
...@@ -20312,7 +21608,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -20312,7 +21608,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
203120216080
203130 39216090 39
203145216105
203155216115 42
20316372161237
20317372161337
20318372161437
...@@ -21438,17 +22734,19 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -21438,17 +22734,19 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
214380227340
214390227350
214400227360
2273742
214415227385
214425227395
214435227405
214440 5227410 5
2144514 152274214 15 42
214460227430
214475227445
214480227450
214490227460
214500227470
214510227480
2274942
214525 14227505 14
214535227515
214545 14227525 14
...@@ -21478,9 +22776,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -21478,9 +22776,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
214780227760
214790227770
214800227780
2148114 152277914 15 42
21482302278030
214838227818 42
214845227825
214855227835
21486242278424
...@@ -21546,7 +22844,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -21546,7 +22844,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
215460228440
21547152284515
215480228460
215490228470 42
21550232284823
215515228495
215525228505
...@@ -21851,12 +23149,14 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -21851,12 +23149,14 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
218510231490
218520231500
218530231510
2315242
218540231530
218550231540
218560231550
218570231560
218580231570
218590231580
2315942
218600231600
218610231610
218620231620
...@@ -21962,6 +23262,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64...@@ -21962,6 +23262,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
219620232620
21963182326318
219640232640
2326542
2326642
219650232670
21966122326812
21967352326935
...@@ -22652,7 +23954,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22652,7 +23954,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22652272395427
2265323955
22654272395627
23957
22655272395827
23959
22656272396027
2265723961
2265823962
...@@ -22681,6 +23985,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22681,6 +23985,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2268123985
2268223986
2268323987
23988
23989
226840239900
226850239910
226860239920
...@@ -22689,43 +23995,79 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22689,43 +23995,79 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22689272399527
2269023996
22691272399727
23998
23999
22692272400027
226935240015
22694202400220
24003
24004
226955240055
226960240060
226970240070
22698272400827
2269924009
22700272401027
24011
22701272401227
22702272401327
2270324014
22704272401527
24016
22705272401727
2270624018
2270724019
2270824020
24021
227095240225
227105240235
227115240245
227120240250
227130240260
24027
24028
24029
24030
24031
24032
24033
24034
24035
24036
24037
24038
24039
24040
227140240410
22715152404215
24043
227165240445
227175240455
24046
227185240475
24048
227190240490
227200240500
2272124051
227220240520
22723162405316
24054
227240240550
24056
22725272405727
2272624058
22727272405927
24060
22728272406127
24062
24063
24064
24065
24066
24067
24068
24069
24070
227290240710
227305240725
227315240735
...@@ -22753,29 +24095,50 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22753,29 +24095,50 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2275324095
2275424096
22755202409720
24098
24099
227560241000
227575241015
227585241025
227590241030
2276024104
2276124105
24106
24107
24108
227620241090
24110
24111
24112
22763272411327
2276424114
22765272411527
24116
22766272411727
22767272411827
2276824119
22769272412027
24121
22770272412227
22771272412327
2277224124
22773272412527
2277424126
24127
22775272412827
22776352412935
2277724130
2277824131
24132
24133
24134
24135
24136
24137
24138
24139
24140
24141
227795241425
227800241430
22781272414427
...@@ -22786,6 +24149,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22786,6 +24149,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2278624149
2278724150
2278824151
24152
227890241530
22790162415416
22791162415516
...@@ -22813,9 +24177,16 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22813,9 +24177,16 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2281324177
2281424178
2281524179
24180
24181
24182
24183
24184
24185
22816272418627
2281724187
22818272418827
24189
22819272419027
228200241910
228215241925
...@@ -22824,6 +24195,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22824,6 +24195,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
228245241955
228255241965
22826152419715
24198
24199
228270242000
228285242015
228290242020
...@@ -22833,10 +24206,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22833,10 +24206,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
228335242065
228340242070
228355242085
24209
24210
24211
24212
228365242135
22837162421416
24215
24216
228385242175
228395242185
24219
228400242200
228415242215
22842162422216
...@@ -22856,6 +24236,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22856,6 +24236,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22856162423616
228575242375
228580242380
24239
228590242400
228600242410
22861152424215
...@@ -22871,7 +24252,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22871,7 +24252,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22871272425227
2287224253
22873272425427
24255
22874272425627
24257
228755242585
228765242595
228775242605
...@@ -22895,17 +24278,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22895,17 +24278,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2289524278
228960242790
22897192428019
24281
22898192428219
24283
22899192428419
24285
22900192428619
24287
22901192428819
24289
22902192429019
24291
22903192429219
24293
22904192429419
24295
22905192429619
24297
22906192429819
24299
22907192430019
24301
22908192430219
24303
229095243045
229105243055
22911302430630
...@@ -22933,23 +24328,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22933,23 +24328,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22933272432827
2293424329
22935272433027
24331
22936272433227
22937272433327
2293824334
22939272433527
24336
22940272433727
22941272433827
2294224339
22943272434027
24341
22944272434227
229455243435
229465243445
229475243455
2294824346
2294924347
24348
22950272434927
2295124350
22952272435127
24352
24353
22953272435427
229545243555
229550243560
...@@ -22965,23 +24366,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -22965,23 +24366,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
229650243660
229660243670
229675243685
2436942
229685243705
229690243710
229700243720
2297111243738 11
24374
24375
24376
22972272437727
2297324378
22974272437927
24380
22975272438127
24382
22976272438327
2297724384
22978272438527
24386
22979272438727
22980272438827
2298124389
24390
22982272439127
24392
22983272439327
22984232439423
24395
24396
229850243970
2298624398
2298724399
...@@ -23020,17 +24432,26 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23020,17 +24432,26 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2302024432
2302124433
2302224434
24435
230230244360
230240244370
23025192443819
2302624439
2302724440
24441
23028112444211
2302924443
2303024444
2303124445
2303224446
24447
230335244485
24449
24450
24451
24452
24453
24454
230345244555
2303524456
2303624457
...@@ -23143,7 +24564,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23143,7 +24564,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
231430245640
231440245650
23145202456620
24567
24568
23146202456920
24570
24571
231470245720
231485245735
23149192457419
...@@ -23159,6 +24584,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23159,6 +24584,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23159272458427
2316024585
23161272458627
24587
23162272458827
2316324589
23164282459028
...@@ -23166,7 +24592,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23166,7 +24592,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23166162459216
23167162459316
23168152459415
24595
231690245960
24597
24598
231700245990
231710246000
231720246010
...@@ -23197,6 +24626,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23197,6 +24626,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23197142462614
23198162462716
231995246285
24629
24630
24631
24632
24633
232005246345
232010246350
232020246360
...@@ -23215,12 +24649,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23215,12 +24649,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23215272464927
2321624650
23217272465127
24652
23218272465327
24654
232195246555
232205246565
232215246575
232220246580
232235246595
24660
24661
24662
232248246638
232258246648
232268246658
...@@ -23228,7 +24667,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23228,7 +24667,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
232280246670
23229272466827
23230272466927
24670
23231272467127
24672
24673
24674
23232192467519
23233182467618
23234192467719
...@@ -23242,6 +24685,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23242,6 +24685,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
232420246850
232430246860
232445246875
24688
24689
232450246900
232460246910
232470246920
...@@ -23252,24 +24697,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23252,24 +24697,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2325224697
232535246985
23254332469933
24700
232550247010
232560247020
232575247035
2325824704
2325924705
2326024706
24707
23261272470827
2326224709
23263272471027
24711
23264272471227
24713
23265152471415
24715
24716
23266152471715
24718
24719
23267272472027
2326824721
2326924722
23270272472327
24724
23271272472527
2327224726
24727
23273162472816
23274162472916
232755247305
...@@ -23302,6 +24757,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23302,6 +24757,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
233020247570
233030247580
233045247595
24760
24761
24762
23305122476312
2330624764
233075247655
...@@ -23336,6 +24794,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23336,6 +24794,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2333624794
233370247950
233385247965
24797
24798
233390247990
233405248005
233410248010
...@@ -23355,48 +24815,93 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23355,48 +24815,93 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2335524815
2335624816
23357162481716
24818
24819
24820
233585248215
233595248225
23360162482316
24824
24825
233610248260
24827
24828
24829
233620248300
23363122483112
2336424832
2336524833
233665248345
233675248355
24836
24837
233685248385
233695248395
233705248405
233715248415
233725248425
2337324843
24844
23374162484516
233750248460
2337624847
2337724848
233780248490
2337924850
24851
24852
233800248530
2338124854
2338224855
23383122485612
23384202485720
24858
24859
23385202486020
24861
24862
24863
24864
233865248655
23387152486615
24867
24868
233880248690
24870
23389162487116
24872
24873
24874
23390152487515
24876
24877
24878
233910248790
23392152488015
24881
24882
23393152488315
24884
24885
233940248860
24887
23395162488816
24889
24890
24891
23396162489216
24893
24894
24895
24896
23397162489716
24898
24899
24900
233980249010
233990249020
24903
24904
23400162490516
23401162490616
23402162490716
...@@ -23415,6 +24920,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23415,6 +24920,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2341524920
234160249210
234175249225
24923
24924
234180249250
234195249265
234200249270
...@@ -23436,7 +24943,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23436,7 +24943,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23436162494316
234375249445
23438162494516
24946
24947
234390249480
24949
234405249505
234415249515
234420249520
...@@ -23449,14 +24959,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -23449,14 +24959,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23449272495927
2345024960
23451272496127
24962
23452272496327
23453272496427
2345424965
23455272496627
24967
23456272496827
23457272496927
2345824970
23459272497127
24972
23460272497327
234615249745
234625249755
...@@ -24054,7 +25567,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -24054,7 +25567,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
240540255670
240550 39255680 39
240565255695
240575255705 42
24058372557137
24059372557237
24060372557337
...@@ -25180,17 +26693,19 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -25180,17 +26693,19 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
251800266930
251810266940
251820266950
2669642
251835266975
251845266985
251855266995
251860 5267000 5
2518714 152670114 15 42
251880267020
251895267035
251900267040
251910267050
251920267060
251930267070
2670842
251945 14267095 14
251955267105
251965 14267115 14
...@@ -25220,9 +26735,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -25220,9 +26735,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
252200267350
252210267360
252220267370
2522314 152673814 15 42
25224302673930
252258267408 42
252265267415
252275267425
25228242674324
...@@ -25288,7 +26803,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -25288,7 +26803,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
252880268030
25289152680415
252900268050
252910268060 42
25292232680723
252935268085
252945268095
...@@ -25593,12 +27108,14 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -25593,12 +27108,14 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
255930271080
255940271090
255950271100
2711142
255960271120
255970271130
255980271140
255990271150
256000271160
256010271170
2711842
256020271190
256030271200
256040271210
...@@ -25704,6 +27221,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32...@@ -25704,6 +27221,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
257040272210
25705182722218
257060272230
2722442
2722542
257070272260
25708122722712
25709352722835
...@@ -26398,6 +27917,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26398,6 +27917,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2639827917
2639927918
2640027919
27920
27921
264010279220
2640227923
2640327924
...@@ -26423,6 +27944,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26423,6 +27944,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2642327944
2642427945
2642527946
27947
27948
264260279490
264270279500
264280279510
...@@ -26432,8 +27955,12 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26432,8 +27955,12 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2643227955
26433272795627
2643427957
27958
27959
264355279605
26436202796120
27962
27963
264375279645
264380279650
264390279660
...@@ -26441,6 +27968,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26441,6 +27968,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2644127968
26442272796927
2644327970
27971
26444272797227
2644527973
26446272797427
...@@ -26448,26 +27976,57 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26448,26 +27976,57 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2644827976
2644927977
2645027978
27979
27980
264515279815
264525279825
264535279835
264540279840
264550279850
27986
27987
27988
27989
27990
27991
27992
27993
27994
27995
27996
27997
27998
27999
264560280000
26457152800115
28002
264585280035
264595280045
28005
264605280065
28007
264610280080
264620280090
2646328010
264640280110
26465162801216
28013
264660280140
28015
26467272801627
2646828017
26469272801827
2647028019
28020
28021
28022
28023
28024
28025
28026
28027
28028
28029
264710280300
264725280315
264735280325
...@@ -26495,29 +28054,50 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26495,29 +28054,50 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2649528054
2649628055
26497202805620
28057
28058
264980280590
264995280605
265005280615
265010280620
2650228063
2650328064
28065
28066
28067
265040280680
28069
28070
28071
26505272807227
2650628073
26507272807427
2650828075
28076
26509272807727
2651028078
26511272807927
2651228080
28081
26513272808227
2651428083
26515272808427
2651628085
2651728086
28087
26518352808835
2651928089
2652028090
28091
28092
28093
28094
28095
28096
28097
28098
28099
28100
265215281015
265220281020
26523272810327
...@@ -26528,6 +28108,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26528,6 +28108,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2652828108
2652928109
2653028110
28111
265310281120
26532162811316
26533162811416
...@@ -26555,10 +28136,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26555,10 +28136,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2655528136
2655628137
2655728138
28139
28140
28141
28142
28143
28144
26558272814527
2655928146
26560272814727
2656128148
28149
265620281500
265635281515
265645281525
...@@ -26566,6 +28154,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26566,6 +28154,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2656628154
265675281555
26568152815615
28157
28158
265690281590
265705281605
265710281610
...@@ -26575,10 +28165,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26575,10 +28165,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
265755281655
265760281660
265775281675
28168
28169
28170
28171
265785281725
26579162817316
28174
28175
265805281765
265815281775
28178
265820281790
265835281805
26584162818116
...@@ -26598,6 +28195,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26598,6 +28195,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26598162819516
265995281965
266000281970
28198
266010281990
266020282000
26603152820115
...@@ -26614,6 +28212,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26614,6 +28212,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2661428212
26615272821327
2661628214
28215
28216
266175282175
266185282185
266195282195
...@@ -26637,17 +28237,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26637,17 +28237,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2663728237
266380282380
26639192823919
28240
26640192824119
28242
26641192824319
28244
26642192824519
28246
26643192824719
28248
26644192824919
28250
26645192825119
28252
26646192825319
28254
26647192825519
28256
26648192825719
28258
26649192825919
28260
26650192826119
28262
266515282635
266525282645
26653302826530
...@@ -26676,23 +28288,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26676,23 +28288,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2667628288
26677272828927
2667828290
28291
26679272829227
2668028293
26681272829427
2668228295
28296
26683272829727
2668428298
26685272829927
2668628300
28301
266875283025
266885283035
266895283045
2669028305
2669128306
28307
26692272830827
2669328309
26694272831027
2669528311
28312
28313
266965283145
266970283150
266985283165
...@@ -26707,23 +28325,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26707,23 +28325,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
267070283250
267080283260
267095283275
2832842
267105283295
267110283300
267120283310
2671311283328 11
28333
28334
28335
26714272833627
2671528337
26716272833827
2671728339
28340
28341
26718272834227
2671928343
26720272834427
2672128345
28346
26722272834727
2672328348
28349
26724272835027
2672528351
28352
26726232835323
28354
28355
267270283560
2672828357
2672928358
...@@ -26762,17 +28391,26 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26762,17 +28391,26 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26762302839130
26763302839230
2676428393
28394
267650283950
267660283960
26767192839719
2676828398
2676928399
28400
26770112840111
2677128402
2677228403
2677328404
2677428405
28406
267755284075
28408
28409
28410
28411
28412
28413
267765284145
2677728415
2677828416
...@@ -26885,7 +28523,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26885,7 +28523,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
268850285230
268860285240
26887202852520
28526
28527
26888202852820
28529
28530
268890285310
268905285325
26891192853319
...@@ -26903,12 +28545,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26903,12 +28545,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26903272854527
2690428546
2690528547
28548
26906282854928
269075285505
26908162855116
26909162855216
26910152855315
28554
269110285550
28556
28557
269120285580
269130285590
269140285600
...@@ -26939,6 +28585,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26939,6 +28585,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26939142858514
26940162858616
269415285875
28588
28589
28590
28591
28592
269425285935
269430285940
269440285950
...@@ -26958,11 +28609,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26958,11 +28609,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2695828609
26959272861027
2696028611
28612
28613
269615286145
269625286155
269635286165
269640286170
269655286185
28619
28620
28621
269668286228
269678286238
269688286248
...@@ -26971,6 +28627,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26971,6 +28627,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26971272862727
26972272862827
2697328629
28630
28631
28632
28633
26974192863419
26975182863518
26976192863619
...@@ -26984,6 +28644,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26984,6 +28644,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
269840286440
269850286450
269865286465
28647
28648
269870286490
269880286500
269890286510
...@@ -26994,24 +28656,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -26994,24 +28656,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2699428656
2699528657
26996332865833
28659
269970286600
269980286610
269995286625
2700028663
2700128664
2700228665
28666
27003272866727
2700428668
27005272866927
2700628670
28671
28672
27007152867315
28674
28675
27008152867615
28677
28678
27009272867927
2701028680
2701128681
27012272868227
2701328683
2701428684
28685
28686
27015162868716
27016162868816
270175286895
...@@ -27044,6 +28716,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27044,6 +28716,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
270440287160
270450287170
270465287185
28719
28720
28721
27047122872212
2704828723
270495287245
...@@ -27078,6 +28753,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27078,6 +28753,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2707828753
270790287540
270805287555
28756
28757
270810287580
270825287595
270830287600
...@@ -27097,48 +28774,93 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27097,48 +28774,93 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2709728774
2709828775
27099162877616
28777
28778
28779
271005287805
271015287815
27102162878216
28783
28784
271030287850
28786
28787
28788
271040287890
27105122879012
2710628791
2710728792
271085287935
271095287945
28795
28796
271105287975
271115287985
271125287995
271135288005
271145288015
2711528802
28803
27116162880416
271170288050
2711828806
2711928807
271200288080
2712128809
28810
28811
271220288120
2712328813
2712428814
27125122881512
27126202881620
28817
28818
27127202881920
28820
28821
28822
28823
271285288245
27129152882515
28826
28827
271300288280
28829
27131162883016
28831
28832
28833
27132152883415
28835
28836
28837
271330288380
27134152883915
28840
28841
27135152884215
28843
28844
271360288450
28846
27137162884716
28848
28849
28850
27138162885116
28852
28853
28854
28855
27139162885616
28857
28858
28859
271400288600
271410288610
28862
28863
27142162886416
27143162886516
27144162886616
...@@ -27157,6 +28879,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27157,6 +28879,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2715728879
271580288800
271595288815
28882
28883
271600288840
271615288855
271620288860
...@@ -27178,7 +28902,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27178,7 +28902,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
27178162890216
271795289035
27180162890416
28905
28906
271810289070
28908
271825289095
271835289105
271840289110
...@@ -27192,14 +28919,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27192,14 +28919,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2719228919
27193272892027
2719428921
28922
27195272892327
2719628924
27197272892527
2719828926
28927
27199272892827
2720028929
27201272893027
2720228931
28932
272035289335
272045289345
272055289355
...@@ -27796,7 +29526,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -27796,7 +29526,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
277960295260
277970 39295270 39
277985295285
277995295295 42
2780029530
27801372953137
27802372953237
...@@ -28922,17 +30652,19 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -28922,17 +30652,19 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
289220306520
289230306530
289240306540
3065542
289255306565
289265306575
289275306585
289280 5306590 5
2892914 153066014 15 42
289300306610
289315306625
289320306630
289330306640
289340306650
289350306660
3066742
289365 14306685 14
289375306695
289385 14306705 14
...@@ -28962,9 +30694,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -28962,9 +30694,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
289620306940
289630306950
289640306960
2896514 153069714 15 42
28966303069830
289678306998 42
289685307005
289695307015
28970243070224
...@@ -29030,7 +30762,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -29030,7 +30762,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
290300307620
29031153076315
290320307640
290330307650 42
29034233076623
290355307675
290365307685
...@@ -29335,12 +31067,14 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -29335,12 +31067,14 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
293350310670
293360310680
293370310690
3107042
293380310710
293390310720
293400310730
293410310740
293420310750
293430310760
3107742
293440310780
293450310790
293460310800
...@@ -29446,6 +31180,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf...@@ -29446,6 +31180,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
294460311800
29447183118118
294480311820
3118342
3118442
294490311850
29450123118612
29451353118735
...@@ -30140,6 +31876,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30140,6 +31876,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3014031876
3014131877
3014231878
31879
31880
301430318810
3014431882
3014531883
...@@ -30165,6 +31903,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30165,6 +31903,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3016531903
3016631904
3016731905
31906
31907
301680319080
301690319090
301700319100
...@@ -30174,8 +31914,12 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30174,8 +31914,12 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3017431914
30175273191527
3017631916
31917
31918
301775319195
30178203192020
31921
31922
301795319235
301800319240
301810319250
...@@ -30183,6 +31927,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30183,6 +31927,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3018331927
30184273192827
3018531929
31930
30186273193127
3018731932
30188273193327
...@@ -30190,26 +31935,57 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30190,26 +31935,57 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3019031935
3019131936
3019231937
31938
31939
301935319405
301945319415
301955319425
301960319430
301970319440
31945
31946
31947
31948
31949
31950
31951
31952
31953
31954
31955
31956
31957
31958
301980319590
30199153196015
31961
302005319625
302015319635
31964
302025319655
31966
302030319670
302040319680
3020531969
302060319700
30207163197116
31972
302080319730
31974
30209273197527
3021031976
30211273197727
3021231978
31979
31980
31981
31982
31983
31984
31985
31986
31987
31988
302130319890
302145319905
302155319915
...@@ -30237,29 +32013,50 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30237,29 +32013,50 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3023732013
3023832014
30239203201520
32016
32017
302400320180
302415320195
302425320205
302430320210
3024432022
3024532023
32024
32025
32026
302460320270
32028
32029
32030
30247273203127
3024832032
30249273203327
3025032034
32035
30251273203627
3025232037
30253273203827
3025432039
32040
30255273204127
3025632042
30257273204327
3025832044
3025932045
32046
30260353204735
3026132048
3026232049
32050
32051
32052
32053
32054
32055
32056
32057
32058
32059
302635320605
302640320610
30265273206227
...@@ -30270,6 +32067,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30270,6 +32067,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3027032067
3027132068
3027232069
32070
302730320710
30274163207216
30275163207316
...@@ -30297,10 +32095,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30297,10 +32095,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3029732095
3029832096
3029932097
32098
32099
32100
32101
32102
32103
30300273210427
3030132105
30302273210627
3030332107
32108
303040321090
303055321105
303065321115
...@@ -30308,6 +32113,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30308,6 +32113,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3030832113
303095321145
30310153211515
32116
32117
303110321180
303125321195
303130321200
...@@ -30317,10 +32124,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30317,10 +32124,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
303175321245
303180321250
303195321265
32127
32128
32129
32130
303205321315
30321163213216
32133
32134
303225321355
303235321365
32137
303240321380
303255321395
30326163214016
...@@ -30340,6 +32154,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30340,6 +32154,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30340163215416
303415321555
303420321560
32157
303430321580
303440321590
30345153216015
...@@ -30356,6 +32171,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30356,6 +32171,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3035632171
30357273217227
3035832173
32174
32175
303595321765
303605321775
303615321785
...@@ -30379,17 +32196,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30379,17 +32196,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3037932196
303800321970
30381193219819
32199
30382193220019
32201
30383193220219
32203
30384193220419
32205
30385193220619
32207
30386193220819
32209
30387193221019
32211
30388193221219
32213
30389193221419
32215
30390193221619
32217
30391193221819
32219
30392193222019
32221
303935322225
303945322235
30395303222430
...@@ -30418,23 +32247,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30418,23 +32247,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3041832247
30419273224827
3042032249
32250
30421273225127
3042232252
30423273225327
3042432254
32255
30425273225627
3042632257
30427273225827
3042832259
32260
304295322615
304305322625
304315322635
3043232264
3043332265
32266
30434273226727
3043532268
30436273226927
3043732270
32271
32272
304385322735
304390322740
304405322755
...@@ -30449,23 +32284,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30449,23 +32284,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi
304490322840
304500322850
304515322865
3228742
304525322885
304530322890
304540322900
3045511322918 11
32292
32293
32294
30456273229527
3045732296
30458273229727
3045932298
32299
32300
30460273230127
3046132302
30462273230327
3046332304
32305
30464273230627
3046532307
32308
30466273230927
3046732310
32311
30468233231223
32313
32314
304690323150
3047032316
3047132317
...@@ -30504,17 +32350,26 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30504,17 +32350,26 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3050432350
3050532351
3050632352
32353
305070323540
305080323550
30509193235619
3051032357
3051132358
32359
30512113236011
3051332361
3051432362
3051532363
3051632364
32365
305175323665
32367
32368
32369
32370
32371
32372
305185323735
3051932374
3052032375
...@@ -30627,7 +32482,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30627,7 +32482,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi
306270324820
306280324830
30629203248420
32485
32486
30630203248720
32488
32489
306310324900
306325324915
30633193249219
...@@ -30645,12 +32504,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30645,12 +32504,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30645273250427
3064632505
3064732506
32507
30648283250828
306495325095
30650163251016
30651163251116
30652153251215
32513
306530325140
32515
32516
306540325170
306550325180
306560325190
...@@ -30681,6 +32544,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30681,6 +32544,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30681143254414
30682163254516
306835325465
32547
32548
32549
32550
32551
306845325525
306850325530
306860325540
...@@ -30700,11 +32568,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30700,11 +32568,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3070032568
30701273256927
3070232570
32571
32572
307035325735
307045325745
307055325755
307060325760
307075325775
32578
32579
32580
307088325818
307098325828
307108325838
...@@ -30713,6 +32586,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30713,6 +32586,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30713273258627
30714273258727
3071532588
32589
32590
32591
32592
30716193259319
30717183259418
30718193259519
...@@ -30726,6 +32603,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30726,6 +32603,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
307260326030
307270326040
307285326055
32606
32607
307290326080
307300326090
307310326100
...@@ -30736,24 +32615,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30736,24 +32615,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3073632615
3073732616
30738333261733
32618
307390326190
307400326200
307415326215
3074232622
3074332623
3074432624
32625
30745273262627
3074632627
30747273262827
3074832629
32630
32631
30749153263215
32633
32634
30750153263515
32636
32637
30751273263827
3075232639
3075332640
30754273264127
3075532642
3075632643
32644
32645
30757163264616
30758163264716
307595326485
...@@ -30786,6 +32675,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30786,6 +32675,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi
307860326750
307870326760
307885326775
32678
32679
32680
30789123268112
3079032682
307915326835
...@@ -30820,6 +32712,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30820,6 +32712,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3082032712
308210327130
308225327145
32715
32716
308230327170
308245327185
308250327190
...@@ -30839,48 +32733,93 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30839,48 +32733,93 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3083932733
3084032734
30841163273516
32736
32737
32738
308425327395
308435327405
30844163274116
32742
32743
308450327440
32745
32746
32747
308460327480
30847123274912
3084832750
3084932751
308505327525
308515327535
32754
32755
308525327565
308535327575
308545327585
308555327595
308565327605
3085732761
32762
30858163276316
308590327640
3086032765
3086132766
308620327670
3086332768
32769
32770
308640327710
3086532772
3086632773
30867123277412
30868203277520
32776
32777
30869203277820
32779
32780
32781
32782
308705327835
30871153278415
32785
32786
308720327870
32788
30873163278916
32790
32791
32792
30874153279315
32794
32795
32796
308750327970
30876153279815
32799
32800
30877153280115
32802
32803
308780328040
32805
30879163280616
32807
32808
32809
30880163281016
32811
32812
32813
32814
30881163281516
32816
32817
32818
308820328190
308830328200
32821
32822
30884163282316
30885163282416
30886163282516
...@@ -30899,6 +32838,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30899,6 +32838,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3089932838
309000328390
309015328405
32841
32842
309020328430
309035328445
309040328450
...@@ -30920,7 +32861,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30920,7 +32861,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30920163286116
309215328625
30922163286316
32864
32865
309230328660
32867
309245328685
309255328695
309260328700
...@@ -30934,14 +32878,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -30934,14 +32878,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3093432878
30935273287927
3093632880
32881
30937273288227
3093832883
30939273288427
3094032885
32886
30941273288727
3094232888
30943273288927
3094432890
32891
309455328925
309465328935
309475328945
...@@ -31538,7 +33485,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -31538,7 +33485,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
315380334850
315390 39334860 39
315405334875
315415334885 42
3154233489
31543373349037
31544373349137
...@@ -32664,17 +34611,19 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -32664,17 +34611,19 @@ mipsel-linux-gnueabi mips-linux-gnueabi
326640346110
326650346120
326660346130
3461442
326675346155
326685346165
326695346175
326700 5346180 5
3267114 153461914 15 42
326720346200
326735346215
326740346220
326750346230
326760346240
326770346250
3462642
326785 14346275 14
326795346285
326805 14346295 14
...@@ -32704,9 +34653,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -32704,9 +34653,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi
327040346530
327050346540
327060346550
3270714 153465614 15 42
32708303465730
327098346588 42
327105346595
327115346605
32712243466124
...@@ -32772,7 +34721,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -32772,7 +34721,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
327720347210
32773153472215
327740347230
327750347240 42
32776233472523
327775347265
327785347275
...@@ -33077,12 +35026,14 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -33077,12 +35026,14 @@ mipsel-linux-gnueabi mips-linux-gnueabi
330770350260
330780350270
330790350280
3502942
330800350300
330810350310
330820350320
330830350330
330840350340
330850350350
3503642
330860350370
330870350380
330880350390
...@@ -33188,6 +35139,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi...@@ -33188,6 +35139,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
331880351390
33189183514018
331900351410
3514242
3514342
331910351440
33192123514512
33193353514635
...@@ -33878,7 +35831,9 @@ x86_64-linux-gnu...@@ -33878,7 +35831,9 @@ x86_64-linux-gnu
33878273583127
33879363583236
33880273583327
35834
33881273583527
35836
33882273583727
3388335838
3388435839
...@@ -33907,6 +35862,8 @@ x86_64-linux-gnu...@@ -33907,6 +35862,8 @@ x86_64-linux-gnu
3390735862
3390835863
33909103586410
35865
35866
33910103586710
33911103586810
33912103586910
...@@ -33915,43 +35872,79 @@ x86_64-linux-gnu...@@ -33915,43 +35872,79 @@ x86_64-linux-gnu
33915273587227
33916363587336
33917273587427
35875
35876
33918273587727
33919103587810
33920203587920
35880
35881
33921103588210
33922103588310
33923103588410
33924273588527
33925363588636
33926273588727
35888
33927273588927
33928273589027
33929363589136
33930273589227
35893
33931273589427
3393235895
3393335896
3393435897
35898
33935103589910
33936103590010
33937103590110
33938103590210
33939103590310
35904
35905
35906
35907
35908
35909
35910
35911
35912
35913
35914
35915
35916
35917
33940103591810
33941153591915
35920
33942103592110
33943103592210
35923
33944103592410
35925
33945103592610
33946103592710
3394735928
33948103592910
33949163593016
35931
33950103593210
35933
33951273593427
33952363593536
33953273593627
35937
33954273593827
35939
35940
35941
35942
35943
35944
35945
35946
35947
33955103594810
33956103594910
33957103595010
...@@ -33979,29 +35972,50 @@ x86_64-linux-gnu...@@ -33979,29 +35972,50 @@ x86_64-linux-gnu
3397935972
3398035973
33981203597420
35975
35976
33982103597710
33983103597810
33984103597910
33985103598010
3398635981
3398735982
35983
35984
35985
33988103598610
35987
35988
35989
33989273599027
33990363599136
33991273599227
35993
33992273599427
33993273599527
33994363599636
33995273599727
35998
33996273599927
33997273600027
33998363600136
33999273600227
3400036003
36004
34001273600527
34002353600635
3400336007
3400436008
36009
36010
36011
36012
36013
36014
36015
36016
36017
36018
34005103601910
34006103602010
34007273602127
...@@ -34011,6 +36025,7 @@ x86_64-linux-gnu...@@ -34011,6 +36025,7 @@ x86_64-linux-gnu
3401136025
3401236026
3401336027
36028
34014253602925
34015103603010
34016163603116
...@@ -34039,9 +36054,16 @@ x86_64-linux-gnu...@@ -34039,9 +36054,16 @@ x86_64-linux-gnu
3403936054
3404036055
3404136056
36057
36058
36059
36060
36061
36062
34042273606327
34043363606436
34044273606527
36066
34045273606727
34046103606810
34047103606910
...@@ -34050,6 +36072,8 @@ x86_64-linux-gnu...@@ -34050,6 +36072,8 @@ x86_64-linux-gnu
34050103607210
34051103607310
34052153607415
36075
36076
34053103607710
34054103607810
3405536079
...@@ -34059,10 +36083,17 @@ x86_64-linux-gnu...@@ -34059,10 +36083,17 @@ x86_64-linux-gnu
34059103608310
34060103608410
34061103608510
36086
36087
36088
36089
34062103609010
34063163609116
36092
36093
34064103609410
34065103609510
36096
34066103609710
34067103609810
34068163609916
...@@ -34082,6 +36113,7 @@ x86_64-linux-gnu...@@ -34082,6 +36113,7 @@ x86_64-linux-gnu
34082163611316
34083103611410
34084103611510
36116
34085103611710
34086103611810
34087153611915
...@@ -34097,7 +36129,9 @@ x86_64-linux-gnu...@@ -34097,7 +36129,9 @@ x86_64-linux-gnu
34097273612927
34098363613036
34099273613127
36132
34100273613327
36134
34101103613510
34102103613610
34103103613710
...@@ -34121,17 +36155,29 @@ x86_64-linux-gnu...@@ -34121,17 +36155,29 @@ x86_64-linux-gnu
34121363615536
34122103615610
34123193615719
36158
34124193615919
36160
34125193616119
36162
34126193616319
36164
34127193616519
36166
34128193616719
36168
34129193616919
36170
34130193617119
36172
34131193617319
36174
34132193617519
36176
34133193617719
36178
34134193617919
36180
34135103618110
34136103618210
34137303618330
...@@ -34159,23 +36205,29 @@ x86_64-linux-gnu...@@ -34159,23 +36205,29 @@ x86_64-linux-gnu
34159273620527
34160363620636
34161273620727
36208
34162273620927
34163273621027
34164363621136
34165273621227
36213
34166273621427
34167273621527
34168363621636
34169273621727
36218
34170273621927
34171103622010
34172103622110
34173103622210
3417436223
3417536224
36225
34176273622627
34177363622736
34178273622827
36229
36230
34179273623127
34180103623210
34181103623310
...@@ -34191,23 +36243,34 @@ x86_64-linux-gnu...@@ -34191,23 +36243,34 @@ x86_64-linux-gnu
34191103624310
34192103624410
34193103624510
3624642
34194103624710
34195103624810
34196103624910
34197113625011
36251
36252
36253
34198273625427
34199363625536
34200273625627
36257
34201273625827
36259
34202273626027
34203363626136
34204273626227
36263
34205273626427
34206273626527
36266
34207363626736
34208273626827
36269
34209273627027
34210233627123
36272
36273
34211103627410
3421236275
3421336276
...@@ -34246,17 +36309,26 @@ x86_64-linux-gnu...@@ -34246,17 +36309,26 @@ x86_64-linux-gnu
3424636309
3424736310
3424836311
36312
34249103631310
34250103631410
34251193631519
3425236316
3425336317
36318
34254113631911
3425536320
3425636321
3425736322
3425836323
36324
34259103632510
36326
36327
36328
36329
36330
36331
34260103633210
3426136333
3426236334
...@@ -34369,7 +36441,11 @@ x86_64-linux-gnu...@@ -34369,7 +36441,11 @@ x86_64-linux-gnu
34369103644110
34370103644210
34371203644320
36444
36445
34372203644620
36447
36448
34373103644910
34374103645010
34375193645119
...@@ -34385,6 +36461,7 @@ x86_64-linux-gnu...@@ -34385,6 +36461,7 @@ x86_64-linux-gnu
34385273646127
34386363646236
34387273646327
36464
34388273646527
3438936466
34390283646728
...@@ -34392,7 +36469,10 @@ x86_64-linux-gnu...@@ -34392,7 +36469,10 @@ x86_64-linux-gnu
34392163646916
34393163647016
34394153647115
36472
34395103647310
36474
36475
34396103647610
34397103647710
34398103647810
...@@ -34423,6 +36503,11 @@ x86_64-linux-gnu...@@ -34423,6 +36503,11 @@ x86_64-linux-gnu
34423143650314
34424163650416
34425103650510
36506
36507
36508
36509
36510
34426103651110
34427103651210
34428103651310
...@@ -34441,12 +36526,17 @@ x86_64-linux-gnu...@@ -34441,12 +36526,17 @@ x86_64-linux-gnu
34441273652627
34442363652736
34443273652827
36529
34444273653027
36531
34445103653210
34446103653310
34447103653410
34448103653510
34449103653610
36537
36538
36539
34450103654010
34451103654110
34452103654210
...@@ -34454,7 +36544,11 @@ x86_64-linux-gnu...@@ -34454,7 +36544,11 @@ x86_64-linux-gnu
34454103654410
34455273654527
34456273654627
36547
34457273654827
36549
36550
36551
34458193655219
34459183655318
34460193655419
...@@ -34468,6 +36562,8 @@ x86_64-linux-gnu...@@ -34468,6 +36562,8 @@ x86_64-linux-gnu
34468103656210
34469103656310
34470103656410
36565
36566
34471103656710
34472103656810
34473103656910
...@@ -34478,24 +36574,34 @@ x86_64-linux-gnu...@@ -34478,24 +36574,34 @@ x86_64-linux-gnu
34478363657436
34479103657510
34480333657633
36577
34481103657810
34482103657910
34483103658010
3448436581
3448536582
3448636583
36584
34487273658527
34488363658636
34489273658727
36588
34490273658927
36590
34491153659115
36592
36593
34492153659415
36595
36596
34493273659727
3449436598
34495363659936
34496273660027
36601
34497273660227
3449836603
36604
34499163660516
3450036606
34501103660710
...@@ -34528,6 +36634,9 @@ x86_64-linux-gnu...@@ -34528,6 +36634,9 @@ x86_64-linux-gnu
34528103663410
34529103663510
34530103663610
36637
36638
36639
34531123664012
3453236641
34533103664210
...@@ -34562,6 +36671,8 @@ x86_64-linux-gnu...@@ -34562,6 +36671,8 @@ x86_64-linux-gnu
34562363667136
34563103667210
34564103667310
36674
36675
34565103667610
34566103667710
34567103667810
...@@ -34581,48 +36692,93 @@ x86_64-linux-gnu...@@ -34581,48 +36692,93 @@ x86_64-linux-gnu
3458136692
3458236693
34583163669416
36695
36696
36697
34584103669810
34585103669910
34586163670016
36701
36702
34587103670310
36704
36705
36706
34588103670710
34589123670812
3459036709
3459136710
34592103671110
34593103671210
36713
36714
34594103671510
34595103671610
34596103671710
34597103671810
34598103671910
3459936720
36721
34600163672216
34601103672310
3460236724
3460336725
34604103672610
3460536727
36728
36729
34606103673010
3460736731
3460836732
34609123673312
34610203673420
36735
36736
34611203673720
36738
36739
36740
36741
34612103674210
34613153674315
36744
36745
34614103674610
36747
34615163674816
36749
36750
36751
34616153675215
36753
36754
36755
34617103675610
34618153675715
36758
36759
34619153676015
36761
36762
34620103676310
36764
34621163676516
36766
36767
36768
34622163676916
36770
36771
36772
36773
34623163677416
36775
36776
36777
34624103677810
34625103677910
36780
36781
34626163678216
34627163678316
34628163678416
...@@ -34641,6 +36797,8 @@ x86_64-linux-gnu...@@ -34641,6 +36797,8 @@ x86_64-linux-gnu
34641363679736
34642103679810
34643103679910
36800
36801
34644103680210
34645103680310
34646103680410
...@@ -34662,7 +36820,10 @@ x86_64-linux-gnu...@@ -34662,7 +36820,10 @@ x86_64-linux-gnu
34662163682016
34663103682110
34664163682216
36823
36824
34665103682510
36826
34666103682710
34667103682810
34668103682910
...@@ -34675,14 +36836,17 @@ x86_64-linux-gnu...@@ -34675,14 +36836,17 @@ x86_64-linux-gnu
34675273683627
34676363683736
34677273683827
36839
34678273684027
34679273684127
34680363684236
34681273684327
36844
34682273684527
34683273684627
34684363684736
34685273684827
36849
34686273685027
34687103685110
34688103685210
...@@ -35280,7 +37444,7 @@ x86_64-linux-gnu...@@ -35280,7 +37444,7 @@ x86_64-linux-gnu
35280103744410
3528110 393744510 39
35282103744610
35283103744710 42
35284363744836
35285373744937
35286373745037
...@@ -36406,17 +38570,19 @@ x86_64-linux-gnu...@@ -36406,17 +38570,19 @@ x86_64-linux-gnu
36406103857010
36407103857110
36408103857210
3857342
36409103857410
36410103857510
36411103857610
36412103857710
3641314 153857814 15 42
36414103857910
36415103858010
36416103858110
36417103858210
36418103858310
36419103858410
3858542
36420103858610
36421103858710
36422103858810
...@@ -36446,9 +38612,9 @@ x86_64-linux-gnu...@@ -36446,9 +38612,9 @@ x86_64-linux-gnu
36446103861210
36447103861310
36448103861410
3644914 153861514 15 42
36450303861630
36451103861710 42
36452103861810
36453103861910
36454243862024
...@@ -36514,7 +38680,7 @@ x86_64-linux-gnu...@@ -36514,7 +38680,7 @@ x86_64-linux-gnu
36514103868010
36515153868115
36516103868210
36517103868310 42
36518233868423
36519103868510
36520103868610
...@@ -36819,12 +38985,14 @@ x86_64-linux-gnu...@@ -36819,12 +38985,14 @@ x86_64-linux-gnu
36819103898510
36820103898610
36821103898710
3898842
36822103898910
36823103899010
36824103899110
36825103899210
36826103899310
36827103899410
3899542
36828103899610
36829103899710
36830103899810
...@@ -36930,6 +39098,8 @@ x86_64-linux-gnu...@@ -36930,6 +39098,8 @@ x86_64-linux-gnu
36930103909810
36931183909918
36932103910010
3910142
3910242
36933103910310
36934123910412
36935353910535
...@@ -37620,7 +39790,9 @@ x86_64-linux-gnux32...@@ -37620,7 +39790,9 @@ x86_64-linux-gnux32
37620283979028
37621363979136
37622283979228
39793
37623283979428
39795
37624283979628
3762539797
3762639798
...@@ -37649,6 +39821,8 @@ x86_64-linux-gnux32...@@ -37649,6 +39821,8 @@ x86_64-linux-gnux32
3764939821
3765039822
37651283982328
39824
39825
37652283982628
37653283982728
37654283982828
...@@ -37657,47 +39831,83 @@ x86_64-linux-gnux32...@@ -37657,47 +39831,83 @@ x86_64-linux-gnux32
37657283983128
37658363983236
37659283983328
39834
39835
37660283983628
37661283983728
37662283983828
39839
39840
37663283984128
37664283984228
37665283984328
37666283984428
37667363984536
37668283984628
39847
37669283984828
37670283984928
37671363985036
37672283985128
39852
37673283985328
3767439854
3767539855
3767639856
39857
37677283985828
37678283985928
37679283986028
37680283986128
37681283986228
39863
39864
39865
39866
39867
39868
39869
39870
39871
39872
39873
39874
39875
39876
37682283987728
37683283987828
39879
37684283988028
37685283988128
39882
37686283988328
39884
37687283988528
37688283988628
3768939887
37690283988828
37691283988928
39890
37692283989128
39892
37693283989328
37694363989436
37695283989528
39896
37696283989728
3769739898
3769839899
3769939900
3770039901
39902
39903
39904
39905
39906
39907
39908
39909
39910
37701283991128
37702283991228
3770339913
...@@ -37721,29 +39931,50 @@ x86_64-linux-gnux32...@@ -37721,29 +39931,50 @@ x86_64-linux-gnux32
3772139931
3772239932
37723283993328
39934
39935
37724283993628
37725283993728
37726283993828
37727283993928
3772839940
3772939941
39942
39943
39944
37730283994528
39946
39947
39948
37731283994928
37732363995036
37733283995128
39952
37734283995328
37735283995428
37736363995536
37737283995628
39957
37738283995828
37739283995928
37740363996036
37741283996128
3774239962
39963
37743283996428
37744353996535
3774539966
3774639967
39968
39969
39970
39971
39972
39973
39974
39975
39976
39977
37747283997828
37748283997928
37749283998028
...@@ -37753,6 +39984,7 @@ x86_64-linux-gnux32...@@ -37753,6 +39984,7 @@ x86_64-linux-gnux32
3775339984
3775439985
3775539986
39987
37756283998828
37757283998928
37758283999028
...@@ -37781,9 +40013,16 @@ x86_64-linux-gnux32...@@ -37781,9 +40013,16 @@ x86_64-linux-gnux32
3778140013
3778240014
3778340015
40016
40017
40018
40019
40020
40021
37784284002228
37785364002336
37786284002428
40025
37787284002628
37788284002728
37789284002828
...@@ -37792,6 +40031,8 @@ x86_64-linux-gnux32...@@ -37792,6 +40031,8 @@ x86_64-linux-gnux32
37792284003128
37793284003228
37794284003328
40034
40035
37795284003628
37796284003728
3779740038
...@@ -37801,10 +40042,17 @@ x86_64-linux-gnux32...@@ -37801,10 +40042,17 @@ x86_64-linux-gnux32
37801284004228
37802284004328
37803284004428
40045
40046
40047
40048
37804284004928
37805284005028
40051
40052
37806284005328
37807284005428
40055
37808284005628
37809284005728
37810284005828
...@@ -37824,6 +40072,7 @@ x86_64-linux-gnux32...@@ -37824,6 +40072,7 @@ x86_64-linux-gnux32
37824284007228
37825284007328
37826284007428
40075
37827284007628
37828284007728
37829284007828
...@@ -37839,7 +40088,9 @@ x86_64-linux-gnux32...@@ -37839,7 +40088,9 @@ x86_64-linux-gnux32
37839284008828
37840364008936
37841284009028
40091
37842284009228
40093
37843284009428
37844284009528
37845284009628
...@@ -37863,17 +40114,29 @@ x86_64-linux-gnux32...@@ -37863,17 +40114,29 @@ x86_64-linux-gnux32
37863364011436
37864284011528
37865284011628
40117
37866284011828
40119
37867284012028
40121
37868284012228
40123
37869284012428
40125
37870284012628
40127
37871284012828
40129
37872284013028
40131
37873284013228
40133
37874284013428
40135
37875284013628
40137
37876284013828
40139
37877284014028
37878284014128
37879304014230
...@@ -37901,23 +40164,29 @@ x86_64-linux-gnux32...@@ -37901,23 +40164,29 @@ x86_64-linux-gnux32
37901284016428
37902364016536
37903284016628
40167
37904284016828
37905284016928
37906364017036
37907284017128
40172
37908284017328
37909284017428
37910364017536
37911284017628
40177
37912284017828
37913284017928
37914284018028
37915284018128
3791640182
3791740183
40184
37918284018528
37919364018636
37920284018728
40188
40189
37921284019028
37922284019128
37923284019228
...@@ -37933,23 +40202,34 @@ x86_64-linux-gnux32...@@ -37933,23 +40202,34 @@ x86_64-linux-gnux32
37933284020228
37934284020328
37935284020428
4020542
37936284020628
37937284020728
37938284020828
3793940209
40210
40211
40212
37940284021328
37941364021436
37942284021528
40216
37943284021728
40218
37944284021928
37945364022036
37946284022128
40222
37947284022328
37948284022428
40225
37949364022636
37950284022728
40228
37951284022928
37952284023028
40231
40232
37953284023328
3795440234
3795540235
...@@ -37988,17 +40268,26 @@ x86_64-linux-gnux32...@@ -37988,17 +40268,26 @@ x86_64-linux-gnux32
3798840268
3798940269
3799040270
40271
37991284027228
37992284027328
37993284027428
3799440275
3799540276
40277
37996284027828
3799740279
3799840280
3799940281
3800040282
40283
38001284028428
40285
40286
40287
40288
40289
40290
38002284029128
3800340292
3800440293
...@@ -38111,7 +40400,11 @@ x86_64-linux-gnux32...@@ -38111,7 +40400,11 @@ x86_64-linux-gnux32
38111284040028
38112284040128
38113284040228
40403
40404
38114284040528
40406
40407
38115284040828
38116284040928
38117284041028
...@@ -38127,6 +40420,7 @@ x86_64-linux-gnux32...@@ -38127,6 +40420,7 @@ x86_64-linux-gnux32
38127284042028
38128364042136
38129284042228
40423
38130284042428
3813140425
38132284042628
...@@ -38134,7 +40428,10 @@ x86_64-linux-gnux32...@@ -38134,7 +40428,10 @@ x86_64-linux-gnux32
38134284042828
38135284042928
38136284043028
40431
38137284043228
40433
40434
38138284043528
38139284043628
38140284043728
...@@ -38165,6 +40462,11 @@ x86_64-linux-gnux32...@@ -38165,6 +40462,11 @@ x86_64-linux-gnux32
38165284046228
38166284046328
38167284046428
40465
40466
40467
40468
40469
38168284047028
38169284047128
38170284047228
...@@ -38183,12 +40485,17 @@ x86_64-linux-gnux32...@@ -38183,12 +40485,17 @@ x86_64-linux-gnux32
38183284048528
38184364048636
38185284048728
40488
38186284048928
40490
38187284049128
38188284049228
38189284049328
38190284049428
38191284049528
40496
40497
40498
38192284049928
38193284050028
38194284050128
...@@ -38196,7 +40503,11 @@ x86_64-linux-gnux32...@@ -38196,7 +40503,11 @@ x86_64-linux-gnux32
38196284050328
38197284050428
38198284050528
40506
38199284050728
40508
40509
40510
38200284051128
38201284051228
38202284051328
...@@ -38210,6 +40521,8 @@ x86_64-linux-gnux32...@@ -38210,6 +40521,8 @@ x86_64-linux-gnux32
38210284052128
38211284052228
38212284052328
40524
40525
38213284052628
38214284052728
38215284052828
...@@ -38220,24 +40533,34 @@ x86_64-linux-gnux32...@@ -38220,24 +40533,34 @@ x86_64-linux-gnux32
38220364053336
38221284053428
38222334053533
40536
38223284053728
38224284053828
38225284053928
3822640540
3822740541
3822840542
40543
38229284054428
38230364054536
38231284054628
40547
38232284054828
40549
38233284055028
40551
40552
38234284055328
40554
40555
38235284055628
3823640557
38237364055836
38238284055928
40560
38239284056128
3824040562
40563
38241284056428
3824240565
38243284056628
...@@ -38270,6 +40593,9 @@ x86_64-linux-gnux32...@@ -38270,6 +40593,9 @@ x86_64-linux-gnux32
38270284059328
38271284059428
38272284059528
40596
40597
40598
38273284059928
3827440600
38275284060128
...@@ -38304,6 +40630,8 @@ x86_64-linux-gnux32...@@ -38304,6 +40630,8 @@ x86_64-linux-gnux32
38304364063036
38305284063128
38306284063228
40633
40634
38307284063528
38308284063628
38309284063728
...@@ -38323,48 +40651,93 @@ x86_64-linux-gnux32...@@ -38323,48 +40651,93 @@ x86_64-linux-gnux32
3832340651
3832440652
38325284065328
40654
40655
40656
38326284065728
3832740658
38328284065928
40660
40661
38329284066228
40663
40664
40665
38330284066628
38331284066728
3833240668
3833340669
38334284067028
38335284067128
40672
40673
38336284067428
38337284067528
38338284067628
38339284067728
38340284067828
3834140679
40680
38342284068128
38343284068228
3834440683
3834540684
38346284068528
3834740686
40687
40688
38348284068928
3834940690
3835040691
38351284069228
38352284069328
40694
40695
38353284069628
40697
40698
40699
40700
38354284070128
38355284070228
40703
40704
38356284070528
40706
38357284070728
40708
40709
40710
38358284071128
40712
40713
40714
38359284071528
38360284071628
40717
40718
38361284071928
40720
40721
38362284072228
40723
38363284072428
40725
40726
40727
38364284072828
40729
40730
40731
40732
38365284073328
40734
40735
40736
38366284073728
38367284073828
40739
40740
38368284074128
38369284074228
38370284074328
...@@ -38383,6 +40756,8 @@ x86_64-linux-gnux32...@@ -38383,6 +40756,8 @@ x86_64-linux-gnux32
38383364075636
38384284075728
38385284075828
40759
40760
38386284076128
38387284076228
38388284076328
...@@ -38404,7 +40779,10 @@ x86_64-linux-gnux32...@@ -38404,7 +40779,10 @@ x86_64-linux-gnux32
38404284077928
38405284078028
38406284078128
40782
40783
38407284078428
40785
38408284078628
38409284078728
38410284078828
...@@ -38417,14 +40795,17 @@ x86_64-linux-gnux32...@@ -38417,14 +40795,17 @@ x86_64-linux-gnux32
38417284079528
38418364079636
38419284079728
40798
38420284079928
38421284080028
38422364080136
38423284080228
40803
38424284080428
38425284080528
38426364080636
38427284080728
40808
38428284080928
38429284081028
38430284081128
...@@ -39022,7 +41403,7 @@ x86_64-linux-gnux32...@@ -39022,7 +41403,7 @@ x86_64-linux-gnux32
39022284140328
3902328 394140428 39
39024284140528
39025284140628 42
39026364140736
39027374140837
39028374140937
...@@ -40148,17 +42529,19 @@ x86_64-linux-gnux32...@@ -40148,17 +42529,19 @@ x86_64-linux-gnux32
40148284252928
40149284253028
40150284253128
4253242
40151284253328
40152284253428
40153284253528
40154284253628
4253728 42
40155284253828
40156284253928
40157284254028
40158284254128
40159284254228
40160284254328
40161284254442
40162284254528
40163284254628
40164284254728
...@@ -40188,9 +42571,9 @@ x86_64-linux-gnux32...@@ -40188,9 +42571,9 @@ x86_64-linux-gnux32
40188284257128
40189284257228
40190284257328
40191284257428 42
40192304257530
40193284257628 42
40194284257728
40195284257828
40196284257928
...@@ -40256,7 +42639,7 @@ x86_64-linux-gnux32...@@ -40256,7 +42639,7 @@ x86_64-linux-gnux32
40256284263928
40257284264028
40258284264128
40259284264228 42
40260284264328
40261284264428
40262284264528
...@@ -40561,12 +42944,14 @@ x86_64-linux-gnux32...@@ -40561,12 +42944,14 @@ x86_64-linux-gnux32
40561284294428
40562284294528
40563284294628
4294742
40564284294828
40565284294928
40566284295028
40567284295128
40568284295228
40569284295328
4295442
40570284295528
40571284295628
40572284295728
...@@ -40672,6 +43057,8 @@ x86_64-linux-gnux32...@@ -40672,6 +43057,8 @@ x86_64-linux-gnux32
40672284305728
40673284305828
40674284305928
4306042
4306142
40675284306228
40676284306328
40677354306435
...@@ -41362,7 +43749,9 @@ i386-linux-gnu...@@ -41362,7 +43749,9 @@ i386-linux-gnu
41362274374927
41363364375036
41364274375127
43752
41365274375327
43754
41366274375527
4136743756
4136843757
...@@ -41391,6 +43780,8 @@ i386-linux-gnu...@@ -41391,6 +43780,8 @@ i386-linux-gnu
4139143780
4139243781
4139343782
43783
43784
413940437850
413950437860
413960437870
...@@ -41399,43 +43790,79 @@ i386-linux-gnu...@@ -41399,43 +43790,79 @@ i386-linux-gnu
41399274379027
41400364379136
41401274379227
43793
43794
41402274379527
414031437961
41404204379720
43798
43799
414055438005
414060438010
414070438020
41408274380327
41409364380436
41410274380527
43806
41411274380727
41412274380827
41413364380936
41414274381027
43811
41415274381227
4141643813
4141743814
4141843815
43816
414191438171
414201438181
414211438191
414220438200
414230438210
43822
43823
43824
43825
43826
43827
43828
43829
43830
43831
43832
43833
43834
43835
414240438360
41425154383715
43838
414261438391
414271438401
43841
414281438421
43843
414290438440
414300438450
4143143846
414320438470
41433164384816
43849
414340438500
43851
41435274385227
41436364385336
41437274385427
43855
41438274385627
43857
43858
43859
43860
43861
43862
43863
43864
43865
414390438660
414405438675
414415438685
...@@ -41463,29 +43890,50 @@ i386-linux-gnu...@@ -41463,29 +43890,50 @@ i386-linux-gnu
414630438900
4146443891
41465204389220
43893
43894
414660438950
414671438961
414685438975
414690438980
4147043899
4147143900
43901
43902
43903
414720439040
43905
43906
43907
41473274390827
41474364390936
41475274391027
43911
41476274391227
41477274391327
41478364391436
41479274391527
43916
41480274391727
41481274391827
41482364391936
41483274392027
43921
414845439225
41485274392327
41486354392435
43925
414875439265
4148843927
43928
43929
43930
43931
43932
43933
43934
43935
43936
414895439375
414900439380
41491274393927
...@@ -41495,6 +43943,7 @@ i386-linux-gnu...@@ -41495,6 +43943,7 @@ i386-linux-gnu
4149543943
4149643944
4149743945
43946
41498254394725
414990439480
41500164394916
...@@ -41523,9 +43972,16 @@ i386-linux-gnu...@@ -41523,9 +43972,16 @@ i386-linux-gnu
4152343972
4152443973
4152543974
43975
43976
43977
43978
43979
43980
41526274398127
41527364398236
41528274398327
43984
41529274398527
415300439860
415311439871
...@@ -41534,6 +43990,8 @@ i386-linux-gnu...@@ -41534,6 +43990,8 @@ i386-linux-gnu
415341439901
415355439915
41536154399215
43993
43994
415370439950
415385439965
415390439970
...@@ -41543,10 +44001,17 @@ i386-linux-gnu...@@ -41543,10 +44001,17 @@ i386-linux-gnu
415435440015
415440440020
415451440031
44004
44005
44006
44007
415465440085
41547164400916
44010
44011
415485440125
415495440135
44014
415500440150
415511 5440161 5
41552164401716
...@@ -41566,6 +44031,7 @@ i386-linux-gnu...@@ -41566,6 +44031,7 @@ i386-linux-gnu
41566164403116
415675440325
415680440330
44034
415690440350
415700440360
41571154403715
...@@ -41581,7 +44047,9 @@ i386-linux-gnu...@@ -41581,7 +44047,9 @@ i386-linux-gnu
41581274404727
41582364404836
41583274404927
44050
41584274405127
44052
415851440531
415861440541
415871440551
...@@ -41605,17 +44073,29 @@ i386-linux-gnu...@@ -41605,17 +44073,29 @@ i386-linux-gnu
41605364407336
416060440740
41607194407519
44076
41608194407719
44078
41609194407919
44080
41610194408119
44082
41611194408319
44084
41612194408519
44086
41613194408719
44088
41614194408919
44090
41615194409119
44092
41616194409319
44094
41617194409519
44096
41618194409719
44098
416191440991
416201441001
41621304410130
...@@ -41643,23 +44123,29 @@ i386-linux-gnu...@@ -41643,23 +44123,29 @@ i386-linux-gnu
41643274412327
41644364412436
41645274412527
44126
41646274412727
41647274412827
41648364412936
41649274413027
44131
41650274413227
41651274413327
41652364413436
41653274413527
44136
41654274413727
416551441381
416561441391
416571441401
4165844141
4165944142
44143
41660274414427
41661364414536
41662274414627
44147
44148
41663274414927
416641441501
416650441510
...@@ -41675,23 +44161,34 @@ i386-linux-gnu...@@ -41675,23 +44161,34 @@ i386-linux-gnu
416750441610
416760441620
416771441631
4416442
416781441651
416790441660
416800441670
416813 11441683 8 11
44169
44170
44171
41682274417227
41683364417336
41684274417427
44175
41685274417627
44177
41686274417827
41687364417936
41688274418027
44181
41689274418227
41690274418327
44184
41691364418536
41692274418627
44187
41693274418827
41694234418923
44190
44191
416950441920
4169644193
4169744194
...@@ -41730,17 +44227,26 @@ i386-linux-gnu...@@ -41730,17 +44227,26 @@ i386-linux-gnu
4173044227
4173144228
417320442290
44230
417330442310
417340442320
41735194423319
4173644234
4173744235
44236
41738114423711
4173944238
4174044239
4174144240
4174244241
44242
417431442431
44244
44245
44246
44247
44248
44249
417445442505
4174544251
4174644252
...@@ -41853,7 +44359,11 @@ i386-linux-gnu...@@ -41853,7 +44359,11 @@ i386-linux-gnu
418530443590
418540443600
41855204436120
44362
44363
41856204436420
44365
44366
418570443670
418585443685
41859194436919
...@@ -41869,6 +44379,7 @@ i386-linux-gnu...@@ -41869,6 +44379,7 @@ i386-linux-gnu
41869274437927
41870364438036
41871274438127
44382
41872274438327
4187344384
41874284438528
...@@ -41876,7 +44387,10 @@ i386-linux-gnu...@@ -41876,7 +44387,10 @@ i386-linux-gnu
41876164438716
41877164438816
41878154438915
44390
418790443910
44392
44393
418800443940
418810443950
418820443960
...@@ -41907,6 +44421,11 @@ i386-linux-gnu...@@ -41907,6 +44421,11 @@ i386-linux-gnu
41907144442114
41908164442216
419091 5444231 5
44424
44425
44426
44427
44428
419101444291
419110444300
419120444310
...@@ -41925,12 +44444,17 @@ i386-linux-gnu...@@ -41925,12 +44444,17 @@ i386-linux-gnu
41925274444427
41926364444536
41927274444627
44447
41928274444827
44449
419295444505
419305444515
419315444525
419320444530
419335444545
44455
44456
44457
419348444588
419358444598
419368444608
...@@ -41938,7 +44462,11 @@ i386-linux-gnu...@@ -41938,7 +44462,11 @@ i386-linux-gnu
419380444620
41939274446327
41940274446427
44465
41941274446627
44467
44468
44469
41942194447019
41943184447118
41944194447219
...@@ -41952,6 +44480,8 @@ i386-linux-gnu...@@ -41952,6 +44480,8 @@ i386-linux-gnu
419520444800
419530444810
419545444825
44483
44484
419550444850
419560444860
419570444870
...@@ -41962,24 +44492,34 @@ i386-linux-gnu...@@ -41962,24 +44492,34 @@ i386-linux-gnu
41962364449236
419631444931
41964334449433
44495
419650444960
419660444970
419674444984
4196844499
4196944500
4197044501
44502
41971274450327
41972364450436
41973274450527
44506
41974274450727
44508
41975154450915
44510
44511
41976154451215
44513
44514
41977274451527
4197844516
41979364451736
41980274451827
44519
41981274452027
4198244521
44522
41983164452316
4198444524
419855445255
...@@ -42012,6 +44552,9 @@ i386-linux-gnu...@@ -42012,6 +44552,9 @@ i386-linux-gnu
420120445520
420130445530
420141445541
44555
44556
44557
42015124455812
420162445592
420171445601
...@@ -42046,6 +44589,8 @@ i386-linux-gnu...@@ -42046,6 +44589,8 @@ i386-linux-gnu
42046364458936
420470445900
420481445911
44592
44593
420490445940
420502445952
420510445960
...@@ -42065,48 +44610,93 @@ i386-linux-gnu...@@ -42065,48 +44610,93 @@ i386-linux-gnu
4206544610
4206644611
42067164461216
44613
44614
44615
420685446165
420695446175
42070164461816
44619
44620
420710446210
44622
44623
44624
420720446250
42073124462612
4207444627
4207544628
420761446291
420771446301
44631
44632
420781446331
420791446341
420801446351
420811446361
420821446371
4208344638
44639
42084164464016
420850446410
4208644642
420870446430
420880446440
44645
44646
420890446470
420900446480
4209144649
4209244650
42093124465112
42094204465220
44653
44654
42095204465520
44656
44657
44658
44659
420963446603
42097154466115
44662
44663
420980446640
44665
42099164466616
44667
44668
44669
42100154467015
44671
44672
44673
421010446740
42102154467515
44676
44677
42103154467815
44679
44680
421040446810
44682
42105164468316
44684
44685
44686
42106164468716
44688
44689
44690
44691
42107164469216
44693
44694
44695
421080446960
421090446970
44698
44699
42110164470016
42111164470116
42112164470216
...@@ -42125,6 +44715,8 @@ i386-linux-gnu...@@ -42125,6 +44715,8 @@ i386-linux-gnu
42125364471536
421260447160
421271447171
44718
44719
421280447200
421291447211
421300447220
...@@ -42146,7 +44738,10 @@ i386-linux-gnu...@@ -42146,7 +44738,10 @@ i386-linux-gnu
42146164473816
421475447395
42148164474016
44741
44742
421490447430
44744
421505447455
421515447465
421520447470
...@@ -42159,14 +44754,17 @@ i386-linux-gnu...@@ -42159,14 +44754,17 @@ i386-linux-gnu
42159274475427
42160364475536
42161274475627
44757
42162274475827
42163274475927
42164364476036
42165274476127
44762
42166274476327
42167274476427
42168364476536
42169274476627
44767
42170274476827
421711447691
421721447701
...@@ -42764,7 +45362,7 @@ i386-linux-gnu...@@ -42764,7 +45362,7 @@ i386-linux-gnu
427640453620
427650 39453630 39
427661453641
427671453651 42
42768364536636
42769374536737
42770374536837
...@@ -43890,17 +46488,19 @@ i386-linux-gnu...@@ -43890,17 +46488,19 @@ i386-linux-gnu
438900464880
438910464890
438920464900
4649142
438935464925
438941464931
438951464941
438960 1464950 1
4389714 154649614 15 42
438980464970
438991464981
439000464990
439010465000
439020465010
439030465020
4650342
439045465045
439051465051
439061465061
...@@ -43930,9 +46530,9 @@ i386-linux-gnu...@@ -43930,9 +46530,9 @@ i386-linux-gnu
439300465300
439310465310
439320465320
4393314 154653314 15 42
43934304653430
439358465358 42
439361465361
439375465375
43938244653824
...@@ -43998,7 +46598,7 @@ i386-linux-gnu...@@ -43998,7 +46598,7 @@ i386-linux-gnu
439980465980
43999154659915
440000466000
440010466010 42
44002234660223
440035466035
440045466045
...@@ -44303,12 +46903,14 @@ i386-linux-gnu...@@ -44303,12 +46903,14 @@ i386-linux-gnu
443030469030
443040469040
443050469050
4690642
443060469070
443070469080
443080469090
443090469100
443100469110
443110469120
4691342
443120469140
443130469150
443140469160
...@@ -44414,6 +47016,8 @@ i386-linux-gnu...@@ -44414,6 +47016,8 @@ i386-linux-gnu
444140470160
44415184701718
444160470180
4701942
4702042
444170470210
44418124702212
44419354702335
...@@ -45104,7 +47708,9 @@ powerpc64le-linux-gnu...@@ -45104,7 +47708,9 @@ powerpc64le-linux-gnu
45104294770829
45105364770936
45106294771029
4771142
45107294771229
4771342
45108294771429
4510947715
4511047716
...@@ -45133,6 +47739,8 @@ powerpc64le-linux-gnu...@@ -45133,6 +47739,8 @@ powerpc64le-linux-gnu
4513347739
4513447740
4513547741
4774242
4774342
45136294774429
45137294774529
45138294774629
...@@ -45141,20 +47749,27 @@ powerpc64le-linux-gnu...@@ -45141,20 +47749,27 @@ powerpc64le-linux-gnu
45141294774929
45142364775036
45143294775129
4775242
4775342
45144294775429
45145294775529
45146294775629
4775742
4775842
45147294775929
45148294776029
45149294776129
45150294776229
45151364776336
45152294776429
4776542
45153294776629
45154294776729
45155364776836
45156294776929
4777042
45157294777129
4777242
4515847773
4515947774
4516047775
...@@ -45163,21 +47778,50 @@ powerpc64le-linux-gnu...@@ -45163,21 +47778,50 @@ powerpc64le-linux-gnu
45163294777829
45164294777929
45165294778029
4778142
4778242
4778342
4778442
4778542
4778642
4778742
4778842
4778942
4779042
4779142
4779242
4779342
4779442
45166294779529
45167294779629
4779742
45168294779829
45169294779929
4780042
45170294780129
4780242
45171294780329
45172294780429
4517347805
45174294780629
45175294780729
4780842
45176294780929
4781042
45177294781129
45178364781236
45179294781329
4781442
45180294781529
4781642
4781742
4781842
4781942
4782042
4782142
4782242
4782342
4782442
4518147825
4518247826
4518347827
...@@ -45205,33 +47849,55 @@ powerpc64le-linux-gnu...@@ -45205,33 +47849,55 @@ powerpc64le-linux-gnu
4520547849
4520647850
45207294785129
4785242
4785342
45208294785429
45209294785529
45210294785629
45211294785729
4521247858
4521347859
4786042
4786142
4786242
45214294786329
4786442
4786542
4786642
45215294786729
45216364786836
45217294786929
4787042
45218294787129
45219294787229
45220364787336
45221294787429
4787542
45222294787629
45223294787729
45224364787836
45225294787929
4788042
4522647881
45227294788229
45228354788335
4788442
4522947885
4523047886
4788742
4788842
4788942
4789042
4789142
4789242
4789342
4789442
4789542
45231294789629
45232294789729
45233294789829
45234294789929
4790042
45235294790129
45236354790235
45237294790329
...@@ -45264,10 +47930,17 @@ powerpc64le-linux-gnu...@@ -45264,10 +47930,17 @@ powerpc64le-linux-gnu
4526447930
4526547931
4526647932
4793342
4526747934
4793542
4793642
4793742
4793842
4793942
45268294794029
45269364794136
45270294794229
4794342
45271294794429
45272294794529
45273294794629
...@@ -45276,6 +47949,8 @@ powerpc64le-linux-gnu...@@ -45276,6 +47949,8 @@ powerpc64le-linux-gnu
45276294794929
45277294795029
45278294795129
4795242
4795342
45279294795429
45280294795529
4528147956
...@@ -45285,10 +47960,17 @@ powerpc64le-linux-gnu...@@ -45285,10 +47960,17 @@ powerpc64le-linux-gnu
45285294796029
45286294796129
45287294796229
4796342
4796442
4796542
4796642
45288294796729
45289294796829
4796942
4797042
45290294797129
45291294797229
4797342
45292294797429
45293294797529
45294294797629
...@@ -45308,6 +47990,7 @@ powerpc64le-linux-gnu...@@ -45308,6 +47990,7 @@ powerpc64le-linux-gnu
45308294799029
45309294799129
45310294799229
4799342
45311294799429
45312294799529
45313294799629
...@@ -45323,7 +48006,9 @@ powerpc64le-linux-gnu...@@ -45323,7 +48006,9 @@ powerpc64le-linux-gnu
45323294800629
45324364800736
45325294800829
4800942
45326294801029
4801142
45327294801229
45328294801329
45329294801429
...@@ -45347,17 +48032,29 @@ powerpc64le-linux-gnu...@@ -45347,17 +48032,29 @@ powerpc64le-linux-gnu
45347364803236
45348294803329
45349294803429
4803542
45350294803629
4803742
45351294803829
4803942
45352294804029
4804142
45353294804229
4804342
45354294804429
4804542
45355294804629
4804742
45356294804829
4804942
45357294805029
4805142
45358294805229
4805342
45359294805429
4805542
45360294805629
4805742
45361294805829
45362294805929
45363304806030
...@@ -45385,23 +48082,29 @@ powerpc64le-linux-gnu...@@ -45385,23 +48082,29 @@ powerpc64le-linux-gnu
45385294808229
45386364808336
45387294808429
4808542
45388294808629
45389294808729
45390364808836
45391294808929
4809042
45392294809129
45393294809229
45394364809336
45395294809429
4809542
45396294809629
45397294809729
45398294809829
45399294809929
4810042
4540048101
4540148102
45402294810329
45403364810436
45404294810529
4810642
4810742
45405294810829
45406294810929
45407294811029
...@@ -45417,23 +48120,34 @@ powerpc64le-linux-gnu...@@ -45417,23 +48120,34 @@ powerpc64le-linux-gnu
45417294812029
45418294812129
45419294812229
4812342
45420294812429
45421294812529
45422294812629
4542348127
4812842
4812942
4813042
45424294813129
45425364813236
45426294813329
4813442
45427294813529
4813642
45428294813729
45429364813836
45430294813929
4814042
45431294814129
45432294814229
4814342
45433364814436
45434294814529
4814642
45435294814729
45436294814829
4814942
4815042
45437294815129
4543848152
4543948153
...@@ -45472,17 +48186,26 @@ powerpc64le-linux-gnu...@@ -45472,17 +48186,26 @@ powerpc64le-linux-gnu
4547248186
4547348187
4547448188
4818942
45475294819029
45476294819129
45477294819229
4547848193
4547948194
4819542
45480294819629
4819742
4548148198
4548248199
4548348200
4548448201
45485294820229
4820342
4820442
4820542
4820642
4820742
4820842
45486294820929
45487294821029
45488294821129
...@@ -45595,7 +48318,11 @@ powerpc64le-linux-gnu...@@ -45595,7 +48318,11 @@ powerpc64le-linux-gnu
45595294831829
45596294831929
45597294832029
4832142
4832242
45598294832329
4832442
4832542
45599294832629
45600294832729
45601294832829
...@@ -45611,6 +48338,7 @@ powerpc64le-linux-gnu...@@ -45611,6 +48338,7 @@ powerpc64le-linux-gnu
45611294833829
45612364833936
45613294834029
4834142
45614294834229
45615294834329
45616294834429
...@@ -45618,7 +48346,10 @@ powerpc64le-linux-gnu...@@ -45618,7 +48346,10 @@ powerpc64le-linux-gnu
45618294834629
45619294834729
45620294834829
4834942
45621294835029
4835142
4835242
45622294835329
45623294835429
45624294835529
...@@ -45649,6 +48380,11 @@ powerpc64le-linux-gnu...@@ -45649,6 +48380,11 @@ powerpc64le-linux-gnu
45649294838029
45650294838129
45651294838229
4838342
4838442
4838542
4838642
4838742
45652294838829
45653294838929
45654294839029
...@@ -45667,12 +48403,17 @@ powerpc64le-linux-gnu...@@ -45667,12 +48403,17 @@ powerpc64le-linux-gnu
45667294840329
45668364840436
45669294840529
4840642
45670294840729
4840842
45671294840929
45672294841029
45673294841129
45674294841229
45675294841329
4841442
4841542
4841642
45676294841729
45677294841829
45678294841929
...@@ -45680,7 +48421,11 @@ powerpc64le-linux-gnu...@@ -45680,7 +48421,11 @@ powerpc64le-linux-gnu
45680294842129
45681294842229
45682294842329
4842442
45683294842529
4842642
4842742
4842842
45684294842929
45685294843029
45686294843129
...@@ -45694,6 +48439,8 @@ powerpc64le-linux-gnu...@@ -45694,6 +48439,8 @@ powerpc64le-linux-gnu
45694294843929
45695294844029
45696294844129
4844242
4844342
45697294844429
45698294844529
45699294844629
...@@ -45704,24 +48451,34 @@ powerpc64le-linux-gnu...@@ -45704,24 +48451,34 @@ powerpc64le-linux-gnu
45704364845136
45705294845229
45706334845333
4845442
45707294845529
45708294845629
45709294845729
4571048458
4571148459
4571248460
4846142
45713294846229
45714364846336
45715294846429
4846542
45716294846629
4846742
45717294846829
4846942
4847042
45718294847129
4847242
4847342
45719294847429
4572048475
45721364847636
45722294847729
4847842
45723294847929
4572448480
4848142
45725294848229
4572648483
45727294848429
...@@ -45754,6 +48511,9 @@ powerpc64le-linux-gnu...@@ -45754,6 +48511,9 @@ powerpc64le-linux-gnu
45754294851129
45755294851229
45756294851329
4851442
4851542
4851642
45757294851729
4575848518
45759294851929
...@@ -45788,6 +48548,8 @@ powerpc64le-linux-gnu...@@ -45788,6 +48548,8 @@ powerpc64le-linux-gnu
45788364854836
45789294854929
45790294855029
4855142
4855242
45791294855329
45792294855429
45793294855529
...@@ -45807,48 +48569,93 @@ powerpc64le-linux-gnu...@@ -45807,48 +48569,93 @@ powerpc64le-linux-gnu
4580748569
4580848570
45809294857129
4857242
4857342
4857442
45810294857529
45811294857629
45812294857729
4857842
4857942
45813294858029
4858142
4858242
4858342
45814294858429
45815294858529
45816324858632
4581748587
45818294858829
45819294858929
4859042
4859142
45820294859229
45821294859329
45822294859429
45823294859529
45824294859629
4582548597
4859842
45826294859929
45827294860029
4582848601
4582948602
45830294860329
4860442
4860542
4583148606
45832294860729
4583348608
4583448609
45835294861029
45836294861129
4861242
4861342
45837294861429
4861542
4861642
4861742
4861842
45838294861929
45839294862029
4862142
4862242
45840294862329
4862442
45841294862529
4862642
4862742
4862842
45842294862929
4863042
4863142
4863242
45843294863329
45844294863429
4863542
4863642
45845294863729
4863842
4863942
45846294864029
4864142
45847294864229
4864342
4864442
4864542
45848294864629
4864742
4864842
4864942
4865042
45849294865129
4865242
4865342
4865442
45850294865529
45851294865629
4865742
4865842
45852294865929
45853294866029
45854294866129
...@@ -45867,6 +48674,8 @@ powerpc64le-linux-gnu...@@ -45867,6 +48674,8 @@ powerpc64le-linux-gnu
45867364867436
45868294867529
45869294867629
4867742
4867842
45870294867929
45871294868029
45872294868129
...@@ -45888,7 +48697,10 @@ powerpc64le-linux-gnu...@@ -45888,7 +48697,10 @@ powerpc64le-linux-gnu
45888294869729
45889294869829
45890294869929
4870042
4870142
45891294870229
4870342
45892294870429
45893294870529
45894294870629
...@@ -45901,14 +48713,17 @@ powerpc64le-linux-gnu...@@ -45901,14 +48713,17 @@ powerpc64le-linux-gnu
45901294871329
45902364871436
45903294871529
4871642
45904294871729
45905294871829
45906364871936
45907294872029
4872142
45908294872229
45909294872329
45910364872436
45911294872529
4872642
45912294872729
45913294872829
45914294872929
...@@ -46506,7 +49321,7 @@ powerpc64le-linux-gnu...@@ -46506,7 +49321,7 @@ powerpc64le-linux-gnu
46506294932129
4650729 394932229 39
46508294932329
46509294932429 42
46510364932536
46511374932637
46512374932737
...@@ -47632,17 +50447,19 @@ powerpc64le-linux-gnu...@@ -47632,17 +50447,19 @@ powerpc64le-linux-gnu
47632295044729
47633295044829
47634295044929
5045042
47635295045129
47636295045229
47637295045329
47638295045429
5045529 42
47639295045629
47640295045729
47641295045829
47642295045929
47643295046029
47644295046129
47645295046242
47646295046329
47647295046429
47648295046529
...@@ -47672,9 +50489,9 @@ powerpc64le-linux-gnu...@@ -47672,9 +50489,9 @@ powerpc64le-linux-gnu
47672295048929
47673295049029
47674295049129
47675295049229 42
47676305049330
47677295049429 42
47678295049529
47679295049629
47680295049729
...@@ -47740,7 +50557,7 @@ powerpc64le-linux-gnu...@@ -47740,7 +50557,7 @@ powerpc64le-linux-gnu
47740295055729
47741295055829
47742295055929
47743295056029 42
47744295056129
47745295056229
47746295056329
...@@ -48045,12 +50862,14 @@ powerpc64le-linux-gnu...@@ -48045,12 +50862,14 @@ powerpc64le-linux-gnu
48045295086229
48046295086329
48047295086429
5086542
48048295086629
48049295086729
48050295086829
48051295086929
48052295087029
48053295087129
5087242
48054295087329
48055295087429
48056295087529
...@@ -48156,6 +50975,8 @@ powerpc64le-linux-gnu...@@ -48156,6 +50975,8 @@ powerpc64le-linux-gnu
48156295097529
48157295097629
48158295097729
5097842
5097942
48159295098029
48160295098129
48161355098235
...@@ -48846,7 +51667,9 @@ powerpc64-linux-gnu...@@ -48846,7 +51667,9 @@ powerpc64-linux-gnu
48846275166727
4884751668
48848275166927
51670
48849275167127
51672
48850275167327
4885151674
4885251675
...@@ -48875,6 +51698,8 @@ powerpc64-linux-gnu...@@ -48875,6 +51698,8 @@ powerpc64-linux-gnu
4887551698
4887651699
4887751700
51701
51702
48878125170312
48879125170412
48880125170512
...@@ -48883,47 +51708,83 @@ powerpc64-linux-gnu...@@ -48883,47 +51708,83 @@ powerpc64-linux-gnu
48883275170827
4888451709
48885275171027
51711
51712
48886275171327
4888712 165171412 16
48888205171520
51716
51717
48889125171812
48890125171912
48891125172012
48892275172127
4889351722
48894275172327
51724
48895275172527
48896275172627
4889751727
48898275172827
51729
48899275173027
4890051731
4890151732
4890251733
51734
48903125173512
48904125173612
48905125173712
48906125173812
48907125173912
51740
51741
51742
51743
51744
51745
51746
51747
51748
51749
51750
51751
51752
51753
48908125175412
48909155175515
51756
48910125175712
48911125175812
51759
4891212 165176012 16
51761
48913125176212
48914125176312
4891551764
48916125176512
48917165176616
51767
48918125176812
51769
48919275177027
4892051771
48921275177227
51773
48922275177427
4892351775
4892451776
4892551777
4892651778
51779
51780
51781
51782
51783
51784
51785
51786
51787
48927125178812
48928125178912
4892951790
...@@ -48947,33 +51808,55 @@ powerpc64-linux-gnu...@@ -48947,33 +51808,55 @@ powerpc64-linux-gnu
4894751808
4894851809
48949205181020
51811
51812
48950125181312
48951125181412
48952125181512
48953125181612
4895451817
4895551818
51819
51820
51821
48956125182212
51823
51824
51825
48957275182627
4895851827
48959275182827
51829
48960275183027
48961275183127
4896251832
48963275183327
51834
48964275183527
48965275183627
4896651837
48967275183827
4896851839
51840
48969275184127
48970355184235
4897151843
4897251844
51845
51846
51847
51848
51849
51850
51851
51852
51853
51854
48973125185512
48974125185612
48975275185727
48976275185827
51859
48977125186012
48978355186135
48979125186212
...@@ -49007,9 +51890,16 @@ powerpc64-linux-gnu...@@ -49007,9 +51890,16 @@ powerpc64-linux-gnu
4900751890
4900851891
4900951892
51893
51894
51895
51896
51897
51898
49010275189927
4901151900
49012275190127
51902
49013275190327
49014125190412
49015125190512
...@@ -49018,6 +51908,8 @@ powerpc64-linux-gnu...@@ -49018,6 +51908,8 @@ powerpc64-linux-gnu
49018165190816
49019125190912
4902015 165191015 16
51911
51912
49021125191312
49022125191412
4902351915
...@@ -49027,10 +51919,17 @@ powerpc64-linux-gnu...@@ -49027,10 +51919,17 @@ powerpc64-linux-gnu
49027125191912
49028125192012
49029125192112
51922
51923
51924
51925
49030125192612
49031165192716
51928
51929
49032125193012
49033125193112
51932
49034125193312
49035125193412
49036165193516
...@@ -49050,6 +51949,7 @@ powerpc64-linux-gnu...@@ -49050,6 +51949,7 @@ powerpc64-linux-gnu
49050165194916
49051125195012
49052125195112
51952
49053125195312
49054125195412
49055155195515
...@@ -49065,7 +51965,9 @@ powerpc64-linux-gnu...@@ -49065,7 +51965,9 @@ powerpc64-linux-gnu
49065275196527
4906651966
49067275196727
51968
49068275196927
51970
49069125197112
49070125197212
49071125197312
...@@ -49089,17 +51991,29 @@ powerpc64-linux-gnu...@@ -49089,17 +51991,29 @@ powerpc64-linux-gnu
4908951991
4909012 165199212 16
49091195199319
51994
49092195199519
51996
49093195199719
51998
49094195199919
52000
49095195200119
52002
49096195200319
52004
49097195200519
52006
49098195200719
52008
49099195200919
52010
49100195201119
52012
49101195201319
52014
49102195201519
52016
49103125201712
49104125201812
49105305201930
...@@ -49127,23 +52041,29 @@ powerpc64-linux-gnu...@@ -49127,23 +52041,29 @@ powerpc64-linux-gnu
49127275204127
4912852042
49129275204327
52044
49130275204527
49131275204627
4913252047
49133275204827
52049
49134275205027
49135275205127
4913652052
49137275205327
52054
49138275205527
49139125205612
49140125205712
49141125205812
4914252059
4914352060
52061
49144275206227
4914552063
49146275206427
52065
52066
49147275206727
49148125206812
49149125206912
...@@ -49159,23 +52079,34 @@ powerpc64-linux-gnu...@@ -49159,23 +52079,34 @@ powerpc64-linux-gnu
49159125207912
49160125208012
49161125208112
5208242
49162125208312
49163125208412
49164125208512
4916552086
52087
52088
52089
49166275209027
4916752091
49168275209227
52093
49169275209427
52095
49170275209627
4917152097
49172275209827
52099
49173275210027
49174275210127
4917552102
52103
49176275210427
52105
49177275210627
49178235210723
52108
52109
49179125211012
4918052111
4918152112
...@@ -49214,17 +52145,26 @@ powerpc64-linux-gnu...@@ -49214,17 +52145,26 @@ powerpc64-linux-gnu
4921452145
4921552146
4921652147
52148
49217125214912
49218125215012
49219195215119
4922052152
4922152153
52154
49222125215512
4922352156
4922452157
4922552158
4922652159
52160
49227125216112
52162
52163
52164
52165
52166
52167
49228125216812
49229165216916
49230165217016
...@@ -49337,7 +52277,11 @@ powerpc64-linux-gnu...@@ -49337,7 +52277,11 @@ powerpc64-linux-gnu
49337125227712
49338125227812
49339205227920
52280
52281
49340205228220
52283
52284
49341125228512
49342125228612
49343195228719
...@@ -49353,6 +52297,7 @@ powerpc64-linux-gnu...@@ -49353,6 +52297,7 @@ powerpc64-linux-gnu
49353275229727
4935452298
49355275229927
52300
49356275230127
49357295230229
49358285230328
...@@ -49360,7 +52305,10 @@ powerpc64-linux-gnu...@@ -49360,7 +52305,10 @@ powerpc64-linux-gnu
49360165230516
49361165230616
4936215 165230715 16
52308
4936312 165230912 16
52310
52311
49364125231212
49365125231312
49366125231412
...@@ -49391,6 +52339,11 @@ powerpc64-linux-gnu...@@ -49391,6 +52339,11 @@ powerpc64-linux-gnu
49391145233914
49392165234016
49393125234112
52342
52343
52344
52345
52346
49394125234712
49395125234812
49396125234912
...@@ -49409,12 +52362,17 @@ powerpc64-linux-gnu...@@ -49409,12 +52362,17 @@ powerpc64-linux-gnu
49409275236227
4941052363
49411275236427
52365
49412275236627
52367
49413125236812
49414125236912
49415125237012
49416125237112
49417125237212
52373
52374
52375
49418125237612
49419125237712
49420125237812
...@@ -49422,7 +52380,11 @@ powerpc64-linux-gnu...@@ -49422,7 +52380,11 @@ powerpc64-linux-gnu
49422125238012
49423275238127
49424275238227
52383
49425275238427
52385
52386
52387
49426195238819
49427185238918
49428195239019
...@@ -49436,6 +52398,8 @@ powerpc64-linux-gnu...@@ -49436,6 +52398,8 @@ powerpc64-linux-gnu
49436125239812
49437125239912
49438125240012
52401
52402
49439125240312
49440125240412
49441125240512
...@@ -49446,24 +52410,34 @@ powerpc64-linux-gnu...@@ -49446,24 +52410,34 @@ powerpc64-linux-gnu
4944652410
49447165241116
49448335241233
52413
49449125241412
4945012 155241512 15
49451125241612
4945252417
4945352418
4945452419
52420
49455275242127
4945652422
49457275242327
52424
49458275242527
52426
4945915 165242715 16
52428
52429
4946015 165243015 16
52431
52432
49461275243327
4946252434
4946352435
49464275243627
52437
49465275243827
4946652439
52440
49467165244116
4946852442
49469125244312
...@@ -49496,6 +52470,9 @@ powerpc64-linux-gnu...@@ -49496,6 +52470,9 @@ powerpc64-linux-gnu
49496125247012
49497125247112
4949812 165247212 16
52473
52474
52475
49499125247612
4950052477
49501125247812
...@@ -49530,6 +52507,8 @@ powerpc64-linux-gnu...@@ -49530,6 +52507,8 @@ powerpc64-linux-gnu
4953052507
49531125250812
49532125250912
52510
52511
49533125251212
49534125251312
49535125251412
...@@ -49549,48 +52528,93 @@ powerpc64-linux-gnu...@@ -49549,48 +52528,93 @@ powerpc64-linux-gnu
4954952528
4955052529
49551165253016
52531
52532
52533
49552125253412
49553125253512
49554165253616
52537
52538
49555125253912
52540
52541
52542
49556125254312
49557125254412
49558325254532
4955952546
49560125254712
49561125254812
52549
52550
49562125255112
49563125255212
49564125255312
49565125255412
49566125255512
4956752556
52557
49568165255816
49569125255912
4957052560
4957152561
49572125256212
4957352563
52564
52565
49574125256612
4957552567
4957652568
49577125256912
49578205257020
52571
52572
49579205257320
52574
52575
52576
52577
49580125257812
4958115 165257915 16
52580
52581
4958212 165258212 16
52583
49583165258416
52585
52586
52587
4958415 165258815 16
52589
52590
52591
4958512 165259212 16
4958615 165259315 16
52594
52595
4958715 165259615 16
52597
52598
4958812 165259912 16
52600
49589165260116
52602
52603
52604
49590165260516
52606
52607
52608
52609
49591165261016
52611
52612
52613
49592125261412
49593125261512
52616
52617
49594165261816
49595165261916
49596165262016
...@@ -49609,6 +52633,8 @@ powerpc64-linux-gnu...@@ -49609,6 +52633,8 @@ powerpc64-linux-gnu
4960952633
49610125263412
49611125263512
52636
52637
49612125263812
49613125263912
4961412 165264012 16
...@@ -49630,7 +52656,10 @@ powerpc64-linux-gnu...@@ -49630,7 +52656,10 @@ powerpc64-linux-gnu
49630165265616
49631125265712
49632165265816
52659
52660
49633125266112
52662
49634125266312
49635125266412
49636125266512
...@@ -49643,14 +52672,17 @@ powerpc64-linux-gnu...@@ -49643,14 +52672,17 @@ powerpc64-linux-gnu
49643275267227
4964452673
49645275267427
52675
49646275267627
49647275267727
4964852678
49649275267927
52680
49650275268127
49651275268227
4965252683
49653275268427
52685
49654275268627
49655125268712
49656125268812
...@@ -50248,7 +53280,7 @@ powerpc64-linux-gnu...@@ -50248,7 +53280,7 @@ powerpc64-linux-gnu
50248125328012
5024939 125328139 12
50250125328212
50251125328312 42
5025253284
50253375328537
50254375328637
...@@ -51374,17 +54406,19 @@ powerpc64-linux-gnu...@@ -51374,17 +54406,19 @@ powerpc64-linux-gnu
51374125440612
51375125440712
51376125440812
5440942
51377125441012
51378125441112
51379125441212
51380125441312
5138114 155441414 15 42
51382125441512
51383125441612
51384125441712
51385125441812
51386125441912
51387125442012
5442142
5138812 185442212 18
51389125442312
5139012 185442412 18
...@@ -51414,9 +54448,9 @@ powerpc64-linux-gnu...@@ -51414,9 +54448,9 @@ powerpc64-linux-gnu
51414125444812
51415125444912
51416125445012
5141714 155445114 15 42
51418305445230
51419125445312 42
51420125445412
51421125445512
51422245445624
...@@ -51482,7 +54516,7 @@ powerpc64-linux-gnu...@@ -51482,7 +54516,7 @@ powerpc64-linux-gnu
51482125451612
51483155451715
51484125451812
51485125451912 42
51486235452023
51487125452112
51488125452212
...@@ -51787,12 +54821,14 @@ powerpc64-linux-gnu...@@ -51787,12 +54821,14 @@ powerpc64-linux-gnu
51787125482112
51788125482212
51789125482312
5482442
51790125482512
51791125482612
51792125482712
51793125482812
51794125482912
51795125483012
5483142
51796125483212
51797125483312
51798125483412
...@@ -51898,6 +54934,8 @@ powerpc64-linux-gnu...@@ -51898,6 +54934,8 @@ powerpc64-linux-gnu
51898125493412
51899185493518
51900125493612
5493742
5493842
5190112 165493912 16
5190212 165494012 16
51903355494135
...@@ -52588,7 +55626,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52588,7 +55626,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52588275562627
5258955627
52590275562827
55629
52591275563027
55631
52592275563227
52593135563313
52594135563413
...@@ -52617,6 +55657,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52617,6 +55657,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5261755657
5261855658
5261955659
55660
55661
526200556620
526210556630
526220556640
...@@ -52625,20 +55667,27 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52625,20 +55667,27 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52625275566727
5262655668
52627275566927
55670
55671
52628275567227
526291 16556731 16
52630205567420
55675
55676
526315556775
526320556780
526330556790
52634275568027
5263555681
52636275568227
55683
52637275568427
52638275568527
5263955686
52640275568727
55688
52641275568927
55690
52642315569131
52643315569231
52644315569331
...@@ -52647,21 +55696,50 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52647,21 +55696,50 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
526471556961
526480556970
526490556980
55699
55700
55701
55702
55703
55704
55705
55706
55707
55708
55709
55710
55711
55712
526500557130
52651155571415
55715
526521557161
526531557171
55718
526541 16557191 16
55720
526550557210
526560557220
526570557230
526580557240
52659165572516
55726
526600557270
55728
52661275572927
5266255730
52663275573127
55732
52664275573327
55734
55735
55736
55737
55738
55739
55740
55741
55742
526650557430
526665557445
526675557455
...@@ -52689,33 +55767,55 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52689,33 +55767,55 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
526890557670
52690135576813
52691205576920
55770
55771
526920557720
526931557731
526945557745
526950557750
52696135577613
52697135577713
55778
55779
55780
526980557810
55782
55783
55784
52699275578527
5270055786
52701275578727
55788
52702275578927
52703275579027
5270455791
52705275579227
55793
52706275579427
52707275579527
5270855796
52709275579727
5271055798
55799
52711275580027
52712355580135
5271355802
55803
52714135580413
55805
55806
55807
55808
55809
55810
55811
55812
55813
527155558145
527160558150
52717275581627
52718275581727
55818
527191558191
52720355582035
527211558211
...@@ -52748,10 +55848,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52748,10 +55848,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52748165584816
52749165584916
52750165585016
55851
52751315585231
55853
55854
55855
55856
55857
52752275585827
5275355859
52754275586027
55861
52755275586227
527560558630
527571558641
...@@ -52760,6 +55867,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52760,6 +55867,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52760165586716
527615558685
5276215 165586915 16
55870
55871
527630558720
527645558735
527650558740
...@@ -52769,10 +55878,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52769,10 +55878,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
527695558785
527700558790
527711558801
55881
55882
55883
55884
527725558855
52773165588616
55887
55888
527745558895
527755558905
55891
527760558920
527771 5558931 5
52778165589416
...@@ -52792,6 +55908,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52792,6 +55908,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52792165590816
527935559095
527940559100
55911
527950559120
527960559130
52797155591415
...@@ -52807,7 +55924,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52807,7 +55924,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52807275592427
5280855925
52809275592627
55927
52810275592827
55929
528111559301
528121559311
528131559321
...@@ -52831,17 +55950,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52831,17 +55950,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5283155950
528320 16559510 16
52833195595219
55953
52834195595419
55955
52835195595619
55957
52836195595819
55959
52837195596019
55961
52838195596219
55963
52839195596419
55965
52840195596619
55967
52841195596819
55969
52842195597019
55971
52843195597219
55973
52844195597419
55975
528451559761
528461559771
52847305597830
...@@ -52869,23 +56000,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52869,23 +56000,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52869275600027
5287056001
52871275600227
56003
52872275600427
52873275600527
5287456006
52875275600727
56008
52876275600927
52877275601027
5287856011
52879275601227
56013
52880275601427
528811560151
528821560161
528831560171
56018
52884135601913
52885135602013
52886275602127
5288756022
52888275602327
56024
56025
52889275602627
528901560271
528910560280
...@@ -52901,23 +56038,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52901,23 +56038,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
529010560380
529020560390
529031560401
5604142
529041560421
529050560430
529060560440
529073 11560453 8 11
56046
56047
56048
52908275604927
5290956050
52910275605127
56052
52911275605327
56054
52912275605527
5291356056
52914275605727
56058
52915275605927
52916275606027
5291756061
56062
52918275606327
56064
52919275606527
52920235606623
56067
56068
529210560690
529220560700
52923165607116
...@@ -52956,17 +56104,26 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -52956,17 +56104,26 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5295656104
5295756105
529580561060
56107
529590561080
529600561090
52961195611019
52962135611113
52963135611213
56113
52964115611411
56115
52965165611616
52966135611713
52967135611813
52968165611916
529691561201
56121
56122
56123
56124
56125
56126
529705561275
52971165612816
52972165612916
...@@ -53079,7 +56236,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53079,7 +56236,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
530790562360
530800562370
53081205623820
56239
56240
53082205624120
56242
56243
530830562440
530845562455
53085195624619
...@@ -53095,6 +56256,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53095,6 +56256,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53095275625627
5309656257
53097275625827
56259
53098275626027
53099295626129
53100285626228
...@@ -53102,7 +56264,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53102,7 +56264,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53102165626416
53103165626516
5310415 165626615 16
56267
531050 16562680 16
56269
56270
531060562710
531070562720
531080562730
...@@ -53133,6 +56298,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53133,6 +56298,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53133145629814
53134165629916
531351 5563001 5
56301
56302
56303
56304
56305
531361563061
531370563070
531380563080
...@@ -53151,12 +56321,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53151,12 +56321,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53151275632127
5315256322
53153275632327
56324
53154275632527
56326
531555563275
531565563285
531575563295
531580563300
531595563315
56332
56333
56334
531608563358
531618563368
531628563378
...@@ -53164,7 +56339,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53164,7 +56339,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
531640563390
53165275634027
53166275634127
56342
53167275634327
56344
56345
56346
53168195634719
53169185634818
53170195634919
...@@ -53178,6 +56357,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53178,6 +56357,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
531780563570
531790563580
531805563595
56360
56361
531810563620
531820563630
531830563640
...@@ -53188,24 +56369,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53188,24 +56369,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5318856369
53189165637016
53190335637133
56372
531910563730
531920 15563740 15
531934563754
53194135637613
53195135637713
53196135637813
56379
53197275638027
5319856381
53199275638227
56383
53200275638427
56385
5320115 165638615 16
56387
56388
5320215 165638915 16
56390
56391
53203275639227
53204135639313
5320556394
53206275639527
56396
53207275639727
53208135639813
56399
53209165640016
5321056401
532115564025
...@@ -53238,6 +56429,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53238,6 +56429,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
532380564290
532390564300
532401 16564311 16
56432
56433
56434
53241125643512
5324256436
532431564371
...@@ -53272,6 +56466,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53272,6 +56466,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5327256466
532730564670
532741564681
56469
56470
532750564710
532762564722
532770564730
...@@ -53291,48 +56487,93 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53291,48 +56487,93 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53291135648713
53292135648813
53293165648916
56490
56491
56492
532945564935
532955564945
53296165649516
56496
56497
532970564980
56499
56500
56501
532980565020
53299125650312
53300325650432
5330156505
533021565061
533031565071
56508
56509
533041565101
533051565111
533061565121
533071565131
533081565141
53309135651513
56516
53310165651716
533110565180
533120565190
533130565200
533140565210
56522
56523
533150565240
533160565250
53317165652616
53318165652716
53319125652812
53320205652920
56530
56531
53321205653220
56533
56534
56535
56536
533223565373
5332315 165653815 16
56539
56540
533240 16565410 16
56542
53325165654316
56544
56545
56546
5332615 165654715 16
56548
56549
56550
533270 16565510 16
5332815 165655215 16
56553
56554
5332915 165655515 16
56556
56557
533300 16565580 16
56559
53331165656016
56561
56562
56563
53332165656416
56565
56566
56567
56568
53333165656916
56570
56571
56572
533340565730
533350565740
56575
56576
53336165657716
53337165657816
53338165657916
...@@ -53351,6 +56592,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53351,6 +56592,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5335156592
533520565930
533531565941
56595
56596
533540565970
533551565981
533560 16565990 16
...@@ -53372,7 +56615,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53372,7 +56615,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53372165661516
533735566165
53374165661716
56618
56619
533750566200
56621
533765566225
533775566235
533780566240
...@@ -53385,14 +56631,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53385,14 +56631,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53385275663127
5338656632
53387275663327
56634
53388275663527
53389275663627
5339056637
53391275663827
56639
53392275664027
53393275664127
5339456642
53395275664327
56644
53396275664527
533971566461
533981566471
...@@ -53990,7 +57239,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -53990,7 +57239,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
539900572390
539910 39572400 39
539921572411
539931572421 42
5399457243
53995375724437
53996375724537
...@@ -55116,17 +58365,19 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -55116,17 +58365,19 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
551160583650
551170583660
551180583670
5836842
551195583695
551201583701
551211583711
551220 1583720 1
5512314 155837314 15 42
551240583740
551251583751
551260583760
551270583770
551280583780
551290583790
5838042
551305 18583815 18
551311583821
551321 18583831 18
...@@ -55156,9 +58407,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -55156,9 +58407,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
551560584070
551570584080
551580584090
5515914 155841014 15 42
55160305841130
551618584128 42
551621584131
551635584145
55164245841524
...@@ -55224,7 +58475,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -55224,7 +58475,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
552240584750
55225155847615
552260584770
552270584780 42
55228235847923
552295584805
552305584815
...@@ -55529,12 +58780,14 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -55529,12 +58780,14 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
555290587800
555300587810
555310587820
5878342
555320587840
555330587850
555340587860
555350587870
555360587880
555370587890
5879042
555380587910
555390587920
555400587930
...@@ -55640,6 +58893,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf...@@ -55640,6 +58893,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
556400588930
55641185889418
556420588950
5889642
5889742
556430 16588980 16
5564412 165889912 16
55645355890035
lib/libc/glibc/fns.txt+221-4
...@@ -199,7 +199,9 @@ __acosf_finite m...@@ -199,7 +199,9 @@ __acosf_finite m
199__acosh_finite m199__acosh_finite m
200__acoshf128_finite m200__acoshf128_finite m
201__acoshf_finite m201__acoshf_finite m
202__acoshieee128 m
202__acoshl_finite m203__acoshl_finite m
204__acosieee128 m
203__acosl_finite m205__acosl_finite m
204__adddf3 c206__adddf3 c
205__addsf3 c207__addsf3 c
...@@ -228,6 +230,8 @@ __align_cpy_2 c...@@ -228,6 +230,8 @@ __align_cpy_2 c
228__align_cpy_4 c230__align_cpy_4 c
229__align_cpy_8 c231__align_cpy_8 c
230__arch_prctl c232__arch_prctl c
233__argp_errorieee128 c
234__argp_failureieee128 c
231__argz_count c235__argz_count c
232__argz_next c236__argz_next c
233__argz_stringify c237__argz_stringify c
...@@ -236,20 +240,27 @@ __ashrdi3 c...@@ -236,20 +240,27 @@ __ashrdi3 c
236__asin_finite m240__asin_finite m
237__asinf128_finite m241__asinf128_finite m
238__asinf_finite m242__asinf_finite m
243__asinhieee128 m
244__asinieee128 m
239__asinl_finite m245__asinl_finite m
240__asprintf c246__asprintf c
241__asprintf_chk c247__asprintf_chk c
248__asprintf_chkieee128 c
249__asprintfieee128 c
242__assert c250__assert c
243__assert_fail c251__assert_fail c
244__assert_perror_fail c252__assert_perror_fail c
245__atan2_finite m253__atan2_finite m
246__atan2f128_finite m254__atan2f128_finite m
247__atan2f_finite m255__atan2f_finite m
256__atan2ieee128 m
248__atan2l_finite m257__atan2l_finite m
249__atanh_finite m258__atanh_finite m
250__atanhf128_finite m259__atanhf128_finite m
251__atanhf_finite m260__atanhf_finite m
261__atanhieee128 m
252__atanhl_finite m262__atanhl_finite m
263__atanieee128 m
253__atomic_feclearexcept c264__atomic_feclearexcept c
254__atomic_feholdexcept c265__atomic_feholdexcept c
255__atomic_feupdateenv c266__atomic_feupdateenv c
...@@ -258,21 +269,50 @@ __backtrace_symbols c...@@ -258,21 +269,50 @@ __backtrace_symbols c
258__backtrace_symbols_fd c269__backtrace_symbols_fd c
259__bsd_getpgrp c270__bsd_getpgrp c
260__bzero c271__bzero c
272__cabsieee128 m
273__cacoshieee128 m
274__cacosieee128 m
275__canonicalizeieee128 m
276__cargieee128 m
277__casinhieee128 m
278__casinieee128 m
279__catanhieee128 m
280__catanieee128 m
281__cbrtieee128 m
282__ccoshieee128 m
283__ccosieee128 m
284__ceilieee128 m
285__cexpieee128 m
261__check_rhosts_file c286__check_rhosts_file c
262__chk_fail c287__chk_fail c
288__cimagieee128 m
263__clog10 m289__clog10 m
264__clog10f m290__clog10f m
291__clog10ieee128 m
265__clog10l m292__clog10l m
293__clogieee128 m
266__clone c294__clone c
267__close c295__close c
268__cmpdi2 c296__cmpdi2 c
269__cmsg_nxthdr c297__cmsg_nxthdr c
270__confstr_chk c298__confstr_chk c
299__conjieee128 m
271__connect c300__connect c
301__copysignieee128 m
272__cosh_finite m302__cosh_finite m
273__coshf128_finite m303__coshf128_finite m
274__coshf_finite m304__coshf_finite m
305__coshieee128 m
275__coshl_finite m306__coshl_finite m
307__cosieee128 m
308__cpowieee128 m
309__cprojieee128 m
310__crealieee128 m
311__csinhieee128 m
312__csinieee128 m
313__csqrtieee128 m
314__ctanhieee128 m
315__ctanieee128 m
276__ctype32_b c316__ctype32_b c
277__ctype32_tolower c317__ctype32_tolower c
278__ctype32_toupper c318__ctype32_toupper c
...@@ -300,33 +340,55 @@ __divdf3 c...@@ -300,33 +340,55 @@ __divdf3 c
300__divdi3 c340__divdi3 c
301__divsf3 c341__divsf3 c
302__dprintf_chk c342__dprintf_chk c
343__dprintf_chkieee128 c
344__dprintfieee128 c
303__dup2 c345__dup2 c
304__duplocale c346__duplocale c
305__endmntent c347__endmntent c
306__environ c348__environ c
307__eqdf2 c349__eqdf2 c
308__eqsf2 c350__eqsf2 c
351__erfcieee128 m
352__erfieee128 m
353__errieee128 c
309__errno_location c354__errno_location c
355__error_at_lineieee128 c
356__errorieee128 c
357__errxieee128 c
310__exp10_finite m358__exp10_finite m
311__exp10f128_finite m359__exp10f128_finite m
312__exp10f_finite m360__exp10f_finite m
361__exp10ieee128 m
313__exp10l_finite m362__exp10l_finite m
314__exp2_finite m363__exp2_finite m
315__exp2f128_finite m364__exp2f128_finite m
316__exp2f_finite m365__exp2f_finite m
366__exp2ieee128 m
317__exp2l_finite m367__exp2l_finite m
318__exp_finite m368__exp_finite m
319__expf128_finite m369__expf128_finite m
320__expf_finite m370__expf_finite m
371__expieee128 m
321__expl m372__expl m
322__expl_finite m373__expl_finite m
323__explicit_bzero_chk c374__explicit_bzero_chk c
375__expm1ieee128 m
324__expm1l m376__expm1l m
325__extendsfdf2 c377__extendsfdf2 c
378__f32addieee128 m
379__f32divieee128 m
380__f32mulieee128 m
381__f32subieee128 m
382__f64addieee128 m
383__f64divieee128 m
384__f64mulieee128 m
385__f64subieee128 m
386__fabsieee128 m
326__fbufsize c387__fbufsize c
327__fcntl c388__fcntl c
328__fdelt_chk c389__fdelt_chk c
329__fdelt_warn c390__fdelt_warn c
391__fdimieee128 m
330__fe_dfl_env m392__fe_dfl_env m
331__fe_dfl_mode m393__fe_dfl_mode m
332__fe_enabled_env m394__fe_enabled_env m
...@@ -359,10 +421,17 @@ __floatundidf c...@@ -359,10 +421,17 @@ __floatundidf c
359__floatundisf c421__floatundisf c
360__floatunsidf c422__floatunsidf c
361__floatunsisf c423__floatunsisf c
424__floorieee128 m
362__flt_rounds c425__flt_rounds c
426__fmaieee128 m
427__fmaxieee128 m
428__fmaxmagieee128 m
429__fminieee128 m
430__fminmagieee128 m
363__fmod_finite m431__fmod_finite m
364__fmodf128_finite m432__fmodf128_finite m
365__fmodf_finite m433__fmodf_finite m
434__fmodieee128 m
366__fmodl_finite m435__fmodl_finite m
367__fork c436__fork c
368__fpclassify m437__fpclassify m
...@@ -371,6 +440,8 @@ __fpclassifyf128 m...@@ -371,6 +440,8 @@ __fpclassifyf128 m
371__fpclassifyl m440__fpclassifyl m
372__fpending c441__fpending c
373__fprintf_chk c442__fprintf_chk c
443__fprintf_chkieee128 c
444__fprintfieee128 c
374__fpu_control c445__fpu_control c
375__fpurge c446__fpurge c
376__frame_state_for c447__frame_state_for c
...@@ -380,10 +451,17 @@ __freadable c...@@ -380,10 +451,17 @@ __freadable c
380__freading c451__freading c
381__free_hook c452__free_hook c
382__freelocale c453__freelocale c
454__frexpieee128 m
455__fromfpieee128 m
456__fromfpxieee128 m
457__fscanfieee128 c
383__fsetlocking c458__fsetlocking c
384__fwprintf_chk c459__fwprintf_chk c
460__fwprintf_chkieee128 c
461__fwprintfieee128 c
385__fwritable c462__fwritable c
386__fwriting c463__fwriting c
464__fwscanfieee128 c
387__fxstat c465__fxstat c
388__fxstat64 c466__fxstat64 c
389__fxstatat c467__fxstatat c
...@@ -403,6 +481,7 @@ __gethostname_chk c...@@ -403,6 +481,7 @@ __gethostname_chk c
403__getlogin_r_chk c481__getlogin_r_chk c
404__getmntent_r c482__getmntent_r c
405__getpagesize c483__getpagesize c
484__getpayloadieee128 m
406__getpgid c485__getpgid c
407__getpid c486__getpid c
408__gets_chk c487__gets_chk c
...@@ -418,7 +497,9 @@ __h_errno_location c...@@ -418,7 +497,9 @@ __h_errno_location c
418__hypot_finite m497__hypot_finite m
419__hypotf128_finite m498__hypotf128_finite m
420__hypotf_finite m499__hypotf_finite m
500__hypotieee128 m
421__hypotl_finite m501__hypotl_finite m
502__ilogbieee128 m
422__isalnum_l c503__isalnum_l c
423__isalpha_l c504__isalpha_l c
424__isascii_l c505__isascii_l c
...@@ -442,17 +523,29 @@ __isnanf c...@@ -442,17 +523,29 @@ __isnanf c
442__isnanf128 m523__isnanf128 m
443__isnanl c524__isnanl c
444__isoc99_fscanf c525__isoc99_fscanf c
526__isoc99_fscanfieee128 c
445__isoc99_fwscanf c527__isoc99_fwscanf c
528__isoc99_fwscanfieee128 c
446__isoc99_scanf c529__isoc99_scanf c
530__isoc99_scanfieee128 c
447__isoc99_sscanf c531__isoc99_sscanf c
532__isoc99_sscanfieee128 c
448__isoc99_swscanf c533__isoc99_swscanf c
534__isoc99_swscanfieee128 c
449__isoc99_vfscanf c535__isoc99_vfscanf c
536__isoc99_vfscanfieee128 c
450__isoc99_vfwscanf c537__isoc99_vfwscanf c
538__isoc99_vfwscanfieee128 c
451__isoc99_vscanf c539__isoc99_vscanf c
540__isoc99_vscanfieee128 c
452__isoc99_vsscanf c541__isoc99_vsscanf c
542__isoc99_vsscanfieee128 c
453__isoc99_vswscanf c543__isoc99_vswscanf c
544__isoc99_vswscanfieee128 c
454__isoc99_vwscanf c545__isoc99_vwscanf c
546__isoc99_vwscanfieee128 c
455__isoc99_wscanf c547__isoc99_wscanf c
548__isoc99_wscanfieee128 c
456__isprint_l c549__isprint_l c
457__ispunct_l c550__ispunct_l c
458__issignaling m551__issignaling m
...@@ -480,23 +573,29 @@ __ivaliduser c...@@ -480,23 +573,29 @@ __ivaliduser c
480__j0_finite m573__j0_finite m
481__j0f128_finite m574__j0f128_finite m
482__j0f_finite m575__j0f_finite m
576__j0ieee128 m
483__j0l_finite m577__j0l_finite m
484__j1_finite m578__j1_finite m
485__j1f128_finite m579__j1f128_finite m
486__j1f_finite m580__j1f_finite m
581__j1ieee128 m
487__j1l_finite m582__j1l_finite m
488__jn_finite m583__jn_finite m
489__jnf128_finite m584__jnf128_finite m
490__jnf_finite m585__jnf_finite m
586__jnieee128 m
491__jnl_finite m587__jnl_finite m
492__key_decryptsession_pk_LOCAL c588__key_decryptsession_pk_LOCAL c
493__key_encryptsession_pk_LOCAL c589__key_encryptsession_pk_LOCAL c
494__key_gendes_LOCAL c590__key_gendes_LOCAL c
591__ldexpieee128 m
495__ledf2 c592__ledf2 c
496__lesf2 c593__lesf2 c
497__lgamma_r_finite m594__lgamma_r_finite m
498__lgammaf128_r_finite m595__lgammaf128_r_finite m
499__lgammaf_r_finite m596__lgammaf_r_finite m
597__lgammaieee128 m
598__lgammaieee128_r m
500__lgammal_r_finite m599__lgammal_r_finite m
501__libc_allocate_rtsig c600__libc_allocate_rtsig c
502__libc_calloc c601__libc_calloc c
...@@ -512,23 +611,34 @@ __libc_memalign c...@@ -512,23 +611,34 @@ __libc_memalign c
512__libc_pvalloc c611__libc_pvalloc c
513__libc_realloc c612__libc_realloc c
514__libc_sa_len c613__libc_sa_len c
614__libc_single_threaded c
515__libc_stack_end ld615__libc_stack_end ld
516__libc_start_main c616__libc_start_main c
517__libc_valloc c617__libc_valloc c
518__libpthread_version_placeholder pthread618__libpthread_version_placeholder pthread
619__llogbieee128 m
620__llrintieee128 m
621__llroundieee128 m
519__log10_finite m622__log10_finite m
520__log10f128_finite m623__log10f128_finite m
521__log10f_finite m624__log10f_finite m
625__log10ieee128 m
522__log10l_finite m626__log10l_finite m
627__log1pieee128 m
523__log2_finite m628__log2_finite m
524__log2f128_finite m629__log2f128_finite m
525__log2f_finite m630__log2f_finite m
631__log2ieee128 m
526__log2l_finite m632__log2l_finite m
527__log_finite m633__log_finite m
634__logbieee128 m
528__logf128_finite m635__logf128_finite m
529__logf_finite m636__logf_finite m
637__logieee128 m
530__logl_finite m638__logl_finite m
531__longjmp_chk c639__longjmp_chk c
640__lrintieee128 m
641__lroundieee128 m
532__lseek c642__lseek c
533__lshrdi3 c643__lshrdi3 c
534__ltdf2 c644__ltdf2 c
...@@ -567,17 +677,26 @@ __memset_gg c...@@ -567,17 +677,26 @@ __memset_gg c
567__mips_fpu_getcw c677__mips_fpu_getcw c
568__mips_fpu_setcw c678__mips_fpu_setcw c
569__moddi3 c679__moddi3 c
680__modfieee128 m
570__monstartup c681__monstartup c
571__morecore c682__morecore c
572__mq_open_2 rt683__mq_open_2 rt
573__muldf3 c684__muldf3 c
574__mulsf3 c685__mulsf3 c
686__nanieee128 m
575__nanosleep c687__nanosleep c
688__nearbyintieee128 m
576__nedf2 c689__nedf2 c
577__negdf2 c690__negdf2 c
578__negsf2 c691__negsf2 c
579__nesf2 c692__nesf2 c
580__newlocale c693__newlocale c
694__nextafterieee128 m
695__nextdownieee128 m
696__nexttoward_to_ieee128 m
697__nexttowardf_to_ieee128 m
698__nexttowardieee128 m
699__nextupieee128 m
581__nl_langinfo_l c700__nl_langinfo_l c
582__nldbl__IO_fprintf c701__nldbl__IO_fprintf c
583__nldbl__IO_printf c702__nldbl__IO_printf c
...@@ -690,7 +809,11 @@ __nss_hosts_lookup c...@@ -690,7 +809,11 @@ __nss_hosts_lookup c
690__nss_next c809__nss_next c
691__nss_passwd_lookup c810__nss_passwd_lookup c
692__obstack_printf_chk c811__obstack_printf_chk c
812__obstack_printf_chkieee128 c
813__obstack_printfieee128 c
693__obstack_vprintf_chk c814__obstack_vprintf_chk c
815__obstack_vprintf_chkieee128 c
816__obstack_vprintfieee128 c
694__open c817__open c
695__open64 c818__open64 c
696__open64_2 c819__open64_2 c
...@@ -706,6 +829,7 @@ __posix_getopt c...@@ -706,6 +829,7 @@ __posix_getopt c
706__pow_finite m829__pow_finite m
707__powf128_finite m830__powf128_finite m
708__powf_finite m831__powf_finite m
832__powieee128 m
709__powl_finite m833__powl_finite m
710__ppc_get_timebase_freq c834__ppc_get_timebase_freq c
711__ppoll_chk c835__ppoll_chk c
...@@ -713,7 +837,10 @@ __pread64 c...@@ -713,7 +837,10 @@ __pread64 c
713__pread64_chk c837__pread64_chk c
714__pread_chk c838__pread_chk c
715__printf_chk c839__printf_chk c
840__printf_chkieee128 c
716__printf_fp c841__printf_fp c
842__printf_sizeieee128 c
843__printfieee128 c
717__profile_frequency c844__profile_frequency c
718__progname c845__progname c
719__progname_full c846__progname_full c
...@@ -744,6 +871,11 @@ __pthread_unregister_cancel_restore pthread...@@ -744,6 +871,11 @@ __pthread_unregister_cancel_restore pthread
744__pthread_unwind_next pthread871__pthread_unwind_next pthread
745__ptsname_r_chk c872__ptsname_r_chk c
746__pwrite64 c873__pwrite64 c
874__qecvtieee128 c
875__qecvtieee128_r c
876__qfcvtieee128 c
877__qfcvtieee128_r c
878__qgcvtieee128 c
747__rawmemchr c879__rawmemchr c
748__rcmd_errstr c880__rcmd_errstr c
749__read c881__read c
...@@ -762,12 +894,17 @@ __register_frame_table c...@@ -762,12 +894,17 @@ __register_frame_table c
762__remainder_finite m894__remainder_finite m
763__remainderf128_finite m895__remainderf128_finite m
764__remainderf_finite m896__remainderf_finite m
897__remainderieee128 m
765__remainderl_finite m898__remainderl_finite m
899__remquoieee128 m
766__res_init c900__res_init c
767__res_nclose c901__res_nclose c
768__res_ninit c902__res_ninit c
769__res_randomid c903__res_randomid c
770__res_state c904__res_state c
905__rintieee128 m
906__roundevenieee128 m
907__roundieee128 m
771__rpc_thread_createerr c908__rpc_thread_createerr c
772__rpc_thread_svc_fdset c909__rpc_thread_svc_fdset c
773__rpc_thread_svc_max_pollfd c910__rpc_thread_svc_max_pollfd c
...@@ -775,7 +912,11 @@ __rpc_thread_svc_pollfd c...@@ -775,7 +912,11 @@ __rpc_thread_svc_pollfd c
775__sbrk c912__sbrk c
776__scalb_finite m913__scalb_finite m
777__scalbf_finite m914__scalbf_finite m
915__scalbieee128 m
778__scalbl_finite m916__scalbl_finite m
917__scalblnieee128 m
918__scalbnieee128 m
919__scanfieee128 c
779__sched_cpualloc c920__sched_cpualloc c
780__sched_cpucount c921__sched_cpucount c
781__sched_cpufree c922__sched_cpufree c
...@@ -789,6 +930,8 @@ __secure_getenv c...@@ -789,6 +930,8 @@ __secure_getenv c
789__select c930__select c
790__send c931__send c
791__setmntent c932__setmntent c
933__setpayloadieee128 m
934__setpayloadsigieee128 m
792__setpgid c935__setpgid c
793__sigaction c936__sigaction c
794__sigaddset c937__sigaddset c
...@@ -799,24 +942,34 @@ __signbitf c...@@ -799,24 +942,34 @@ __signbitf c
799__signbitf128 m942__signbitf128 m
800__signbitl c943__signbitl c
801__signgam m944__signgam m
945__significandieee128 m
802__sigpause c946__sigpause c
803__sigsetjmp c947__sigsetjmp c
804__sigsuspend c948__sigsuspend c
805__sim_disabled_exceptions c949__sim_disabled_exceptions c
806__sim_exceptions c950__sim_exceptions c
807__sim_round_mode c951__sim_round_mode c
952__sincosieee128 m
808__sinh_finite m953__sinh_finite m
809__sinhf128_finite m954__sinhf128_finite m
810__sinhf_finite m955__sinhf_finite m
956__sinhieee128 m
811__sinhl_finite m957__sinhl_finite m
958__sinieee128 m
812__snprintf_chk c959__snprintf_chk c
960__snprintf_chkieee128 c
961__snprintfieee128 c
813__sprintf_chk c962__sprintf_chk c
963__sprintf_chkieee128 c
964__sprintfieee128 c
814__sqrt_finite m965__sqrt_finite m
815__sqrtdf2 c966__sqrtdf2 c
816__sqrtf128_finite m967__sqrtf128_finite m
817__sqrtf_finite m968__sqrtf_finite m
969__sqrtieee128 m
818__sqrtl_finite m970__sqrtl_finite m
819__sqrtsf2 c971__sqrtsf2 c
972__sscanfieee128 c
820__stack_chk_fail c973__stack_chk_fail c
821__stack_chk_guard ld974__stack_chk_guard ld
822__statfs c975__statfs c
...@@ -849,6 +1002,9 @@ __strcspn_g c...@@ -849,6 +1002,9 @@ __strcspn_g c
849__strdup c1002__strdup c
850__strerror_r c1003__strerror_r c
851__strfmon_l c1004__strfmon_l c
1005__strfmon_lieee128 c
1006__strfmonieee128 c
1007__strfromieee128 c
852__strftime_l c1008__strftime_l c
853__strlen_g c1009__strlen_g c
854__strncasecmp_l c1010__strncasecmp_l c
...@@ -883,6 +1039,8 @@ __strtod_l c...@@ -883,6 +1039,8 @@ __strtod_l c
883__strtof128_internal c1039__strtof128_internal c
884__strtof_internal c1040__strtof_internal c
885__strtof_l c1041__strtof_l c
1042__strtoieee128 c
1043__strtoieee128_l c
886__strtok_r c1044__strtok_r c
887__strtok_r_1c c1045__strtok_r_1c c
888__strtol_internal c1046__strtol_internal c
...@@ -902,48 +1060,93 @@ __strxfrm_l c...@@ -902,48 +1060,93 @@ __strxfrm_l c
902__subdf3 c1060__subdf3 c
903__subsf3 c1061__subsf3 c
904__swprintf_chk c1062__swprintf_chk c
1063__swprintf_chkieee128 c
1064__swprintfieee128 c
1065__swscanfieee128 c
905__sysconf c1066__sysconf c
906__sysctl c1067__sysctl c
907__syslog_chk c1068__syslog_chk c
1069__syslog_chkieee128 c
1070__syslogieee128 c
908__sysv_signal c1071__sysv_signal c
1072__tanhieee128 m
1073__tanieee128 m
1074__tgammaieee128 m
909__timezone c1075__timezone c
910__tls_get_addr ld1076__tls_get_addr ld
911__tls_get_addr_opt ld1077__tls_get_addr_opt ld
912__tls_get_offset ld1078__tls_get_offset ld
913__toascii_l c1079__toascii_l c
914__tolower_l c1080__tolower_l c
1081__totalorderieee128 m
1082__totalordermagieee128 m
915__toupper_l c1083__toupper_l c
916__towctrans c1084__towctrans c
917__towctrans_l c1085__towctrans_l c
918__towlower_l c1086__towlower_l c
919__towupper_l c1087__towupper_l c
920__truncdfsf2 c1088__truncdfsf2 c
1089__truncieee128 m
921__ttyname_r_chk c1090__ttyname_r_chk c
922__tzname c1091__tzname c
923__ucmpdi2 c1092__ucmpdi2 c
924__udivdi3 c1093__udivdi3 c
925__uflow c1094__uflow c
1095__ufromfpieee128 m
1096__ufromfpxieee128 m
926__umoddi3 c1097__umoddi3 c
927__underflow c1098__underflow c
928__unorddf2 c1099__unorddf2 c
929__unordsf2 c1100__unordsf2 c
930__uselocale c1101__uselocale c
931__vasprintf_chk c1102__vasprintf_chk c
1103__vasprintf_chkieee128 c
1104__vasprintfieee128 c
932__vdprintf_chk c1105__vdprintf_chk c
1106__vdprintf_chkieee128 c
1107__vdprintfieee128 c
1108__verrieee128 c
1109__verrxieee128 c
933__vfork c1110__vfork c
934__vfprintf_chk c1111__vfprintf_chk c
1112__vfprintf_chkieee128 c
1113__vfprintfieee128 c
935__vfscanf c1114__vfscanf c
1115__vfscanfieee128 c
936__vfwprintf_chk c1116__vfwprintf_chk c
1117__vfwprintf_chkieee128 c
1118__vfwprintfieee128 c
1119__vfwscanfieee128 c
937__vprintf_chk c1120__vprintf_chk c
1121__vprintf_chkieee128 c
1122__vprintfieee128 c
1123__vscanfieee128 c
938__vsnprintf c1124__vsnprintf c
939__vsnprintf_chk c1125__vsnprintf_chk c
1126__vsnprintf_chkieee128 c
1127__vsnprintfieee128 c
940__vsprintf_chk c1128__vsprintf_chk c
1129__vsprintf_chkieee128 c
1130__vsprintfieee128 c
941__vsscanf c1131__vsscanf c
1132__vsscanfieee128 c
942__vswprintf_chk c1133__vswprintf_chk c
1134__vswprintf_chkieee128 c
1135__vswprintfieee128 c
1136__vswscanfieee128 c
943__vsyslog_chk c1137__vsyslog_chk c
1138__vsyslog_chkieee128 c
1139__vsyslogieee128 c
1140__vwarnieee128 c
1141__vwarnxieee128 c
944__vwprintf_chk c1142__vwprintf_chk c
1143__vwprintf_chkieee128 c
1144__vwprintfieee128 c
1145__vwscanfieee128 c
945__wait c1146__wait c
946__waitpid c1147__waitpid c
1148__warnieee128 c
1149__warnxieee128 c
947__wcpcpy_chk c1150__wcpcpy_chk c
948__wcpncpy_chk c1151__wcpncpy_chk c
949__wcrtomb_chk c1152__wcrtomb_chk c
...@@ -962,6 +1165,8 @@ __wcstod_l c...@@ -962,6 +1165,8 @@ __wcstod_l c
962__wcstof128_internal c1165__wcstof128_internal c
963__wcstof_internal c1166__wcstof_internal c
964__wcstof_l c1167__wcstof_l c
1168__wcstoieee128 c
1169__wcstoieee128_l c
965__wcstol_internal c1170__wcstol_internal c
966__wcstol_l c1171__wcstol_l c
967__wcstold_internal c1172__wcstold_internal c
...@@ -983,7 +1188,10 @@ __wmempcpy_chk c...@@ -983,7 +1188,10 @@ __wmempcpy_chk c
983__wmemset_chk c1188__wmemset_chk c
984__woverflow c1189__woverflow c
985__wprintf_chk c1190__wprintf_chk c
1191__wprintf_chkieee128 c
1192__wprintfieee128 c
986__write c1193__write c
1194__wscanfieee128 c
987__wuflow c1195__wuflow c
988__wunderflow c1196__wunderflow c
989__xmknod c1197__xmknod c
...@@ -996,14 +1204,17 @@ __xstat64 c...@@ -996,14 +1204,17 @@ __xstat64 c
996__y0_finite m1204__y0_finite m
997__y0f128_finite m1205__y0f128_finite m
998__y0f_finite m1206__y0f_finite m
1207__y0ieee128 m
999__y0l_finite m1208__y0l_finite m
1000__y1_finite m1209__y1_finite m
1001__y1f128_finite m1210__y1f128_finite m
1002__y1f_finite m1211__y1f_finite m
1212__y1ieee128 m
1003__y1l_finite m1213__y1l_finite m
1004__yn_finite m1214__yn_finite m
1005__ynf128_finite m1215__ynf128_finite m
1006__ynf_finite m1216__ynf_finite m
1217__ynieee128 m
1007__ynl_finite m1218__ynl_finite m
1008_authenticate c1219_authenticate c
1009_dl_mcount ld1220_dl_mcount ld
...@@ -2727,17 +2938,19 @@ pthread_attr_getinheritsched c...@@ -2727,17 +2938,19 @@ pthread_attr_getinheritsched c
2727pthread_attr_getschedparam c2938pthread_attr_getschedparam c
2728pthread_attr_getschedpolicy c2939pthread_attr_getschedpolicy c
2729pthread_attr_getscope c2940pthread_attr_getscope c
2941pthread_attr_getsigmask_np c
2730pthread_attr_getstack pthread2942pthread_attr_getstack pthread
2731pthread_attr_getstackaddr pthread2943pthread_attr_getstackaddr pthread
2732pthread_attr_getstacksize pthread2944pthread_attr_getstacksize pthread
2733pthread_attr_init c2945pthread_attr_init c
2734pthread_attr_setaffinity_np pthread2946pthread_attr_setaffinity_np c
2735pthread_attr_setdetachstate c2947pthread_attr_setdetachstate c
2736pthread_attr_setguardsize pthread2948pthread_attr_setguardsize pthread
2737pthread_attr_setinheritsched c2949pthread_attr_setinheritsched c
2738pthread_attr_setschedparam c2950pthread_attr_setschedparam c
2739pthread_attr_setschedpolicy c2951pthread_attr_setschedpolicy c
2740pthread_attr_setscope c2952pthread_attr_setscope c
2953pthread_attr_setsigmask_np c
2741pthread_attr_setstack pthread2954pthread_attr_setstack pthread
2742pthread_attr_setstackaddr pthread2955pthread_attr_setstackaddr pthread
2743pthread_attr_setstacksize pthread2956pthread_attr_setstacksize pthread
...@@ -2767,9 +2980,9 @@ pthread_create pthread...@@ -2767,9 +2980,9 @@ pthread_create pthread
2767pthread_detach pthread2980pthread_detach pthread
2768pthread_equal c2981pthread_equal c
2769pthread_exit c2982pthread_exit c
2770pthread_getaffinity_np pthread2983pthread_getaffinity_np c
2771pthread_getattr_default_np pthread2984pthread_getattr_default_np pthread
2772pthread_getattr_np pthread2985pthread_getattr_np c
2773pthread_getconcurrency pthread2986pthread_getconcurrency pthread
2774pthread_getcpuclockid pthread2987pthread_getcpuclockid pthread
2775pthread_getname_np pthread2988pthread_getname_np pthread
...@@ -2835,7 +3048,7 @@ pthread_setname_np pthread...@@ -2835,7 +3048,7 @@ pthread_setname_np pthread
2835pthread_setschedparam c3048pthread_setschedparam c
2836pthread_setschedprio pthread3049pthread_setschedprio pthread
2837pthread_setspecific pthread3050pthread_setspecific pthread
2838pthread_sigmask pthread3051pthread_sigmask c
2839pthread_sigqueue pthread3052pthread_sigqueue pthread
2840pthread_spin_destroy pthread3053pthread_spin_destroy pthread
2841pthread_spin_init pthread3054pthread_spin_init pthread
...@@ -3140,12 +3353,14 @@ shmctl c...@@ -3140,12 +3353,14 @@ shmctl c
3140shmdt c3353shmdt c
3141shmget c3354shmget c
3142shutdown c3355shutdown c
3356sigabbrev_np c
3143sigaction c3357sigaction c
3144sigaddset c3358sigaddset c
3145sigaltstack c3359sigaltstack c
3146sigandset c3360sigandset c
3147sigblock c3361sigblock c
3148sigdelset c3362sigdelset c
3363sigdescr_np c
3149sigemptyset c3364sigemptyset c
3150sigfillset c3365sigfillset c
3151siggetmask c3366siggetmask c
...@@ -3251,6 +3466,8 @@ strdup c...@@ -3251,6 +3466,8 @@ strdup c
3251strerror c3466strerror c
3252strerror_l c3467strerror_l c
3253strerror_r c3468strerror_r c
3469strerrordesc_np c
3470strerrorname_np c
3254strfmon c3471strfmon c
3255strfmon_l c3472strfmon_l c
3256strfromd c3473strfromd c
lib/libc/glibc/vers.txt+1
...@@ -40,3 +40,4 @@ GLIBC_2.28...@@ -40,3 +40,4 @@ GLIBC_2.28
40GLIBC_2.2940GLIBC_2.29
41GLIBC_2.3041GLIBC_2.30
42GLIBC_2.3142GLIBC_2.31
43GLIBC_2.32
lib/libc/include/aarch64-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/aarch64-linux-gnu/bits/hwcap.h+20-1
...@@ -53,4 +53,23 @@...@@ -53,4 +53,23 @@
53#define HWCAP_SSBS (1 << 28)53#define HWCAP_SSBS (1 << 28)
54#define HWCAP_SB (1 << 29)54#define HWCAP_SB (1 << 29)
55#define HWCAP_PACA (1 << 30)55#define HWCAP_PACA (1 << 30)
56#define HWCAP_PACG (1UL << 31)
\ No newline at end of file
56#define HWCAP_PACG (1UL << 31)
57
58#define HWCAP2_DCPODP (1 << 0)
59#define HWCAP2_SVE2 (1 << 1)
60#define HWCAP2_SVEAES (1 << 2)
61#define HWCAP2_SVEPMULL (1 << 3)
62#define HWCAP2_SVEBITPERM (1 << 4)
63#define HWCAP2_SVESHA3 (1 << 5)
64#define HWCAP2_SVESM4 (1 << 6)
65#define HWCAP2_FLAGM2 (1 << 7)
66#define HWCAP2_FRINT (1 << 8)
67#define HWCAP2_SVEI8MM (1 << 9)
68#define HWCAP2_SVEF32MM (1 << 10)
69#define HWCAP2_SVEF64MM (1 << 11)
70#define HWCAP2_SVEBF16 (1 << 12)
71#define HWCAP2_I8MM (1 << 13)
72#define HWCAP2_BF16 (1 << 14)
73#define HWCAP2_DGH (1 << 15)
74#define HWCAP2_RNG (1 << 16)
75#define HWCAP2_BTI (1 << 17)
\ No newline at end of file
lib/libc/include/aarch64-linux-gnu/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/aarch64-linux-gnu/bits/mman.h created+31
...@@ -0,0 +1,31 @@
1/* Definitions for POSIX memory map interface. Linux/AArch64 version.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MMAN_H
20# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21#endif
22
23/* AArch64 specific definitions, should be in sync with
24 arch/arm64/include/uapi/asm/mman.h. */
25
26#define PROT_BTI 0x10
27
28#include <bits/mman-map-flags-generic.h>
29
30/* Include generic Linux declarations. */
31#include <bits/mman-linux.h>
\ No newline at end of file
lib/libc/include/aarch64-linux-gnu/bits/typesizes.h+29-9
...@@ -26,31 +26,45 @@...@@ -26,31 +26,45 @@
2626
27/* See <bits/types.h> for the meaning of these macros. This file exists so27/* See <bits/types.h> for the meaning of these macros. This file exists so
28 that <bits/types.h> need not vary across different GNU platforms. */28 that <bits/types.h> need not vary across different GNU platforms. */
29#if __TIMESIZE == 64 && __WORDSIZE == 32
30/* These are the "new" y2038 types defined for architectures added after
31 the 5.1 kernel. */
32# define __INO_T_TYPE __UQUAD_TYPE
33# define __OFF_T_TYPE __SQUAD_TYPE
34# define __RLIM_T_TYPE __UQUAD_TYPE
35# define __BLKCNT_T_TYPE __SQUAD_TYPE
36# define __FSBLKCNT_T_TYPE __UQUAD_TYPE
37# define __FSFILCNT_T_TYPE __UQUAD_TYPE
38# define __TIME_T_TYPE __SQUAD_TYPE
39# define __SUSECONDS_T_TYPE __SQUAD_TYPE
40#else
41# define __INO_T_TYPE __ULONGWORD_TYPE
42# define __OFF_T_TYPE __SLONGWORD_TYPE
43# define __RLIM_T_TYPE __ULONGWORD_TYPE
44# define __BLKCNT_T_TYPE __SLONGWORD_TYPE
45# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
46# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47# define __TIME_T_TYPE __SLONGWORD_TYPE
48# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
49#endif
2950
30#define __DEV_T_TYPE __UQUAD_TYPE51#define __DEV_T_TYPE __UQUAD_TYPE
31#define __UID_T_TYPE __U32_TYPE52#define __UID_T_TYPE __U32_TYPE
32#define __GID_T_TYPE __U32_TYPE53#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
34#define __INO64_T_TYPE __UQUAD_TYPE54#define __INO64_T_TYPE __UQUAD_TYPE
35#define __MODE_T_TYPE __U32_TYPE55#define __MODE_T_TYPE __U32_TYPE
36#define __NLINK_T_TYPE __U32_TYPE56#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
38#define __OFF64_T_TYPE __SQUAD_TYPE57#define __OFF64_T_TYPE __SQUAD_TYPE
39#define __PID_T_TYPE __S32_TYPE58#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
41#define __RLIM64_T_TYPE __UQUAD_TYPE59#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
43#define __BLKCNT64_T_TYPE __SQUAD_TYPE60#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
45#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE61#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47#define __FSFILCNT64_T_TYPE __UQUAD_TYPE62#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
48#define __FSWORD_T_TYPE __SWORD_TYPE63#define __FSWORD_T_TYPE __SWORD_TYPE
49#define __ID_T_TYPE __U32_TYPE64#define __ID_T_TYPE __U32_TYPE
50#define __CLOCK_T_TYPE __SLONGWORD_TYPE65#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
52#define __USECONDS_T_TYPE __U32_TYPE66#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
54#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
55#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
56#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -62,7 +76,7 @@...@@ -62,7 +76,7 @@
62#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE76#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
63#define __CPU_MASK_TYPE __ULONGWORD_TYPE77#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
66/* Tell the libc code that off_t and off64_t are actually the same type80/* Tell the libc code that off_t and off64_t are actually the same type
67 for all ABI purposes, even if possibly expressed as different base types81 for all ABI purposes, even if possibly expressed as different base types
68 for C type-checking purposes. */82 for C type-checking purposes. */
...@@ -76,11 +90,17 @@...@@ -76,11 +90,17 @@
7690
77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */91/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
78# define __STATFS_MATCHES_STATFS64 192# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
79#else96#else
80# define __RLIM_T_MATCHES_RLIM64_T 097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
82# define __STATFS_MATCHES_STATFS64 099# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83#endif102#endif
103
84/* Number of descriptors that can fit in an `fd_set'. */104/* Number of descriptors that can fit in an `fd_set'. */
85#define __FD_SETSIZE 1024105#define __FD_SETSIZE 1024
86106
lib/libc/include/aarch64-linux-gnu/gnu/lib-names-lp64.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h+1-4
...@@ -15,10 +15,7 @@...@@ -15,10 +15,7 @@
15#define __stub_chflags15#define __stub_chflags
16#define __stub_fchflags16#define __stub_fchflags
17#define __stub_gtty17#define __stub_gtty
18#define __stub_lchmod
19#define __stub_revoke18#define __stub_revoke
20#define __stub_setlogin19#define __stub_setlogin
21#define __stub_sigreturn20#define __stub_sigreturn
22#define __stub_sstk
23#define __stub_stty
24#define __stub_sysctl
\ No newline at end of file
21#define __stub_stty
\ No newline at end of file
lib/libc/include/aarch64_be-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/aarch64_be-linux-gnu/bits/hwcap.h+20-1
...@@ -53,4 +53,23 @@...@@ -53,4 +53,23 @@
53#define HWCAP_SSBS (1 << 28)53#define HWCAP_SSBS (1 << 28)
54#define HWCAP_SB (1 << 29)54#define HWCAP_SB (1 << 29)
55#define HWCAP_PACA (1 << 30)55#define HWCAP_PACA (1 << 30)
56#define HWCAP_PACG (1UL << 31)
\ No newline at end of file
56#define HWCAP_PACG (1UL << 31)
57
58#define HWCAP2_DCPODP (1 << 0)
59#define HWCAP2_SVE2 (1 << 1)
60#define HWCAP2_SVEAES (1 << 2)
61#define HWCAP2_SVEPMULL (1 << 3)
62#define HWCAP2_SVEBITPERM (1 << 4)
63#define HWCAP2_SVESHA3 (1 << 5)
64#define HWCAP2_SVESM4 (1 << 6)
65#define HWCAP2_FLAGM2 (1 << 7)
66#define HWCAP2_FRINT (1 << 8)
67#define HWCAP2_SVEI8MM (1 << 9)
68#define HWCAP2_SVEF32MM (1 << 10)
69#define HWCAP2_SVEF64MM (1 << 11)
70#define HWCAP2_SVEBF16 (1 << 12)
71#define HWCAP2_I8MM (1 << 13)
72#define HWCAP2_BF16 (1 << 14)
73#define HWCAP2_DGH (1 << 15)
74#define HWCAP2_RNG (1 << 16)
75#define HWCAP2_BTI (1 << 17)
\ No newline at end of file
lib/libc/include/aarch64_be-linux-gnu/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/aarch64_be-linux-gnu/bits/mman.h created+31
...@@ -0,0 +1,31 @@
1/* Definitions for POSIX memory map interface. Linux/AArch64 version.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MMAN_H
20# error "Never use <bits/mman.h> directly; include <sys/mman.h> instead."
21#endif
22
23/* AArch64 specific definitions, should be in sync with
24 arch/arm64/include/uapi/asm/mman.h. */
25
26#define PROT_BTI 0x10
27
28#include <bits/mman-map-flags-generic.h>
29
30/* Include generic Linux declarations. */
31#include <bits/mman-linux.h>
\ No newline at end of file
lib/libc/include/aarch64_be-linux-gnu/bits/typesizes.h+29-9
...@@ -26,31 +26,45 @@...@@ -26,31 +26,45 @@
2626
27/* See <bits/types.h> for the meaning of these macros. This file exists so27/* See <bits/types.h> for the meaning of these macros. This file exists so
28 that <bits/types.h> need not vary across different GNU platforms. */28 that <bits/types.h> need not vary across different GNU platforms. */
29#if __TIMESIZE == 64 && __WORDSIZE == 32
30/* These are the "new" y2038 types defined for architectures added after
31 the 5.1 kernel. */
32# define __INO_T_TYPE __UQUAD_TYPE
33# define __OFF_T_TYPE __SQUAD_TYPE
34# define __RLIM_T_TYPE __UQUAD_TYPE
35# define __BLKCNT_T_TYPE __SQUAD_TYPE
36# define __FSBLKCNT_T_TYPE __UQUAD_TYPE
37# define __FSFILCNT_T_TYPE __UQUAD_TYPE
38# define __TIME_T_TYPE __SQUAD_TYPE
39# define __SUSECONDS_T_TYPE __SQUAD_TYPE
40#else
41# define __INO_T_TYPE __ULONGWORD_TYPE
42# define __OFF_T_TYPE __SLONGWORD_TYPE
43# define __RLIM_T_TYPE __ULONGWORD_TYPE
44# define __BLKCNT_T_TYPE __SLONGWORD_TYPE
45# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
46# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47# define __TIME_T_TYPE __SLONGWORD_TYPE
48# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
49#endif
2950
30#define __DEV_T_TYPE __UQUAD_TYPE51#define __DEV_T_TYPE __UQUAD_TYPE
31#define __UID_T_TYPE __U32_TYPE52#define __UID_T_TYPE __U32_TYPE
32#define __GID_T_TYPE __U32_TYPE53#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
34#define __INO64_T_TYPE __UQUAD_TYPE54#define __INO64_T_TYPE __UQUAD_TYPE
35#define __MODE_T_TYPE __U32_TYPE55#define __MODE_T_TYPE __U32_TYPE
36#define __NLINK_T_TYPE __U32_TYPE56#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
38#define __OFF64_T_TYPE __SQUAD_TYPE57#define __OFF64_T_TYPE __SQUAD_TYPE
39#define __PID_T_TYPE __S32_TYPE58#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
41#define __RLIM64_T_TYPE __UQUAD_TYPE59#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
43#define __BLKCNT64_T_TYPE __SQUAD_TYPE60#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
45#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE61#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47#define __FSFILCNT64_T_TYPE __UQUAD_TYPE62#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
48#define __FSWORD_T_TYPE __SWORD_TYPE63#define __FSWORD_T_TYPE __SWORD_TYPE
49#define __ID_T_TYPE __U32_TYPE64#define __ID_T_TYPE __U32_TYPE
50#define __CLOCK_T_TYPE __SLONGWORD_TYPE65#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
52#define __USECONDS_T_TYPE __U32_TYPE66#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
54#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
55#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
56#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -62,7 +76,7 @@...@@ -62,7 +76,7 @@
62#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE76#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
63#define __CPU_MASK_TYPE __ULONGWORD_TYPE77#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
66/* Tell the libc code that off_t and off64_t are actually the same type80/* Tell the libc code that off_t and off64_t are actually the same type
67 for all ABI purposes, even if possibly expressed as different base types81 for all ABI purposes, even if possibly expressed as different base types
68 for C type-checking purposes. */82 for C type-checking purposes. */
...@@ -76,11 +90,17 @@...@@ -76,11 +90,17 @@
7690
77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */91/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
78# define __STATFS_MATCHES_STATFS64 192# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
79#else96#else
80# define __RLIM_T_MATCHES_RLIM64_T 097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
82# define __STATFS_MATCHES_STATFS64 099# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83#endif102#endif
103
84/* Number of descriptors that can fit in an `fd_set'. */104/* Number of descriptors that can fit in an `fd_set'. */
85#define __FD_SETSIZE 1024105#define __FD_SETSIZE 1024
86106
lib/libc/include/aarch64_be-linux-gnu/gnu/lib-names-lp64_be.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h+1-4
...@@ -15,10 +15,7 @@...@@ -15,10 +15,7 @@
15#define __stub_chflags15#define __stub_chflags
16#define __stub_fchflags16#define __stub_fchflags
17#define __stub_gtty17#define __stub_gtty
18#define __stub_lchmod
19#define __stub_revoke18#define __stub_revoke
20#define __stub_setlogin19#define __stub_setlogin
21#define __stub_sigreturn20#define __stub_sigreturn
22#define __stub_sstk
23#define __stub_stty
24#define __stub_sysctl
\ No newline at end of file
21#define __stub_stty
\ No newline at end of file
lib/libc/include/arm-linux-gnueabi/bits/long-double.h+14-1
...@@ -37,4 +37,17 @@...@@ -37,4 +37,17 @@
37#ifndef __NO_LONG_DOUBLE_MATH37#ifndef __NO_LONG_DOUBLE_MATH
38# define __NO_LONG_DOUBLE_MATH 138# define __NO_LONG_DOUBLE_MATH 1
39#endif39#endif
40#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
40
41/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
42 choice of the underlying ABI of long double. It will always assume
43 a constant value for each translation unit.
44
45 If the value is non-zero, any API which is parameterized by the long
46 double type (i.e the scanf/printf family of functions or the explicitly
47 parameterized math.h functions) will be redirected to a compatible
48 implementation using _Float128 ABI via symbols suffixed with ieee128.
49
50 The mechanism this macro uses to acquire may be a function
51 of architecture, or target specific options used to invoke the
52 compiler. */
53#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/arm-linux-gnueabi/bits/semaphore.h deleted-34
...@@ -1,34 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22
23#define __SIZEOF_SEM_T 16
24
25
26/* Value returned if `sem_open' failed. */
27#define SEM_FAILED ((sem_t *) 0)
28
29
30typedef union
31{
32 char __size[__SIZEOF_SEM_T];
33 long int __align;
34} sem_t;
\ No newline at end of file
lib/libc/include/arm-linux-gnueabihf/bits/long-double.h+14-1
...@@ -37,4 +37,17 @@...@@ -37,4 +37,17 @@
37#ifndef __NO_LONG_DOUBLE_MATH37#ifndef __NO_LONG_DOUBLE_MATH
38# define __NO_LONG_DOUBLE_MATH 138# define __NO_LONG_DOUBLE_MATH 1
39#endif39#endif
40#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
40
41/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
42 choice of the underlying ABI of long double. It will always assume
43 a constant value for each translation unit.
44
45 If the value is non-zero, any API which is parameterized by the long
46 double type (i.e the scanf/printf family of functions or the explicitly
47 parameterized math.h functions) will be redirected to a compatible
48 implementation using _Float128 ABI via symbols suffixed with ieee128.
49
50 The mechanism this macro uses to acquire may be a function
51 of architecture, or target specific options used to invoke the
52 compiler. */
53#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/arm-linux-gnueabihf/bits/semaphore.h deleted-34
...@@ -1,34 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22
23#define __SIZEOF_SEM_T 16
24
25
26/* Value returned if `sem_open' failed. */
27#define SEM_FAILED ((sem_t *) 0)
28
29
30typedef union
31{
32 char __size[__SIZEOF_SEM_T];
33 long int __align;
34} sem_t;
\ No newline at end of file
lib/libc/include/armeb-linux-gnueabi/bits/long-double.h+14-1
...@@ -37,4 +37,17 @@...@@ -37,4 +37,17 @@
37#ifndef __NO_LONG_DOUBLE_MATH37#ifndef __NO_LONG_DOUBLE_MATH
38# define __NO_LONG_DOUBLE_MATH 138# define __NO_LONG_DOUBLE_MATH 1
39#endif39#endif
40#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
40
41/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
42 choice of the underlying ABI of long double. It will always assume
43 a constant value for each translation unit.
44
45 If the value is non-zero, any API which is parameterized by the long
46 double type (i.e the scanf/printf family of functions or the explicitly
47 parameterized math.h functions) will be redirected to a compatible
48 implementation using _Float128 ABI via symbols suffixed with ieee128.
49
50 The mechanism this macro uses to acquire may be a function
51 of architecture, or target specific options used to invoke the
52 compiler. */
53#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/armeb-linux-gnueabi/bits/semaphore.h deleted-34
...@@ -1,34 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22
23#define __SIZEOF_SEM_T 16
24
25
26/* Value returned if `sem_open' failed. */
27#define SEM_FAILED ((sem_t *) 0)
28
29
30typedef union
31{
32 char __size[__SIZEOF_SEM_T];
33 long int __align;
34} sem_t;
\ No newline at end of file
lib/libc/include/armeb-linux-gnueabihf/bits/long-double.h+14-1
...@@ -37,4 +37,17 @@...@@ -37,4 +37,17 @@
37#ifndef __NO_LONG_DOUBLE_MATH37#ifndef __NO_LONG_DOUBLE_MATH
38# define __NO_LONG_DOUBLE_MATH 138# define __NO_LONG_DOUBLE_MATH 1
39#endif39#endif
40#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
40
41/* The macro __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI is used to determine the
42 choice of the underlying ABI of long double. It will always assume
43 a constant value for each translation unit.
44
45 If the value is non-zero, any API which is parameterized by the long
46 double type (i.e the scanf/printf family of functions or the explicitly
47 parameterized math.h functions) will be redirected to a compatible
48 implementation using _Float128 ABI via symbols suffixed with ieee128.
49
50 The mechanism this macro uses to acquire may be a function
51 of architecture, or target specific options used to invoke the
52 compiler. */
53#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/armeb-linux-gnueabihf/bits/semaphore.h deleted-34
...@@ -1,34 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22
23#define __SIZEOF_SEM_T 16
24
25
26/* Value returned if `sem_open' failed. */
27#define SEM_FAILED ((sem_t *) 0)
28
29
30typedef union
31{
32 char __size[__SIZEOF_SEM_T];
33 long int __align;
34} sem_t;
\ No newline at end of file
lib/libc/include/generic-glibc/argp.h+2-1
...@@ -554,7 +554,8 @@ __NTH (__option_is_end (const struct argp_option *__opt))...@@ -554,7 +554,8 @@ __NTH (__option_is_end (const struct argp_option *__opt))
554# endif554# endif
555#endif /* Use extern inlines. */555#endif /* Use extern inlines. */
556556
557#ifdef __LDBL_COMPAT557#include <bits/floatn.h>
558#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
558# include <bits/argp-ldbl.h>559# include <bits/argp-ldbl.h>
559#endif560#endif
560561
lib/libc/include/generic-glibc/bits/fcntl-linux.h+2-1
...@@ -290,7 +290,8 @@ struct f_owner_ex...@@ -290,7 +290,8 @@ struct f_owner_ex
290290
291#ifdef __USE_GNU291#ifdef __USE_GNU
292/* Hint values for F_{GET,SET}_RW_HINT. */292/* Hint values for F_{GET,SET}_RW_HINT. */
293# define RWF_WRITE_LIFE_NOT_SET 0293# define RWH_WRITE_LIFE_NOT_SET 0
294# define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
294# define RWH_WRITE_LIFE_NONE 1295# define RWH_WRITE_LIFE_NONE 1
295# define RWH_WRITE_LIFE_SHORT 2296# define RWH_WRITE_LIFE_SHORT 2
296# define RWH_WRITE_LIFE_MEDIUM 3297# define RWH_WRITE_LIFE_MEDIUM 3
lib/libc/include/generic-glibc/bits/fenvinline.h deleted-8
...@@ -1,8 +0,0 @@
1/* This file provides inline versions of floating-pint environment
2 handling functions. If there were any. */
3
4#ifndef __NO_MATH_INLINES
5
6/* Here is where the code would go. */
7
8#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/floatn.h+1-1
...@@ -1,4 +1,4 @@...@@ -1,4 +1,4 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.3 This file is part of the GNU C Library.
44
lib/libc/include/generic-glibc/bits/long-double.h+1-1
...@@ -21,4 +21,4 @@...@@ -21,4 +21,4 @@
21#if !defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO3221#if !defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
22# define __NO_LONG_DOUBLE_MATH 122# define __NO_LONG_DOUBLE_MATH 1
23#endif23#endif
24#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
24#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/generic-glibc/bits/mathcalls-helper-functions.h+10-8
...@@ -16,28 +16,30 @@...@@ -16,28 +16,30 @@
16 License along with the GNU C Library; if not, see16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */17 <https://www.gnu.org/licenses/>. */
1818
19
20/* Classify given number. */19/* Classify given number. */
21__MATHDECL_1 (int, __fpclassify,, (_Mdouble_ __value))20__MATHDECL_ALIAS (int, __fpclassify,, (_Mdouble_ __value), fpclassify)
22 __attribute__ ((__const__));21 __attribute__ ((__const__));
2322
24/* Test for negative number. */23/* Test for negative number. */
25__MATHDECL_1 (int, __signbit,, (_Mdouble_ __value))24__MATHDECL_ALIAS (int, __signbit,, (_Mdouble_ __value), signbit)
26 __attribute__ ((__const__));25 __attribute__ ((__const__));
2726
28/* Return 0 if VALUE is finite or NaN, +1 if it27/* Return 0 if VALUE is finite or NaN, +1 if it
29 is +Infinity, -1 if it is -Infinity. */28 is +Infinity, -1 if it is -Infinity. */
30__MATHDECL_1 (int, __isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));29__MATHDECL_ALIAS (int, __isinf,, (_Mdouble_ __value), isinf)
30 __attribute__ ((__const__));
3131
32/* Return nonzero if VALUE is finite and not NaN. Used by isfinite macro. */32/* Return nonzero if VALUE is finite and not NaN. Used by isfinite macro. */
33__MATHDECL_1 (int, __finite,, (_Mdouble_ __value)) __attribute__ ((__const__));33__MATHDECL_ALIAS (int, __finite,, (_Mdouble_ __value), finite)
34 __attribute__ ((__const__));
3435
35/* Return nonzero if VALUE is not a number. */36/* Return nonzero if VALUE is not a number. */
36__MATHDECL_1 (int, __isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));37__MATHDECL_ALIAS (int, __isnan,, (_Mdouble_ __value), isnan)
38 __attribute__ ((__const__));
3739
38/* Test equality. */40/* Test equality. */
39__MATHDECL_1 (int, __iseqsig,, (_Mdouble_ __x, _Mdouble_ __y));41__MATHDECL_ALIAS (int, __iseqsig,, (_Mdouble_ __x, _Mdouble_ __y), iseqsig);
4042
41/* Test for signaling NaN. */43/* Test for signaling NaN. */
42__MATHDECL_1 (int, __issignaling,, (_Mdouble_ __value))44__MATHDECL_ALIAS (int, __issignaling,, (_Mdouble_ __value), issignaling)
43 __attribute__ ((__const__));45 __attribute__ ((__const__));
\ No newline at end of file
lib/libc/include/generic-glibc/bits/mathcalls.h+6-3
...@@ -174,12 +174,14 @@ __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));...@@ -174,12 +174,14 @@ __MATHCALL (fmod,, (_Mdouble_ __x, _Mdouble_ __y));
174 && !__MATH_DECLARING_FLOATN174 && !__MATH_DECLARING_FLOATN
175/* Return 0 if VALUE is finite or NaN, +1 if it175/* Return 0 if VALUE is finite or NaN, +1 if it
176 is +Infinity, -1 if it is -Infinity. */176 is +Infinity, -1 if it is -Infinity. */
177__MATHDECL_1 (int,isinf,, (_Mdouble_ __value)) __attribute__ ((__const__));177__MATHDECL_ALIAS (int,isinf,, (_Mdouble_ __value), isinf)
178 __attribute__ ((__const__));
178# endif179# endif
179180
180# if !__MATH_DECLARING_FLOATN181# if !__MATH_DECLARING_FLOATN
181/* Return nonzero if VALUE is finite and not NaN. */182/* Return nonzero if VALUE is finite and not NaN. */
182__MATHDECL_1 (int,finite,, (_Mdouble_ __value)) __attribute__ ((__const__));183__MATHDECL_ALIAS (int,finite,, (_Mdouble_ __value), finite)
184 __attribute__ ((__const__));
183185
184/* Return the remainder of X/Y. */186/* Return the remainder of X/Y. */
185__MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));187__MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));
...@@ -208,7 +210,8 @@ __MATHCALL (nan,, (const char *__tagb));...@@ -208,7 +210,8 @@ __MATHCALL (nan,, (const char *__tagb));
208 || __MATH_DECLARING_DOUBLE == 0)) /* isnanf or isnanl don't. */ \210 || __MATH_DECLARING_DOUBLE == 0)) /* isnanf or isnanl don't. */ \
209 && !__MATH_DECLARING_FLOATN211 && !__MATH_DECLARING_FLOATN
210/* Return nonzero if VALUE is not a number. */212/* Return nonzero if VALUE is not a number. */
211__MATHDECL_1 (int,isnan,, (_Mdouble_ __value)) __attribute__ ((__const__));213__MATHDECL_ALIAS (int,isnan,, (_Mdouble_ __value), isnan)
214 __attribute__ ((__const__));
212# endif215# endif
213#endif216#endif
214217
lib/libc/include/generic-glibc/bits/mathinline.h deleted-12
...@@ -1,12 +0,0 @@
1/* This file should provide inline versions of math functions.
2
3 Surround GCC-specific parts with #ifdef __GNUC__, and use `__extern_inline'.
4
5 This file should define __MATH_INLINES if functions are actually defined as
6 inlines. */
7
8#if !defined __NO_MATH_INLINES && defined __OPTIMIZE__
9
10/* Here goes the real code. */
11
12#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/mman-shared.h+1
...@@ -24,6 +24,7 @@...@@ -24,6 +24,7 @@
24/* Flags for mremap. */24/* Flags for mremap. */
25# define MREMAP_MAYMOVE 125# define MREMAP_MAYMOVE 1
26# define MREMAP_FIXED 226# define MREMAP_FIXED 2
27# define MREMAP_DONTUNMAP 4
2728
28/* Flags for memfd_create. */29/* Flags for memfd_create. */
29# ifndef MFD_CLOEXEC30# ifndef MFD_CLOEXEC
lib/libc/include/generic-glibc/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. Generic version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25/* On most architectures, padding goes after time fields for 32-bit
26 systems and is omitted for 64-bit systems. Some architectures pad
27 before time fields instead, or omit padding despite being
28 32-bit. */
29
30#define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
31#define __MSQ_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/generic-glibc/bits/msq.h+6-33
...@@ -20,7 +20,12 @@...@@ -20,7 +20,12 @@
20#endif20#endif
2121
22#include <bits/types.h>22#include <bits/types.h>
23#include <bits/msq-pad.h>23
24/* Types used in the MSQID_DS structure definition. */
25typedef __syscall_ulong_t msgqnum_t;
26typedef __syscall_ulong_t msglen_t;
27
28#include <bits/types/struct_msqid_ds.h>
2429
25/* Define options for message queue functions. */30/* Define options for message queue functions. */
26#define MSG_NOERROR 010000 /* no error if message is too big */31#define MSG_NOERROR 010000 /* no error if message is too big */
...@@ -29,38 +34,6 @@...@@ -29,38 +34,6 @@
29# define MSG_COPY 040000 /* copy (not remove) all queue messages */34# define MSG_COPY 040000 /* copy (not remove) all queue messages */
30#endif35#endif
3136
32/* Types used in the structure definition. */
33typedef __syscall_ulong_t msgqnum_t;
34typedef __syscall_ulong_t msglen_t;
35
36#if __MSQ_PAD_BEFORE_TIME
37# define __MSQ_PAD_TIME(NAME, RES) \
38 unsigned long int __glibc_reserved ## RES; __time_t NAME
39#elif __MSQ_PAD_AFTER_TIME
40# define __MSQ_PAD_TIME(NAME, RES) \
41 __time_t NAME; unsigned long int __glibc_reserved ## RES
42#else
43# define __MSQ_PAD_TIME(NAME, RES) \
44 __time_t NAME
45#endif
46
47/* Structure of record for one message inside the kernel.
48 The type `struct msg' is opaque. */
49struct msqid_ds
50{
51 struct ipc_perm msg_perm; /* structure describing operation permission */
52 __MSQ_PAD_TIME (msg_stime, 1); /* time of last msgsnd command */
53 __MSQ_PAD_TIME (msg_rtime, 2); /* time of last msgrcv command */
54 __MSQ_PAD_TIME (msg_ctime, 3); /* time of last change */
55 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
56 msgqnum_t msg_qnum; /* number of messages currently on queue */
57 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
58 __pid_t msg_lspid; /* pid of last msgsnd() */
59 __pid_t msg_lrpid; /* pid of last msgrcv() */
60 __syscall_ulong_t __glibc_reserved4;
61 __syscall_ulong_t __glibc_reserved5;
62};
63
64#ifdef __USE_MISC37#ifdef __USE_MISC
6538
66# define msg_cbytes __msg_cbytes39# define msg_cbytes __msg_cbytes
lib/libc/include/generic-glibc/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/generic-glibc/bits/sem-pad.h deleted-33
...@@ -1,33 +0,0 @@
1/* Define where padding goes in struct semid_ds. Generic version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25/* On most architectures, padding goes after time fields for 32-bit
26 systems and is omitted for 64-bit systems. Some architectures pad
27 before time fields instead, or omit padding despite being 32-bit,
28 or include it despite being 64-bit. This must match the layout
29 used for struct semid64_ds in <asm/sembuf.h>, as glibc does not do
30 layout conversions for this structure. */
31
32#define __SEM_PAD_AFTER_TIME (__TIMESIZE == 32)
33#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/generic-glibc/bits/sem.h+2-24
...@@ -20,7 +20,8 @@...@@ -20,7 +20,8 @@
20#endif20#endif
2121
22#include <sys/types.h>22#include <sys/types.h>
23#include <bits/sem-pad.h>23#include <bits/timesize.h>
24#include <bits/types/struct_semid_ds.h>
2425
25/* Flags for `semop'. */26/* Flags for `semop'. */
26#define SEM_UNDO 0x1000 /* undo the operation on exit */27#define SEM_UNDO 0x1000 /* undo the operation on exit */
...@@ -34,29 +35,6 @@...@@ -34,29 +35,6 @@
34#define SETVAL 16 /* set semval */35#define SETVAL 16 /* set semval */
35#define SETALL 17 /* set all semval's */36#define SETALL 17 /* set all semval's */
3637
37
38#if __SEM_PAD_BEFORE_TIME
39# define __SEM_PAD_TIME(NAME, RES) \
40 __syscall_ulong_t __glibc_reserved ## RES; __time_t NAME
41#elif __SEM_PAD_AFTER_TIME
42# define __SEM_PAD_TIME(NAME, RES) \
43 __time_t NAME; __syscall_ulong_t __glibc_reserved ## RES
44#else
45# define __SEM_PAD_TIME(NAME, RES) \
46 __time_t NAME
47#endif
48
49/* Data structure describing a set of semaphores. */
50struct semid_ds
51{
52 struct ipc_perm sem_perm; /* operation permission struct */
53 __SEM_PAD_TIME (sem_otime, 1); /* last semop() time */
54 __SEM_PAD_TIME (sem_ctime, 2); /* last time changed by semctl() */
55 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
56 __syscall_ulong_t __glibc_reserved3;
57 __syscall_ulong_t __glibc_reserved4;
58};
59
60/* The user should define a union like the following to use it for arguments38/* The user should define a union like the following to use it for arguments
61 for `semctl'.39 for `semctl'.
6240
lib/libc/include/generic-glibc/bits/semaphore.h+6-3
...@@ -1,4 +1,5 @@...@@ -1,4 +1,5 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.1/* Generic POSIX semaphore type layout
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.3 This file is part of the GNU C Library.
34
4 The GNU C Library is free software; you can redistribute it and/or5 The GNU C Library is free software; you can redistribute it and/or
...@@ -12,14 +13,16 @@...@@ -12,14 +13,16 @@
12 Lesser General Public License for more details.13 Lesser General Public License for more details.
1314
14 You should have received a copy of the GNU Lesser General Public15 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see16 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */17 <https://www.gnu.org/licenses/>. */
1718
18#ifndef _SEMAPHORE_H19#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif21#endif
2122
22#if _MIPS_SIM == _ABI6423#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
23# define __SIZEOF_SEM_T 3226# define __SIZEOF_SEM_T 32
24#else27#else
25# define __SIZEOF_SEM_T 1628# define __SIZEOF_SEM_T 16
lib/libc/include/generic-glibc/bits/shm-pad.h deleted-37
...@@ -1,37 +0,0 @@
1/* Define where padding goes in struct shmid_ds. Generic version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25/* On most architectures, padding goes after time fields for 32-bit
26 systems and is omitted for 64-bit systems. Some architectures pad
27 before time fields instead, or omit padding despite being 32-bit,
28 or include it despite being 64-bit. Furthermore, some
29 architectures place shm_segsz after the time fields rather than
30 before them, with or without padding there. This must match the
31 layout used for struct shmid64_ds in <asm/shmbuf.h>, as glibc does
32 not do layout conversions for this structure. */
33
34#define __SHM_PAD_AFTER_TIME (__TIMESIZE == 32)
35#define __SHM_PAD_BEFORE_TIME 0
36#define __SHM_SEGSZ_AFTER_TIME 0
37#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/generic-glibc/bits/shm.h+1-34
...@@ -22,7 +22,6 @@...@@ -22,7 +22,6 @@
22#include <bits/types.h>22#include <bits/types.h>
23#include <bits/wordsize.h>23#include <bits/wordsize.h>
24#include <bits/shmlba.h>24#include <bits/shmlba.h>
25#include <bits/shm-pad.h>
2625
27/* Permission flag for shmget. */26/* Permission flag for shmget. */
28#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */27#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
...@@ -43,39 +42,7 @@ __BEGIN_DECLS...@@ -43,39 +42,7 @@ __BEGIN_DECLS
43/* Type to count number of attaches. */42/* Type to count number of attaches. */
44typedef __syscall_ulong_t shmatt_t;43typedef __syscall_ulong_t shmatt_t;
4544
46#if __SHM_PAD_BEFORE_TIME45#include <bits/types/struct_shmid_ds.h>
47# define __SHM_PAD_TIME(NAME, RES) \
48 unsigned long int __glibc_reserved ## RES; __time_t NAME
49#elif __SHM_PAD_AFTER_TIME
50# define __SHM_PAD_TIME(NAME, RES) \
51 __time_t NAME; unsigned long int __glibc_reserved ## RES
52#else
53# define __SHM_PAD_TIME(NAME, RES) \
54 __time_t NAME
55#endif
56
57/* Data structure describing a shared memory segment. */
58struct shmid_ds
59 {
60 struct ipc_perm shm_perm; /* operation permission struct */
61#if !__SHM_SEGSZ_AFTER_TIME
62 size_t shm_segsz; /* size of segment in bytes */
63#endif
64 __SHM_PAD_TIME (shm_atime, 1); /* time of last shmat() */
65 __SHM_PAD_TIME (shm_dtime, 2); /* time of last shmdt() */
66 __SHM_PAD_TIME (shm_ctime, 3); /* time of last change by shmctl() */
67#if __SHM_PAD_BETWEEN_TIME_AND_SEGSZ
68 unsigned long int __glibc_reserved4;
69#endif
70#if __SHM_SEGSZ_AFTER_TIME
71 size_t shm_segsz; /* size of segment in bytes */
72#endif
73 __pid_t shm_cpid; /* pid of creator */
74 __pid_t shm_lpid; /* pid of last shmop */
75 shmatt_t shm_nattch; /* number of current attaches */
76 __syscall_ulong_t __glibc_reserved5;
77 __syscall_ulong_t __glibc_reserved6;
78 };
7946
80#ifdef __USE_MISC47#ifdef __USE_MISC
8148
lib/libc/include/generic-glibc/bits/signum-arch.h created+64
...@@ -0,0 +1,64 @@
1/* Signal number definitions. Linux version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_ARCH_H
20#define _BITS_SIGNUM_ARCH_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum-arch.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 most Linux systems. */
28
29#define SIGSTKFLT 16 /* Stack fault (obsolete). */
30#define SIGPWR 30 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 7 /* Bus error. */
34#define SIGSYS 31 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 23 /* Urgent data is available at a socket. */
38#define SIGSTOP 19 /* Stop, unblockable. */
39#define SIGTSTP 20 /* Keyboard stop. */
40#define SIGCONT 18 /* Continue. */
41#define SIGCHLD 17 /* Child terminated or stopped. */
42#define SIGTTIN 21 /* Background read from control terminal. */
43#define SIGTTOU 22 /* Background write to control terminal. */
44#define SIGPOLL 29 /* Pollable event occurred (System V). */
45#define SIGXFSZ 25 /* File size limit exceeded. */
46#define SIGXCPU 24 /* CPU time limit exceeded. */
47#define SIGVTALRM 26 /* Virtual timer expired. */
48#define SIGPROF 27 /* Profiling timer expired. */
49#define SIGUSR1 10 /* User-defined signal 1. */
50#define SIGUSR2 12 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61#define __SIGRTMIN 32
62#define __SIGRTMAX 64
63
64#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/generic-glibc/bits/signum-generic.h+3-24
...@@ -57,31 +57,9 @@...@@ -57,31 +57,9 @@
57#define SIGQUIT 3 /* Quit. */57#define SIGQUIT 3 /* Quit. */
58#define SIGTRAP 5 /* Trace/breakpoint trap. */58#define SIGTRAP 5 /* Trace/breakpoint trap. */
59#define SIGKILL 9 /* Killed. */59#define SIGKILL 9 /* Killed. */
60#define SIGBUS 10 /* Bus error. */
61#define SIGSYS 12 /* Bad system call. */
62#define SIGPIPE 13 /* Broken pipe. */60#define SIGPIPE 13 /* Broken pipe. */
63#define SIGALRM 14 /* Alarm clock. */61#define SIGALRM 14 /* Alarm clock. */
6462
65/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
66#define SIGURG 16 /* Urgent data is available at a socket. */
67#define SIGSTOP 17 /* Stop, unblockable. */
68#define SIGTSTP 18 /* Keyboard stop. */
69#define SIGCONT 19 /* Continue. */
70#define SIGCHLD 20 /* Child terminated or stopped. */
71#define SIGTTIN 21 /* Background read from control terminal. */
72#define SIGTTOU 22 /* Background write to control terminal. */
73#define SIGPOLL 23 /* Pollable event occurred (System V). */
74#define SIGXCPU 24 /* CPU time limit exceeded. */
75#define SIGXFSZ 25 /* File size limit exceeded. */
76#define SIGVTALRM 26 /* Virtual timer expired. */
77#define SIGPROF 27 /* Profiling timer expired. */
78#define SIGUSR1 30 /* User-defined signal 1. */
79#define SIGUSR2 31 /* User-defined signal 2. */
80
81/* Nonstandard signals found in all modern POSIX systems
82 (including both BSD and Linux). */
83#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
84
85/* Archaic names for compatibility. */63/* Archaic names for compatibility. */
86#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */64#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
87#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */65#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
...@@ -93,8 +71,9 @@...@@ -93,8 +71,9 @@
93 but some real-time signals may be used internally by glibc. Do not71 but some real-time signals may be used internally by glibc. Do not
94 use these constants in application code; use SIGRTMIN and SIGRTMAX72 use these constants in application code; use SIGRTMIN and SIGRTMAX
95 (defined in signal.h) instead. */73 (defined in signal.h) instead. */
96#define __SIGRTMIN 3274
97#define __SIGRTMAX __SIGRTMIN75/* Include system specific bits. */
76#include <bits/signum-arch.h>
9877
99/* Biggest signal number + 1 (including real-time signals). */78/* Biggest signal number + 1 (including real-time signals). */
100#define _NSIG (__SIGRTMAX + 1)79#define _NSIG (__SIGRTMAX + 1)
lib/libc/include/generic-glibc/bits/signum.h deleted-58
...@@ -1,58 +0,0 @@
1/* Signal number definitions. Linux version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 most Linux systems. */
30
31#define SIGSTKFLT 16 /* Stack fault (obsolete). */
32#define SIGPWR 30 /* Power failure imminent. */
33
34#undef SIGBUS
35#define SIGBUS 7
36#undef SIGUSR1
37#define SIGUSR1 10
38#undef SIGUSR2
39#define SIGUSR2 12
40#undef SIGCHLD
41#define SIGCHLD 17
42#undef SIGCONT
43#define SIGCONT 18
44#undef SIGSTOP
45#define SIGSTOP 19
46#undef SIGTSTP
47#define SIGTSTP 20
48#undef SIGURG
49#define SIGURG 23
50#undef SIGPOLL
51#define SIGPOLL 29
52#undef SIGSYS
53#define SIGSYS 31
54
55#undef __SIGRTMAX
56#define __SIGRTMAX 64
57
58#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/generic-glibc/bits/socket-constants.h+14-2
...@@ -20,6 +20,8 @@...@@ -20,6 +20,8 @@
20# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."20# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
21#endif21#endif
2222
23#include <bits/timesize.h>
24
23#define SOL_SOCKET 125#define SOL_SOCKET 1
24#define SO_ACCEPTCONN 3026#define SO_ACCEPTCONN 30
25#define SO_BROADCAST 627#define SO_BROADCAST 6
...@@ -30,9 +32,19 @@...@@ -30,9 +32,19 @@
30#define SO_OOBINLINE 1032#define SO_OOBINLINE 10
31#define SO_RCVBUF 833#define SO_RCVBUF 8
32#define SO_RCVLOWAT 1834#define SO_RCVLOWAT 18
33#define SO_RCVTIMEO 2035#if (__TIMESIZE == 64 && __WORDSIZE == 32 \
36 && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32))
37# define SO_RCVTIMEO 66
38#else
39# define SO_RCVTIMEO 20
40#endif
34#define SO_REUSEADDR 241#define SO_REUSEADDR 2
35#define SO_SNDBUF 742#define SO_SNDBUF 7
36#define SO_SNDLOWAT 1943#define SO_SNDLOWAT 19
37#define SO_SNDTIMEO 2144#if (__TIMESIZE == 64 && __WORDSIZE == 32 \
45 && (!defined __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32))
46# define SO_SNDTIMEO 67
47#else
48# define SO_SNDTIMEO 21
49#endif
38#define SO_TYPE 350#define SO_TYPE 3
\ No newline at end of file
lib/libc/include/generic-glibc/bits/statx-generic.h+1
...@@ -48,6 +48,7 @@...@@ -48,6 +48,7 @@
48# define STATX_ATTR_NODUMP 0x004048# define STATX_ATTR_NODUMP 0x0040
49# define STATX_ATTR_ENCRYPTED 0x080049# define STATX_ATTR_ENCRYPTED 0x0800
50# define STATX_ATTR_AUTOMOUNT 0x100050# define STATX_ATTR_AUTOMOUNT 0x1000
51# define STATX_ATTR_VERITY 0x100000
51#endif /* !STATX_TYPE */52#endif /* !STATX_TYPE */
5253
53__BEGIN_DECLS54__BEGIN_DECLS
lib/libc/include/generic-glibc/bits/stdio-ldbl.h+31-15
...@@ -27,9 +27,17 @@ __LDBL_REDIR_DECL (vfprintf)...@@ -27,9 +27,17 @@ __LDBL_REDIR_DECL (vfprintf)
27__LDBL_REDIR_DECL (vprintf)27__LDBL_REDIR_DECL (vprintf)
28__LDBL_REDIR_DECL (vsprintf)28__LDBL_REDIR_DECL (vsprintf)
29#if !__GLIBC_USE (DEPRECATED_SCANF)29#if !__GLIBC_USE (DEPRECATED_SCANF)
30# if defined __LDBL_COMPAT
30__LDBL_REDIR1_DECL (fscanf, __nldbl___isoc99_fscanf)31__LDBL_REDIR1_DECL (fscanf, __nldbl___isoc99_fscanf)
31__LDBL_REDIR1_DECL (scanf, __nldbl___isoc99_scanf)32__LDBL_REDIR1_DECL (scanf, __nldbl___isoc99_scanf)
32__LDBL_REDIR1_DECL (sscanf, __nldbl___isoc99_sscanf)33__LDBL_REDIR1_DECL (sscanf, __nldbl___isoc99_sscanf)
34# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
35__LDBL_REDIR1_DECL (fscanf, __isoc99_fscanfieee128)
36__LDBL_REDIR1_DECL (scanf, __isoc99_scanfieee128)
37__LDBL_REDIR1_DECL (sscanf, __isoc99_sscanfieee128)
38# else
39# error bits/stdlib-ldbl.h included when no ldbl redirections are required.
40# endif
33#else41#else
34__LDBL_REDIR_DECL (fscanf)42__LDBL_REDIR_DECL (fscanf)
35__LDBL_REDIR_DECL (scanf)43__LDBL_REDIR_DECL (scanf)
...@@ -43,9 +51,17 @@ __LDBL_REDIR_DECL (vsnprintf)...@@ -43,9 +51,17 @@ __LDBL_REDIR_DECL (vsnprintf)
4351
44#ifdef __USE_ISOC9952#ifdef __USE_ISOC99
45# if !__GLIBC_USE (DEPRECATED_SCANF)53# if !__GLIBC_USE (DEPRECATED_SCANF)
54# if defined __LDBL_COMPAT
46__LDBL_REDIR1_DECL (vfscanf, __nldbl___isoc99_vfscanf)55__LDBL_REDIR1_DECL (vfscanf, __nldbl___isoc99_vfscanf)
47__LDBL_REDIR1_DECL (vscanf, __nldbl___isoc99_vscanf)56__LDBL_REDIR1_DECL (vscanf, __nldbl___isoc99_vscanf)
48__LDBL_REDIR1_DECL (vsscanf, __nldbl___isoc99_vsscanf)57__LDBL_REDIR1_DECL (vsscanf, __nldbl___isoc99_vsscanf)
58# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
59__LDBL_REDIR1_DECL (vfscanf, __isoc99_vfscanfieee128)
60__LDBL_REDIR1_DECL (vscanf, __isoc99_vscanfieee128)
61__LDBL_REDIR1_DECL (vsscanf, __isoc99_vsscanfieee128)
62# else
63# error bits/stdlib-ldbl.h included when no ldbl redirections are required.
64# endif
49# else65# else
50__LDBL_REDIR_DECL (vfscanf)66__LDBL_REDIR_DECL (vfscanf)
51__LDBL_REDIR_DECL (vsscanf)67__LDBL_REDIR_DECL (vsscanf)
...@@ -60,33 +76,33 @@ __LDBL_REDIR_DECL (dprintf)...@@ -60,33 +76,33 @@ __LDBL_REDIR_DECL (dprintf)
6076
61#ifdef __USE_GNU77#ifdef __USE_GNU
62__LDBL_REDIR_DECL (vasprintf)78__LDBL_REDIR_DECL (vasprintf)
63__LDBL_REDIR_DECL (__asprintf)79__LDBL_REDIR2_DECL (asprintf)
64__LDBL_REDIR_DECL (asprintf)80__LDBL_REDIR_DECL (asprintf)
65__LDBL_REDIR_DECL (obstack_printf)81__LDBL_REDIR_DECL (obstack_printf)
66__LDBL_REDIR_DECL (obstack_vprintf)82__LDBL_REDIR_DECL (obstack_vprintf)
67#endif83#endif
6884
69#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function85#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
70__LDBL_REDIR_DECL (__sprintf_chk)86__LDBL_REDIR2_DECL (sprintf_chk)
71__LDBL_REDIR_DECL (__vsprintf_chk)87__LDBL_REDIR2_DECL (vsprintf_chk)
72# if defined __USE_ISOC99 || defined __USE_UNIX9888# if defined __USE_ISOC99 || defined __USE_UNIX98
73__LDBL_REDIR_DECL (__snprintf_chk)89__LDBL_REDIR2_DECL (snprintf_chk)
74__LDBL_REDIR_DECL (__vsnprintf_chk)90__LDBL_REDIR2_DECL (vsnprintf_chk)
75# endif91# endif
76# if __USE_FORTIFY_LEVEL > 192# if __USE_FORTIFY_LEVEL > 1
77__LDBL_REDIR_DECL (__fprintf_chk)93__LDBL_REDIR2_DECL (fprintf_chk)
78__LDBL_REDIR_DECL (__printf_chk)94__LDBL_REDIR2_DECL (printf_chk)
79__LDBL_REDIR_DECL (__vfprintf_chk)95__LDBL_REDIR2_DECL (vfprintf_chk)
80__LDBL_REDIR_DECL (__vprintf_chk)96__LDBL_REDIR2_DECL (vprintf_chk)
81# ifdef __USE_XOPEN2K897# ifdef __USE_XOPEN2K8
82__LDBL_REDIR_DECL (__dprintf_chk)98__LDBL_REDIR2_DECL (dprintf_chk)
83__LDBL_REDIR_DECL (__vdprintf_chk)99__LDBL_REDIR2_DECL (vdprintf_chk)
84# endif100# endif
85# ifdef __USE_GNU101# ifdef __USE_GNU
86__LDBL_REDIR_DECL (__asprintf_chk)102__LDBL_REDIR2_DECL (asprintf_chk)
87__LDBL_REDIR_DECL (__vasprintf_chk)103__LDBL_REDIR2_DECL (vasprintf_chk)
88__LDBL_REDIR_DECL (__obstack_printf_chk)104__LDBL_REDIR2_DECL (obstack_printf_chk)
89__LDBL_REDIR_DECL (__obstack_vprintf_chk)105__LDBL_REDIR2_DECL (obstack_vprintf_chk)
90# endif106# endif
91# endif107# endif
92#endif108#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/stdio2.h+16-9
...@@ -24,10 +24,12 @@...@@ -24,10 +24,12 @@
24#endif24#endif
2525
26extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,26extern int __sprintf_chk (char *__restrict __s, int __flag, size_t __slen,
27 const char *__restrict __format, ...) __THROW;27 const char *__restrict __format, ...) __THROW
28 __attr_access ((__write_only__, 1, 3));
28extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,29extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
29 const char *__restrict __format,30 const char *__restrict __format,
30 __gnuc_va_list __ap) __THROW;31 __gnuc_va_list __ap) __THROW
32 __attr_access ((__write_only__, 1, 3));
3133
32#ifdef __va_arg_pack34#ifdef __va_arg_pack
33__fortify_function int35__fortify_function int
...@@ -54,7 +56,8 @@ __NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,...@@ -54,7 +56,8 @@ __NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
5456
55extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,57extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
56 size_t __slen, const char *__restrict __format,58 size_t __slen, const char *__restrict __format,
57 ...) __THROW;59 ...) __THROW
60 __attr_access ((__write_only__, 1, 2));
58extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,61extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
59 size_t __slen, const char *__restrict __format,62 size_t __slen, const char *__restrict __format,
60 __gnuc_va_list __ap) __THROW;63 __gnuc_va_list __ap) __THROW;
...@@ -241,17 +244,19 @@ gets (char *__str)...@@ -241,17 +244,19 @@ gets (char *__str)
241#endif244#endif
242245
243extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,246extern char *__fgets_chk (char *__restrict __s, size_t __size, int __n,
244 FILE *__restrict __stream) __wur;247 FILE *__restrict __stream)
248 __wur __attr_access ((__write_only__, 1, 3));
245extern char *__REDIRECT (__fgets_alias,249extern char *__REDIRECT (__fgets_alias,
246 (char *__restrict __s, int __n,250 (char *__restrict __s, int __n,
247 FILE *__restrict __stream), fgets) __wur;251 FILE *__restrict __stream), fgets)
252 __wur __attr_access ((__write_only__, 1, 2));
248extern char *__REDIRECT (__fgets_chk_warn,253extern char *__REDIRECT (__fgets_chk_warn,
249 (char *__restrict __s, size_t __size, int __n,254 (char *__restrict __s, size_t __size, int __n,
250 FILE *__restrict __stream), __fgets_chk)255 FILE *__restrict __stream), __fgets_chk)
251 __wur __warnattr ("fgets called with bigger size than length "256 __wur __warnattr ("fgets called with bigger size than length "
252 "of destination buffer");257 "of destination buffer");
253258
254__fortify_function __wur char *259__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
255fgets (char *__restrict __s, int __n, FILE *__restrict __stream)260fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
256{261{
257 if (__bos (__s) != (size_t) -1)262 if (__bos (__s) != (size_t) -1)
...@@ -299,17 +304,19 @@ fread (void *__restrict __ptr, size_t __size, size_t __n,...@@ -299,17 +304,19 @@ fread (void *__restrict __ptr, size_t __size, size_t __n,
299304
300#ifdef __USE_GNU305#ifdef __USE_GNU
301extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,306extern char *__fgets_unlocked_chk (char *__restrict __s, size_t __size,
302 int __n, FILE *__restrict __stream) __wur;307 int __n, FILE *__restrict __stream)
308 __wur __attr_access ((__write_only__, 1, 3));
303extern char *__REDIRECT (__fgets_unlocked_alias,309extern char *__REDIRECT (__fgets_unlocked_alias,
304 (char *__restrict __s, int __n,310 (char *__restrict __s, int __n,
305 FILE *__restrict __stream), fgets_unlocked) __wur;311 FILE *__restrict __stream), fgets_unlocked)
312 __wur __attr_access ((__write_only__, 1, 2));
306extern char *__REDIRECT (__fgets_unlocked_chk_warn,313extern char *__REDIRECT (__fgets_unlocked_chk_warn,
307 (char *__restrict __s, size_t __size, int __n,314 (char *__restrict __s, size_t __size, int __n,
308 FILE *__restrict __stream), __fgets_unlocked_chk)315 FILE *__restrict __stream), __fgets_unlocked_chk)
309 __wur __warnattr ("fgets_unlocked called with bigger size than length "316 __wur __warnattr ("fgets_unlocked called with bigger size than length "
310 "of destination buffer");317 "of destination buffer");
311318
312__fortify_function __wur char *319__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
313fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)320fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
314{321{
315 if (__bos (__s) != (size_t) -1)322 if (__bos (__s) != (size_t) -1)
lib/libc/include/generic-glibc/bits/stdlib-ldbl.h+22
...@@ -21,21 +21,43 @@...@@ -21,21 +21,43 @@
21#endif21#endif
2222
23#ifdef __USE_ISOC9923#ifdef __USE_ISOC99
24# ifdef __LDBL_COMPAT
24__LDBL_REDIR1_DECL (strtold, strtod)25__LDBL_REDIR1_DECL (strtold, strtod)
26# else
27__LDBL_REDIR1_DECL (strtold, __strtoieee128)
28# endif
25#endif29#endif
2630
27#ifdef __USE_GNU31#ifdef __USE_GNU
32# ifdef __LDBL_COMPAT
28__LDBL_REDIR1_DECL (strtold_l, strtod_l)33__LDBL_REDIR1_DECL (strtold_l, strtod_l)
34# else
35__LDBL_REDIR1_DECL (strtold_l, __strtoieee128_l)
36# endif
29#endif37#endif
3038
31#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)39#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
40# ifdef __LDBL_COMPAT
32__LDBL_REDIR1_DECL (strfroml, strfromd)41__LDBL_REDIR1_DECL (strfroml, strfromd)
42# else
43__LDBL_REDIR1_DECL (strfroml, __strfromieee128)
44# endif
33#endif45#endif
3446
35#ifdef __USE_MISC47#ifdef __USE_MISC
48# if defined __LDBL_COMPAT
36__LDBL_REDIR1_DECL (qecvt, ecvt)49__LDBL_REDIR1_DECL (qecvt, ecvt)
37__LDBL_REDIR1_DECL (qfcvt, fcvt)50__LDBL_REDIR1_DECL (qfcvt, fcvt)
38__LDBL_REDIR1_DECL (qgcvt, gcvt)51__LDBL_REDIR1_DECL (qgcvt, gcvt)
39__LDBL_REDIR1_DECL (qecvt_r, ecvt_r)52__LDBL_REDIR1_DECL (qecvt_r, ecvt_r)
40__LDBL_REDIR1_DECL (qfcvt_r, fcvt_r)53__LDBL_REDIR1_DECL (qfcvt_r, fcvt_r)
54# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
55__LDBL_REDIR1_DECL (qecvt, __qecvtieee128)
56__LDBL_REDIR1_DECL (qfcvt, __qfcvtieee128)
57__LDBL_REDIR1_DECL (qgcvt, __qgcvtieee128)
58__LDBL_REDIR1_DECL (qecvt_r, __qecvtieee128_r)
59__LDBL_REDIR1_DECL (qfcvt_r, __qfcvtieee128_r)
60# else
61# error bits/stdlib-ldbl.h included when no ldbl redirections are required.
62# endif
41#endif63#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/stdlib.h+11-6
...@@ -50,10 +50,11 @@ __NTH (realpath (const char *__restrict __name, char *__restrict __resolved))...@@ -50,10 +50,11 @@ __NTH (realpath (const char *__restrict __name, char *__restrict __resolved))
5050
5151
52extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,52extern int __ptsname_r_chk (int __fd, char *__buf, size_t __buflen,
53 size_t __nreal) __THROW __nonnull ((2));53 size_t __nreal) __THROW __nonnull ((2))
54 __attr_access ((__write_only__, 2, 3));
54extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,55extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
55 size_t __buflen), ptsname_r)56 size_t __buflen), ptsname_r)
56 __nonnull ((2));57 __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
57extern int __REDIRECT_NTH (__ptsname_r_chk_warn,58extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
58 (int __fd, char *__buf, size_t __buflen,59 (int __fd, char *__buf, size_t __buflen,
59 size_t __nreal), __ptsname_r_chk)60 size_t __nreal), __ptsname_r_chk)
...@@ -97,11 +98,13 @@ __NTH (wctomb (char *__s, wchar_t __wchar))...@@ -97,11 +98,13 @@ __NTH (wctomb (char *__s, wchar_t __wchar))
9798
98extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,99extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
99 const char *__restrict __src,100 const char *__restrict __src,
100 size_t __len, size_t __dstlen) __THROW;101 size_t __len, size_t __dstlen) __THROW
102 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
101extern size_t __REDIRECT_NTH (__mbstowcs_alias,103extern size_t __REDIRECT_NTH (__mbstowcs_alias,
102 (wchar_t *__restrict __dst,104 (wchar_t *__restrict __dst,
103 const char *__restrict __src,105 const char *__restrict __src,
104 size_t __len), mbstowcs);106 size_t __len), mbstowcs)
107 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
105extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,108extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
106 (wchar_t *__restrict __dst,109 (wchar_t *__restrict __dst,
107 const char *__restrict __src,110 const char *__restrict __src,
...@@ -129,11 +132,13 @@ __NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,...@@ -129,11 +132,13 @@ __NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
129132
130extern size_t __wcstombs_chk (char *__restrict __dst,133extern size_t __wcstombs_chk (char *__restrict __dst,
131 const wchar_t *__restrict __src,134 const wchar_t *__restrict __src,
132 size_t __len, size_t __dstlen) __THROW;135 size_t __len, size_t __dstlen) __THROW
136 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
133extern size_t __REDIRECT_NTH (__wcstombs_alias,137extern size_t __REDIRECT_NTH (__wcstombs_alias,
134 (char *__restrict __dst,138 (char *__restrict __dst,
135 const wchar_t *__restrict __src,139 const wchar_t *__restrict __src,
136 size_t __len), wcstombs);140 size_t __len), wcstombs)
141 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
137extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,142extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
138 (char *__restrict __dst,143 (char *__restrict __dst,
139 const wchar_t *__restrict __src,144 const wchar_t *__restrict __src,
lib/libc/include/generic-glibc/bits/string_fortified.h+3-2
...@@ -75,7 +75,7 @@ __NTH (memset (void *__dest, int __ch, size_t __len))...@@ -75,7 +75,7 @@ __NTH (memset (void *__dest, int __ch, size_t __len))
75# include <bits/strings_fortified.h>75# include <bits/strings_fortified.h>
7676
77void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen)77void __explicit_bzero_chk (void *__dest, size_t __len, size_t __destlen)
78 __THROW __nonnull ((1));78 __THROW __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
7979
80__fortify_function void80__fortify_function void
81__NTH (explicit_bzero (void *__dest, size_t __len))81__NTH (explicit_bzero (void *__dest, size_t __len))
...@@ -108,7 +108,8 @@ __NTH (strncpy (char *__restrict __dest, const char *__restrict __src,...@@ -108,7 +108,8 @@ __NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
108108
109/* XXX We have no corresponding builtin yet. */109/* XXX We have no corresponding builtin yet. */
110extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,110extern char *__stpncpy_chk (char *__dest, const char *__src, size_t __n,
111 size_t __destlen) __THROW;111 size_t __destlen) __THROW
112 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
112extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,113extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
113 size_t __n), stpncpy);114 size_t __n), stpncpy);
114115
lib/libc/include/generic-glibc/bits/sys_errlist.h deleted-32
...@@ -1,32 +0,0 @@
1/* Declare sys_errlist and sys_nerr, or don't. Compatibility (do) version.
2 Copyright (C) 2002-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _STDIO_H
20# error "Never include <bits/sys_errlist.h> directly; use <stdio.h> instead."
21#endif
22
23/* sys_errlist and sys_nerr are deprecated. Use strerror instead. */
24
25#ifdef __USE_MISC
26extern int sys_nerr;
27extern const char *const sys_errlist[];
28#endif
29#ifdef __USE_GNU
30extern int _sys_nerr;
31extern const char *const _sys_errlist[];
32#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/syscall.h+22-2
...@@ -1,11 +1,11 @@...@@ -1,11 +1,11 @@
1/* Generated at libc build time from syscall list. */1/* Generated at libc build time from syscall list. */
2/* The system call list corresponds to kernel 5.4. */2/* The system call list corresponds to kernel 5.7. */
33
4#ifndef _SYSCALL_H4#ifndef _SYSCALL_H
5# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."5# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."
6#endif6#endif
77
8#define __GLIBC_LINUX_VERSION_CODE 3287048#define __GLIBC_LINUX_VERSION_CODE 329472
99
10#ifdef __NR_FAST_atomic_update10#ifdef __NR_FAST_atomic_update
11# define SYS_FAST_atomic_update __NR_FAST_atomic_update11# define SYS_FAST_atomic_update __NR_FAST_atomic_update
...@@ -75,6 +75,18 @@...@@ -75,6 +75,18 @@
75# define SYS_alloc_hugepages __NR_alloc_hugepages75# define SYS_alloc_hugepages __NR_alloc_hugepages
76#endif76#endif
7777
78#ifdef __NR_arc_gettls
79# define SYS_arc_gettls __NR_arc_gettls
80#endif
81
82#ifdef __NR_arc_settls
83# define SYS_arc_settls __NR_arc_settls
84#endif
85
86#ifdef __NR_arc_usr_cmpxchg
87# define SYS_arc_usr_cmpxchg __NR_arc_usr_cmpxchg
88#endif
89
78#ifdef __NR_arch_prctl90#ifdef __NR_arch_prctl
79# define SYS_arch_prctl __NR_arch_prctl91# define SYS_arch_prctl __NR_arch_prctl
80#endif92#endif
...@@ -1079,6 +1091,10 @@...@@ -1079,6 +1091,10 @@
1079# define SYS_openat __NR_openat1091# define SYS_openat __NR_openat
1080#endif1092#endif
10811093
1094#ifdef __NR_openat2
1095# define SYS_openat2 __NR_openat2
1096#endif
1097
1082#ifdef __NR_osf_adjtime1098#ifdef __NR_osf_adjtime
1083# define SYS_osf_adjtime __NR_osf_adjtime1099# define SYS_osf_adjtime __NR_osf_adjtime
1084#endif1100#endif
...@@ -1551,6 +1567,10 @@...@@ -1551,6 +1567,10 @@
1551# define SYS_personality __NR_personality1567# define SYS_personality __NR_personality
1552#endif1568#endif
15531569
1570#ifdef __NR_pidfd_getfd
1571# define SYS_pidfd_getfd __NR_pidfd_getfd
1572#endif
1573
1554#ifdef __NR_pidfd_open1574#ifdef __NR_pidfd_open
1555# define SYS_pidfd_open __NR_pidfd_open1575# define SYS_pidfd_open __NR_pidfd_open
1556#endif1576#endif
lib/libc/include/generic-glibc/bits/sysctl.h deleted-1
...@@ -1 +0,0 @@
1/* Empty file. */
\ No newline at end of file
lib/libc/include/generic-glibc/bits/syslog-ldbl.h+2-2
...@@ -27,9 +27,9 @@ __LDBL_REDIR_DECL (vsyslog)...@@ -27,9 +27,9 @@ __LDBL_REDIR_DECL (vsyslog)
27#endif27#endif
2828
29#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function29#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
30__LDBL_REDIR_DECL (__syslog_chk)30__LDBL_REDIR2_DECL (syslog_chk)
3131
32# ifdef __USE_MISC32# ifdef __USE_MISC
33__LDBL_REDIR_DECL (__vsyslog_chk)33__LDBL_REDIR2_DECL (vsyslog_chk)
34# endif34# endif
35#endif35#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/thread-shared-types.h+10
...@@ -116,4 +116,14 @@ struct __pthread_cond_s...@@ -116,4 +116,14 @@ struct __pthread_cond_s
116 unsigned int __g_signals[2];116 unsigned int __g_signals[2];
117};117};
118118
119typedef unsigned int __tss_t;
120typedef unsigned long int __thrd_t;
121
122typedef struct
123{
124 int __data __ONCE_ALIGNMENT;
125} __once_flag;
126
127#define __ONCE_FLAG_INIT { 0 }
128
119#endif /* _THREAD_SHARED_TYPES_H */129#endif /* _THREAD_SHARED_TYPES_H */
\ No newline at end of file
lib/libc/include/generic-glibc/bits/types.h+1
...@@ -160,6 +160,7 @@ __STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */...@@ -160,6 +160,7 @@ __STD_TYPE __ID_T_TYPE __id_t; /* General type for IDs. */
160__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */160__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
161__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */161__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
162__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */162__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
163__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
163164
164__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */165__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
165__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */166__STD_TYPE __KEY_T_TYPE __key_t; /* Type of an IPC key. */
lib/libc/include/generic-glibc/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Generic implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 __time_t msg_stime; /* time of last msgsnd command */
30 unsigned long int __msg_stime_high;
31 __time_t msg_rtime; /* time of last msgsnd command */
32 unsigned long int __msg_rtime_high;
33 __time_t msg_ctime; /* time of last change */
34 unsigned long int __msg_ctime_high;
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/generic-glibc/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* Generic implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __time_t sem_otime; /* last semop() time */
29 __syscall_ulong_t __sem_otime_high;
30 __time_t sem_ctime; /* last time changed by semctl() */
31 __syscall_ulong_t __sem_ctime_high;
32#else
33 __time_t sem_otime;
34 __time_t sem_ctime;
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/generic-glibc/bits/types/struct_shmid_ds.h created+45
...@@ -0,0 +1,45 @@
1/* Generic implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_atime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_dtime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34 unsigned long int __shm_ctime_high;
35#else
36 __time_t shm_atime; /* time of last shmat() */
37 __time_t shm_dtime; /* time of last shmdt() */
38 __time_t shm_ctime; /* time of last change by shmctl() */
39#endif
40 __pid_t shm_cpid; /* pid of creator */
41 __pid_t shm_lpid; /* pid of last shmop */
42 shmatt_t shm_nattch; /* number of current attaches */
43 __syscall_ulong_t __glibc_reserved5;
44 __syscall_ulong_t __glibc_reserved6;
45 };
\ No newline at end of file
lib/libc/include/generic-glibc/bits/typesizes.h+7
...@@ -50,6 +50,7 @@...@@ -50,6 +50,7 @@
50#define __TIME_T_TYPE __SLONGWORD_TYPE50#define __TIME_T_TYPE __SLONGWORD_TYPE
51#define __USECONDS_T_TYPE __U32_TYPE51#define __USECONDS_T_TYPE __U32_TYPE
52#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE52#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
53#define __DADDR_T_TYPE __S32_TYPE54#define __DADDR_T_TYPE __S32_TYPE
54#define __KEY_T_TYPE __S32_TYPE55#define __KEY_T_TYPE __S32_TYPE
55#define __CLOCKID_T_TYPE __S32_TYPE56#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -75,10 +76,16 @@...@@ -75,10 +76,16 @@
7576
76/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
77# define __STATFS_MATCHES_STATFS64 178# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
78#else82#else
79# define __RLIM_T_MATCHES_RLIM64_T 083# define __RLIM_T_MATCHES_RLIM64_T 0
8084
81# define __STATFS_MATCHES_STATFS64 085# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
82#endif89#endif
8390
84/* Number of descriptors that can fit in an `fd_set'. */91/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/generic-glibc/bits/unistd.h+35-23
...@@ -21,9 +21,11 @@...@@ -21,9 +21,11 @@
21#endif21#endif
2222
23extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,23extern ssize_t __read_chk (int __fd, void *__buf, size_t __nbytes,
24 size_t __buflen) __wur;24 size_t __buflen)
25 __wur __attr_access ((__write_only__, 2, 3));
25extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,26extern ssize_t __REDIRECT (__read_alias, (int __fd, void *__buf,
26 size_t __nbytes), read) __wur;27 size_t __nbytes), read)
28 __wur __attr_access ((__write_only__, 2, 3));
27extern ssize_t __REDIRECT (__read_chk_warn,29extern ssize_t __REDIRECT (__read_chk_warn,
28 (int __fd, void *__buf, size_t __nbytes,30 (int __fd, void *__buf, size_t __nbytes,
29 size_t __buflen), __read_chk)31 size_t __buflen), __read_chk)
...@@ -46,15 +48,19 @@ read (int __fd, void *__buf, size_t __nbytes)...@@ -46,15 +48,19 @@ read (int __fd, void *__buf, size_t __nbytes)
4648
47#ifdef __USE_UNIX9849#ifdef __USE_UNIX98
48extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,50extern ssize_t __pread_chk (int __fd, void *__buf, size_t __nbytes,
49 __off_t __offset, size_t __bufsize) __wur;51 __off_t __offset, size_t __bufsize)
52 __wur __attr_access ((__write_only__, 2, 3));
50extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,53extern ssize_t __pread64_chk (int __fd, void *__buf, size_t __nbytes,
51 __off64_t __offset, size_t __bufsize) __wur;54 __off64_t __offset, size_t __bufsize)
55 __wur __attr_access ((__write_only__, 2, 3));
52extern ssize_t __REDIRECT (__pread_alias,56extern ssize_t __REDIRECT (__pread_alias,
53 (int __fd, void *__buf, size_t __nbytes,57 (int __fd, void *__buf, size_t __nbytes,
54 __off_t __offset), pread) __wur;58 __off_t __offset), pread)
59 __wur __attr_access ((__write_only__, 2, 3));
55extern ssize_t __REDIRECT (__pread64_alias,60extern ssize_t __REDIRECT (__pread64_alias,
56 (int __fd, void *__buf, size_t __nbytes,61 (int __fd, void *__buf, size_t __nbytes,
57 __off64_t __offset), pread64) __wur;62 __off64_t __offset), pread64)
63 __wur __attr_access ((__write_only__, 2, 3));
58extern ssize_t __REDIRECT (__pread_chk_warn,64extern ssize_t __REDIRECT (__pread_chk_warn,
59 (int __fd, void *__buf, size_t __nbytes,65 (int __fd, void *__buf, size_t __nbytes,
60 __off_t __offset, size_t __bufsize), __pread_chk)66 __off_t __offset, size_t __bufsize), __pread_chk)
...@@ -123,11 +129,11 @@ pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)...@@ -123,11 +129,11 @@ pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
123extern ssize_t __readlink_chk (const char *__restrict __path,129extern ssize_t __readlink_chk (const char *__restrict __path,
124 char *__restrict __buf, size_t __len,130 char *__restrict __buf, size_t __len,
125 size_t __buflen)131 size_t __buflen)
126 __THROW __nonnull ((1, 2)) __wur;132 __THROW __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
127extern ssize_t __REDIRECT_NTH (__readlink_alias,133extern ssize_t __REDIRECT_NTH (__readlink_alias,
128 (const char *__restrict __path,134 (const char *__restrict __path,
129 char *__restrict __buf, size_t __len), readlink)135 char *__restrict __buf, size_t __len), readlink)
130 __nonnull ((1, 2)) __wur;136 __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
131extern ssize_t __REDIRECT_NTH (__readlink_chk_warn,137extern ssize_t __REDIRECT_NTH (__readlink_chk_warn,
132 (const char *__restrict __path,138 (const char *__restrict __path,
133 char *__restrict __buf, size_t __len,139 char *__restrict __buf, size_t __len,
...@@ -155,12 +161,12 @@ __NTH (readlink (const char *__restrict __path, char *__restrict __buf,...@@ -155,12 +161,12 @@ __NTH (readlink (const char *__restrict __path, char *__restrict __buf,
155extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path,161extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path,
156 char *__restrict __buf, size_t __len,162 char *__restrict __buf, size_t __len,
157 size_t __buflen)163 size_t __buflen)
158 __THROW __nonnull ((2, 3)) __wur;164 __THROW __nonnull ((2, 3)) __wur __attr_access ((__write_only__, 3, 4));
159extern ssize_t __REDIRECT_NTH (__readlinkat_alias,165extern ssize_t __REDIRECT_NTH (__readlinkat_alias,
160 (int __fd, const char *__restrict __path,166 (int __fd, const char *__restrict __path,
161 char *__restrict __buf, size_t __len),167 char *__restrict __buf, size_t __len),
162 readlinkat)168 readlinkat)
163 __nonnull ((2, 3)) __wur;169 __nonnull ((2, 3)) __wur __attr_access ((__write_only__, 3, 4));
164extern ssize_t __REDIRECT_NTH (__readlinkat_chk_warn,170extern ssize_t __REDIRECT_NTH (__readlinkat_chk_warn,
165 (int __fd, const char *__restrict __path,171 (int __fd, const char *__restrict __path,
166 char *__restrict __buf, size_t __len,172 char *__restrict __buf, size_t __len,
...@@ -187,9 +193,10 @@ __NTH (readlinkat (int __fd, const char *__restrict __path,...@@ -187,9 +193,10 @@ __NTH (readlinkat (int __fd, const char *__restrict __path,
187#endif193#endif
188194
189extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)195extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
190 __THROW __wur;196 __THROW __wur __attr_access ((__write_only__, 1, 2));
191extern char *__REDIRECT_NTH (__getcwd_alias,197extern char *__REDIRECT_NTH (__getcwd_alias,
192 (char *__buf, size_t __size), getcwd) __wur;198 (char *__buf, size_t __size), getcwd)
199 __wur __attr_access ((__write_only__, 1, 2));
193extern char *__REDIRECT_NTH (__getcwd_chk_warn,200extern char *__REDIRECT_NTH (__getcwd_chk_warn,
194 (char *__buf, size_t __size, size_t __buflen),201 (char *__buf, size_t __size, size_t __buflen),
195 __getcwd_chk)202 __getcwd_chk)
...@@ -212,7 +219,7 @@ __NTH (getcwd (char *__buf, size_t __size))...@@ -212,7 +219,7 @@ __NTH (getcwd (char *__buf, size_t __size))
212219
213#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED220#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
214extern char *__getwd_chk (char *__buf, size_t buflen)221extern char *__getwd_chk (char *__buf, size_t buflen)
215 __THROW __nonnull ((1)) __wur;222 __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
216extern char *__REDIRECT_NTH (__getwd_warn, (char *__buf), getwd)223extern char *__REDIRECT_NTH (__getwd_warn, (char *__buf), getwd)
217 __nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "224 __nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "
218 "doesn't specify buffer size");225 "doesn't specify buffer size");
...@@ -227,9 +234,11 @@ __NTH (getwd (char *__buf))...@@ -227,9 +234,11 @@ __NTH (getwd (char *__buf))
227#endif234#endif
228235
229extern size_t __confstr_chk (int __name, char *__buf, size_t __len,236extern size_t __confstr_chk (int __name, char *__buf, size_t __len,
230 size_t __buflen) __THROW;237 size_t __buflen) __THROW
238 __attr_access ((__write_only__, 2, 3));
231extern size_t __REDIRECT_NTH (__confstr_alias, (int __name, char *__buf,239extern size_t __REDIRECT_NTH (__confstr_alias, (int __name, char *__buf,
232 size_t __len), confstr);240 size_t __len), confstr)
241 __attr_access ((__write_only__, 2, 3));
233extern size_t __REDIRECT_NTH (__confstr_chk_warn,242extern size_t __REDIRECT_NTH (__confstr_chk_warn,
234 (int __name, char *__buf, size_t __len,243 (int __name, char *__buf, size_t __len,
235 size_t __buflen), __confstr_chk)244 size_t __buflen), __confstr_chk)
...@@ -252,9 +261,9 @@ __NTH (confstr (int __name, char *__buf, size_t __len))...@@ -252,9 +261,9 @@ __NTH (confstr (int __name, char *__buf, size_t __len))
252261
253262
254extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)263extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
255 __THROW __wur;264 __THROW __wur __attr_access ((__write_only__, 2, 1));
256extern int __REDIRECT_NTH (__getgroups_alias, (int __size, __gid_t __list[]),265extern int __REDIRECT_NTH (__getgroups_alias, (int __size, __gid_t __list[]),
257 getgroups) __wur;266 getgroups) __wur __attr_access ((__write_only__, 2, 1));
258extern int __REDIRECT_NTH (__getgroups_chk_warn,267extern int __REDIRECT_NTH (__getgroups_chk_warn,
259 (int __size, __gid_t __list[], size_t __listlen),268 (int __size, __gid_t __list[], size_t __listlen),
260 __getgroups_chk)269 __getgroups_chk)
...@@ -277,7 +286,8 @@ __NTH (getgroups (int __size, __gid_t __list[]))...@@ -277,7 +286,8 @@ __NTH (getgroups (int __size, __gid_t __list[]))
277286
278287
279extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,288extern int __ttyname_r_chk (int __fd, char *__buf, size_t __buflen,
280 size_t __nreal) __THROW __nonnull ((2));289 size_t __nreal) __THROW __nonnull ((2))
290 __attr_access ((__write_only__, 2, 3));
281extern int __REDIRECT_NTH (__ttyname_r_alias, (int __fd, char *__buf,291extern int __REDIRECT_NTH (__ttyname_r_alias, (int __fd, char *__buf,
282 size_t __buflen), ttyname_r)292 size_t __buflen), ttyname_r)
283 __nonnull ((2));293 __nonnull ((2));
...@@ -304,7 +314,7 @@ __NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))...@@ -304,7 +314,7 @@ __NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
304314
305#ifdef __USE_POSIX199506315#ifdef __USE_POSIX199506
306extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)316extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
307 __nonnull ((1));317 __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
308extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),318extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),
309 getlogin_r) __nonnull ((1));319 getlogin_r) __nonnull ((1));
310extern int __REDIRECT (__getlogin_r_chk_warn,320extern int __REDIRECT (__getlogin_r_chk_warn,
...@@ -331,9 +341,10 @@ getlogin_r (char *__buf, size_t __buflen)...@@ -331,9 +341,10 @@ getlogin_r (char *__buf, size_t __buflen)
331341
332#if defined __USE_MISC || defined __USE_UNIX98342#if defined __USE_MISC || defined __USE_UNIX98
333extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)343extern int __gethostname_chk (char *__buf, size_t __buflen, size_t __nreal)
334 __THROW __nonnull ((1));344 __THROW __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
335extern int __REDIRECT_NTH (__gethostname_alias, (char *__buf, size_t __buflen),345extern int __REDIRECT_NTH (__gethostname_alias, (char *__buf, size_t __buflen),
336 gethostname) __nonnull ((1));346 gethostname)
347 __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
337extern int __REDIRECT_NTH (__gethostname_chk_warn,348extern int __REDIRECT_NTH (__gethostname_chk_warn,
338 (char *__buf, size_t __buflen, size_t __nreal),349 (char *__buf, size_t __buflen, size_t __nreal),
339 __gethostname_chk)350 __gethostname_chk)
...@@ -358,10 +369,11 @@ __NTH (gethostname (char *__buf, size_t __buflen))...@@ -358,10 +369,11 @@ __NTH (gethostname (char *__buf, size_t __buflen))
358369
359#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_UNIX98)370#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_UNIX98)
360extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)371extern int __getdomainname_chk (char *__buf, size_t __buflen, size_t __nreal)
361 __THROW __nonnull ((1)) __wur;372 __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
362extern int __REDIRECT_NTH (__getdomainname_alias, (char *__buf,373extern int __REDIRECT_NTH (__getdomainname_alias, (char *__buf,
363 size_t __buflen),374 size_t __buflen),
364 getdomainname) __nonnull ((1)) __wur;375 getdomainname) __nonnull ((1))
376 __wur __attr_access ((__write_only__, 1, 2));
365extern int __REDIRECT_NTH (__getdomainname_chk_warn,377extern int __REDIRECT_NTH (__getdomainname_chk_warn,
366 (char *__buf, size_t __buflen, size_t __nreal),378 (char *__buf, size_t __buflen, size_t __nreal),
367 __getdomainname_chk)379 __getdomainname_chk)
lib/libc/include/generic-glibc/bits/wchar-ldbl.h+30-6
...@@ -28,9 +28,17 @@ __LDBL_REDIR_DECL (vfwprintf);...@@ -28,9 +28,17 @@ __LDBL_REDIR_DECL (vfwprintf);
28__LDBL_REDIR_DECL (vwprintf);28__LDBL_REDIR_DECL (vwprintf);
29__LDBL_REDIR_DECL (vswprintf);29__LDBL_REDIR_DECL (vswprintf);
30# if !__GLIBC_USE (DEPRECATED_SCANF)30# if !__GLIBC_USE (DEPRECATED_SCANF)
31# if defined __LDBL_COMPAT
31__LDBL_REDIR1_DECL (fwscanf, __nldbl___isoc99_fwscanf)32__LDBL_REDIR1_DECL (fwscanf, __nldbl___isoc99_fwscanf)
32__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf)33__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf)
33__LDBL_REDIR1_DECL (swscanf, __nldbl___isoc99_swscanf)34__LDBL_REDIR1_DECL (swscanf, __nldbl___isoc99_swscanf)
35# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
36__LDBL_REDIR1_DECL (fwscanf, __isoc99_fwscanfieee128)
37__LDBL_REDIR1_DECL (wscanf, __isoc99_wscanfieee128)
38__LDBL_REDIR1_DECL (swscanf, __isoc99_swscanfieee128)
39# else
40# error bits/stdlib-ldbl.h included when no ldbl redirections are required.
41# endif
34# else42# else
35__LDBL_REDIR_DECL (fwscanf);43__LDBL_REDIR_DECL (fwscanf);
36__LDBL_REDIR_DECL (wscanf);44__LDBL_REDIR_DECL (wscanf);
...@@ -39,11 +47,23 @@ __LDBL_REDIR_DECL (swscanf);...@@ -39,11 +47,23 @@ __LDBL_REDIR_DECL (swscanf);
39#endif47#endif
4048
41#ifdef __USE_ISOC9949#ifdef __USE_ISOC99
50# ifdef __LDBL_COMPAT
42__LDBL_REDIR1_DECL (wcstold, wcstod);51__LDBL_REDIR1_DECL (wcstold, wcstod);
52# else
53__LDBL_REDIR1_DECL (wcstold, __wcstoieee128)
54# endif
43# if !__GLIBC_USE (DEPRECATED_SCANF)55# if !__GLIBC_USE (DEPRECATED_SCANF)
56# if defined __LDBL_COMPAT
44__LDBL_REDIR1_DECL (vfwscanf, __nldbl___isoc99_vfwscanf)57__LDBL_REDIR1_DECL (vfwscanf, __nldbl___isoc99_vfwscanf)
45__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf)58__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf)
46__LDBL_REDIR1_DECL (vswscanf, __nldbl___isoc99_vswscanf)59__LDBL_REDIR1_DECL (vswscanf, __nldbl___isoc99_vswscanf)
60# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
61__LDBL_REDIR1_DECL (vfwscanf, __isoc99_vfwscanfieee128)
62__LDBL_REDIR1_DECL (vwscanf, __isoc99_vwscanfieee128)
63__LDBL_REDIR1_DECL (vswscanf, __isoc99_vswscanfieee128)
64# else
65# error bits/stdlib-ldbl.h included when no ldbl redirections are required.
66# endif
47# else67# else
48__LDBL_REDIR_DECL (vfwscanf);68__LDBL_REDIR_DECL (vfwscanf);
49__LDBL_REDIR_DECL (vwscanf);69__LDBL_REDIR_DECL (vwscanf);
...@@ -52,16 +72,20 @@ __LDBL_REDIR_DECL (vswscanf);...@@ -52,16 +72,20 @@ __LDBL_REDIR_DECL (vswscanf);
52#endif72#endif
5373
54#ifdef __USE_GNU74#ifdef __USE_GNU
75# ifdef __LDBL_COMPAT
55__LDBL_REDIR1_DECL (wcstold_l, wcstod_l);76__LDBL_REDIR1_DECL (wcstold_l, wcstod_l);
77# else
78__LDBL_REDIR1_DECL (wcstold_l, __wcstoieee128_l)
79# endif
56#endif80#endif
5781
58#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function82#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
59__LDBL_REDIR_DECL (__swprintf_chk)83__LDBL_REDIR2_DECL (swprintf_chk)
60__LDBL_REDIR_DECL (__vswprintf_chk)84__LDBL_REDIR2_DECL (vswprintf_chk)
61# if __USE_FORTIFY_LEVEL > 185# if __USE_FORTIFY_LEVEL > 1
62__LDBL_REDIR_DECL (__fwprintf_chk)86__LDBL_REDIR2_DECL (fwprintf_chk)
63__LDBL_REDIR_DECL (__wprintf_chk)87__LDBL_REDIR2_DECL (wprintf_chk)
64__LDBL_REDIR_DECL (__vfwprintf_chk)88__LDBL_REDIR2_DECL (vfwprintf_chk)
65__LDBL_REDIR_DECL (__vwprintf_chk)89__LDBL_REDIR2_DECL (vwprintf_chk)
66# endif90# endif
67#endif91#endif
\ No newline at end of file
lib/libc/include/generic-glibc/complex.h+27-2
...@@ -95,11 +95,15 @@ __BEGIN_DECLS...@@ -95,11 +95,15 @@ __BEGIN_DECLS
9595
96#define __MATHCALL(function, args) \96#define __MATHCALL(function, args) \
97 __MATHDECL (_Mdouble_complex_,function, args)97 __MATHDECL (_Mdouble_complex_,function, args)
98#define __MATHDECL(type, function, args) \98#define __MATHDECL_IMPL(type, function, args) \
99 __MATHDECL_1(type, function, args); \99 __MATHDECL_1(type, function, args); \
100 __MATHDECL_1(type, __CONCAT(__,function), args)100 __MATHDECL_1(type, __CONCAT(__,function), args)
101#define __MATHDECL_1(type, function, args) \101#define __MATHDECL(type, function, args) \
102 __MATHDECL_IMPL(type, function, args)
103#define __MATHDECL_1_IMPL(type, function, args) \
102 extern type __MATH_PRECNAME(function) args __THROW104 extern type __MATH_PRECNAME(function) args __THROW
105#define __MATHDECL_1(type, function, args) \
106 __MATHDECL_1_IMPL(type, function, args)
103107
104#define _Mdouble_ double108#define _Mdouble_ double
105#define __MATH_PRECNAME(name) name109#define __MATH_PRECNAME(name) name
...@@ -122,11 +126,31 @@ __BEGIN_DECLS...@@ -122,11 +126,31 @@ __BEGIN_DECLS
122# undef __MATHDECL_1126# undef __MATHDECL_1
123# define __MATHDECL_1(type, function, args) \127# define __MATHDECL_1(type, function, args) \
124 extern type __REDIRECT_NTH(__MATH_PRECNAME(function), args, function)128 extern type __REDIRECT_NTH(__MATH_PRECNAME(function), args, function)
129# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
130# undef __MATHDECL_1
131# undef __MATHDECL
132# define __REDIR_TO(function) \
133 __ ## function ## ieee128
134# define __MATHDECL_1(type, function, alias, args) \
135 extern type __REDIRECT_NTH(__MATH_PRECNAME(function), args, alias)
136#define __MATHDECL(type, function, args) \
137 __MATHDECL_1(type, function, __REDIR_TO(function), args); \
138 __MATHDECL_1(type, __CONCAT(__,function), __REDIR_TO(function), args)
125# endif139# endif
126140
127# define _Mdouble_ long double141# define _Mdouble_ long double
128# define __MATH_PRECNAME(name) name##l142# define __MATH_PRECNAME(name) name##l
129# include <bits/cmathcalls.h>143# include <bits/cmathcalls.h>
144# if defined __LDBL_COMPAT \
145 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
146# undef __REDIR_TO
147# undef __MATHDECL_1
148# undef __MATHDECL
149#define __MATHDECL(type, function, args) \
150 __MATHDECL_IMPL(type, function, args)
151# define __MATHDECL_1(type, function, args) \
152 __MATHDECL_1_IMPL(type, function, args)
153# endif
130#endif154#endif
131#undef _Mdouble_155#undef _Mdouble_
132#undef __MATH_PRECNAME156#undef __MATH_PRECNAME
...@@ -215,6 +239,7 @@ __BEGIN_DECLS...@@ -215,6 +239,7 @@ __BEGIN_DECLS
215# undef _Mdouble_complex_239# undef _Mdouble_complex_
216#endif240#endif
217241
242#undef __MATHDECL_1_IMPL
218#undef __MATHDECL_1243#undef __MATHDECL_1
219#undef __MATHDECL244#undef __MATHDECL
220#undef __MATHCALL245#undef __MATHCALL
lib/libc/include/generic-glibc/elf.h+78-2
...@@ -330,7 +330,7 @@ typedef struct...@@ -330,7 +330,7 @@ typedef struct
330#define EM_CLOUDSHIELD 192 /* CloudShield */330#define EM_CLOUDSHIELD 192 /* CloudShield */
331#define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */331#define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
332#define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */332#define EM_COREA_2ND 194 /* KIPO-KAIST Core-A 2nd gen. */
333#define EM_ARC_COMPACT2 195 /* Synopsys ARCompact V2 */333#define EM_ARCV2 195 /* Synopsys ARCv2 ISA. */
334#define EM_OPEN8 196 /* Open8 RISC */334#define EM_OPEN8 196 /* Open8 RISC */
335#define EM_RL78 197 /* Renesas RL78 */335#define EM_RL78 197 /* Renesas RL78 */
336#define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */336#define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
...@@ -721,6 +721,7 @@ typedef struct...@@ -721,6 +721,7 @@ typedef struct
721#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */721#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
722#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */722#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
723#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */723#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
724#define PT_GNU_PROPERTY 0x6474e553 /* GNU property */
724#define PT_LOSUNW 0x6ffffffa725#define PT_LOSUNW 0x6ffffffa
725#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */726#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
726#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */727#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
...@@ -1318,6 +1319,12 @@ typedef struct...@@ -1318,6 +1319,12 @@ typedef struct
1318/* Application-specific semantics, hi */1319/* Application-specific semantics, hi */
1319#define GNU_PROPERTY_HIUSER 0xffffffff1320#define GNU_PROPERTY_HIUSER 0xffffffff
13201321
1322/* AArch64 specific GNU properties. */
1323#define GNU_PROPERTY_AARCH64_FEATURE_1_AND 0xc0000000
1324
1325#define GNU_PROPERTY_AARCH64_FEATURE_1_BTI (1U << 0)
1326#define GNU_PROPERTY_AARCH64_FEATURE_1_PAC (1U << 1)
1327
1321/* The x86 instruction sets indicated by the corresponding bits are1328/* The x86 instruction sets indicated by the corresponding bits are
1322 used in program. Their support in the hardware is optional. */1329 used in program. Their support in the hardware is optional. */
1323#define GNU_PROPERTY_X86_ISA_1_USED 0xc00000001330#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
...@@ -3946,8 +3953,9 @@ enum...@@ -3946,8 +3953,9 @@ enum
3946#define R_RISCV_SET16 553953#define R_RISCV_SET16 55
3947#define R_RISCV_SET32 563954#define R_RISCV_SET32 56
3948#define R_RISCV_32_PCREL 573955#define R_RISCV_32_PCREL 57
3956#define R_RISCV_IRELATIVE 58
39493957
3950#define R_RISCV_NUM 583958#define R_RISCV_NUM 59
39513959
3952/* BPF specific declarations. */3960/* BPF specific declarations. */
39533961
...@@ -4027,6 +4035,74 @@ enum...@@ -4027,6 +4035,74 @@ enum
4027#define R_NDS32_TLS_TPOFF 1024035#define R_NDS32_TLS_TPOFF 102
4028#define R_NDS32_TLS_DESC 1194036#define R_NDS32_TLS_DESC 119
40294037
4038/* ARCompact/ARCv2 specific relocs. */
4039#define R_ARC_NONE 0x0
4040#define R_ARC_8 0x1
4041#define R_ARC_16 0x2
4042#define R_ARC_24 0x3
4043#define R_ARC_32 0x4
4044#define R_ARC_B26 0x5
4045#define R_ARC_B22_PCREL 0x6
4046#define R_ARC_H30 0x7
4047#define R_ARC_N8 0x8
4048#define R_ARC_N16 0x9
4049#define R_ARC_N24 0xA
4050#define R_ARC_N32 0xB
4051#define R_ARC_SDA 0xC
4052#define R_ARC_SECTOFF 0xD
4053#define R_ARC_S21H_PCREL 0xE
4054#define R_ARC_S21W_PCREL 0xF
4055#define R_ARC_S25H_PCREL 0x10
4056#define R_ARC_S25W_PCREL 0x11
4057#define R_ARC_SDA32 0x12
4058#define R_ARC_SDA_LDST 0x13
4059#define R_ARC_SDA_LDST1 0x14
4060#define R_ARC_SDA_LDST2 0x15
4061#define R_ARC_SDA16_LD 0x16
4062#define R_ARC_SDA16_LD1 0x17
4063#define R_ARC_SDA16_LD2 0x18
4064#define R_ARC_S13_PCREL 0x19
4065#define R_ARC_W 0x1A
4066#define R_ARC_32_ME 0x1B
4067#define R_ARC_N32_ME 0x1C
4068#define R_ARC_SECTOFF_ME 0x1D
4069#define R_ARC_SDA32_ME 0x1E
4070#define R_ARC_W_ME 0x1F
4071#define R_ARC_H30_ME 0x20
4072#define R_ARC_SECTOFF_U8 0x21
4073#define R_ARC_SECTOFF_S9 0x22
4074#define R_AC_SECTOFF_U8 0x23
4075#define R_AC_SECTOFF_U8_1 0x24
4076#define R_AC_SECTOFF_U8_2 0x25
4077#define R_AC_SECTOFF_S9 0x26
4078#define R_AC_SECTOFF_S9_1 0x27
4079#define R_AC_SECTOFF_S9_2 0x28
4080#define R_ARC_SECTOFF_ME_1 0x29
4081#define R_ARC_SECTOFF_ME_2 0x2A
4082#define R_ARC_SECTOFF_1 0x2B
4083#define R_ARC_SECTOFF_2 0x2C
4084#define R_ARC_PC32 0x32
4085#define R_ARC_GOTPC32 0x33
4086#define R_ARC_PLT32 0x34
4087#define R_ARC_COPY 0x35
4088#define R_ARC_GLOB_DAT 0x36
4089#define R_ARC_JUMP_SLOT 0x37
4090#define R_ARC_RELATIVE 0x38
4091#define R_ARC_GOTOFF 0x39
4092#define R_ARC_GOTPC 0x3A
4093#define R_ARC_GOT32 0x3B
4094
4095#define R_ARC_TLS_DTPMOD 0x42
4096#define R_ARC_TLS_DTPOFF 0x43
4097#define R_ARC_TLS_TPOFF 0x44
4098#define R_ARC_TLS_GD_GOT 0x45
4099#define R_ARC_TLS_GD_LD 0x46
4100#define R_ARC_TLS_GD_CALL 0x47
4101#define R_ARC_TLS_IE_GOT 0x48
4102#define R_ARC_TLS_DTPOFF_S9 0x4a
4103#define R_ARC_TLS_LE_S9 0x4a
4104#define R_ARC_TLS_LE_32 0x4b
4105
4030__END_DECLS4106__END_DECLS
40314107
4032#endif /* elf.h */4108#endif /* elf.h */
\ No newline at end of file
lib/libc/include/generic-glibc/err.h+2-1
...@@ -52,7 +52,8 @@ extern void errx (int __status, const char *__format, ...)...@@ -52,7 +52,8 @@ extern void errx (int __status, const char *__format, ...)
52extern void verrx (int __status, const char *, __gnuc_va_list)52extern void verrx (int __status, const char *, __gnuc_va_list)
53 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));53 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
5454
55#ifdef __LDBL_COMPAT55#include <bits/floatn.h>
56#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
56# include <bits/err-ldbl.h>57# include <bits/err-ldbl.h>
57#endif58#endif
5859
lib/libc/include/generic-glibc/error.h+4-2
...@@ -47,11 +47,13 @@ extern unsigned int error_message_count;...@@ -47,11 +47,13 @@ extern unsigned int error_message_count;
47 variable controls whether this mode is selected or not. */47 variable controls whether this mode is selected or not. */
48extern int error_one_per_line;48extern int error_one_per_line;
4949
50#ifdef __LDBL_COMPAT50#include <bits/floatn.h>
51#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
51# include <bits/error-ldbl.h>52# include <bits/error-ldbl.h>
52#else53#else
53/* Do not inline error and error_at_line when long double has the same54/* Do not inline error and error_at_line when long double has the same
54 size of double, because that would invalidate the redirections to the55 size of double, nor when long double reuses the float128
56 implementation, because that would invalidate the redirections to the
55 compatibility functions. */57 compatibility functions. */
56# if defined __extern_always_inline && defined __va_arg_pack58# if defined __extern_always_inline && defined __va_arg_pack
57# include <bits/error.h>59# include <bits/error.h>
lib/libc/include/generic-glibc/features.h+1-1
...@@ -454,7 +454,7 @@...@@ -454,7 +454,7 @@
454/* Major and minor version number of the GNU C library package. Use454/* Major and minor version number of the GNU C library package. Use
455 these macros to test for features in specific releases. */455 these macros to test for features in specific releases. */
456#define __GLIBC__ 2456#define __GLIBC__ 2
457#define __GLIBC_MINOR__ 31457#define __GLIBC_MINOR__ 32
458458
459#define __GLIBC_PREREQ(maj, min) \459#define __GLIBC_PREREQ(maj, min) \
460 ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))460 ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min))
lib/libc/include/generic-glibc/fenv.h-4
...@@ -140,10 +140,6 @@ extern int fegetmode (femode_t *__modep) __THROW;...@@ -140,10 +140,6 @@ extern int fegetmode (femode_t *__modep) __THROW;
140extern int fesetmode (const femode_t *__modep) __THROW;140extern int fesetmode (const femode_t *__modep) __THROW;
141#endif141#endif
142142
143/* Include optimization. */
144#ifdef __OPTIMIZE__
145# include <bits/fenvinline.h>
146#endif
147143
148/* NaN support. */144/* NaN support. */
149145
lib/libc/include/generic-glibc/gnu/lib-names-32.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-hard.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-n32_hard.h-2
...@@ -19,8 +19,6 @@...@@ -19,8 +19,6 @@
19#define LIBNSS_FILES_SO "libnss_files.so.2"19#define LIBNSS_FILES_SO "libnss_files.so.2"
20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
22#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
23#define LIBNSS_NIS_SO "libnss_nis.so.2"
24#define LIBNSS_TEST1_SO "libnss_test1.so.2"22#define LIBNSS_TEST1_SO "libnss_test1.so.2"
25#define LIBNSS_TEST2_SO "libnss_test2.so.2"23#define LIBNSS_TEST2_SO "libnss_test2.so.2"
26#define LIBPTHREAD_SO "libpthread.so.0"24#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-n64_hard.h-2
...@@ -19,8 +19,6 @@...@@ -19,8 +19,6 @@
19#define LIBNSS_FILES_SO "libnss_files.so.2"19#define LIBNSS_FILES_SO "libnss_files.so.2"
20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
22#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
23#define LIBNSS_NIS_SO "libnss_nis.so.2"
24#define LIBNSS_TEST1_SO "libnss_test1.so.2"22#define LIBNSS_TEST1_SO "libnss_test1.so.2"
25#define LIBNSS_TEST2_SO "libnss_test2.so.2"23#define LIBNSS_TEST2_SO "libnss_test2.so.2"
26#define LIBPTHREAD_SO "libpthread.so.0"24#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-o32_hard.h-2
...@@ -19,8 +19,6 @@...@@ -19,8 +19,6 @@
19#define LIBNSS_FILES_SO "libnss_files.so.2"19#define LIBNSS_FILES_SO "libnss_files.so.2"
20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
22#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
23#define LIBNSS_NIS_SO "libnss_nis.so.2"
24#define LIBNSS_TEST1_SO "libnss_test1.so.2"22#define LIBNSS_TEST1_SO "libnss_test1.so.2"
25#define LIBNSS_TEST2_SO "libnss_test2.so.2"23#define LIBNSS_TEST2_SO "libnss_test2.so.2"
26#define LIBPTHREAD_SO "libpthread.so.0"24#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-soft.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/stubs-32.h-2
...@@ -10,9 +10,7 @@...@@ -10,9 +10,7 @@
10#define __stub_chflags10#define __stub_chflags
11#define __stub_fchflags11#define __stub_fchflags
12#define __stub_gtty12#define __stub_gtty
13#define __stub_lchmod
14#define __stub_revoke13#define __stub_revoke
15#define __stub_setlogin14#define __stub_setlogin
16#define __stub_sigreturn15#define __stub_sigreturn
17#define __stub_sstk
18#define __stub_stty16#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-64.h-2
...@@ -10,9 +10,7 @@...@@ -10,9 +10,7 @@
10#define __stub_chflags10#define __stub_chflags
11#define __stub_fchflags11#define __stub_fchflags
12#define __stub_gtty12#define __stub_gtty
13#define __stub_lchmod
14#define __stub_revoke13#define __stub_revoke
15#define __stub_setlogin14#define __stub_setlogin
16#define __stub_sigreturn15#define __stub_sigreturn
17#define __stub_sstk
18#define __stub_stty16#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-hard.h-2
...@@ -13,9 +13,7 @@...@@ -13,9 +13,7 @@
13#define __stub_chflags13#define __stub_chflags
14#define __stub_fchflags14#define __stub_fchflags
15#define __stub_gtty15#define __stub_gtty
16#define __stub_lchmod
17#define __stub_revoke16#define __stub_revoke
18#define __stub_setlogin17#define __stub_setlogin
19#define __stub_sigreturn18#define __stub_sigreturn
20#define __stub_sstk
21#define __stub_stty19#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h-2
...@@ -12,9 +12,7 @@...@@ -12,9 +12,7 @@
12#define __stub_chflags12#define __stub_chflags
13#define __stub_fchflags13#define __stub_fchflags
14#define __stub_gtty14#define __stub_gtty
15#define __stub_lchmod
16#define __stub_revoke15#define __stub_revoke
17#define __stub_setlogin16#define __stub_setlogin
18#define __stub_sigreturn17#define __stub_sigreturn
19#define __stub_sstk
20#define __stub_stty18#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h-2
...@@ -12,9 +12,7 @@...@@ -12,9 +12,7 @@
12#define __stub_chflags12#define __stub_chflags
13#define __stub_fchflags13#define __stub_fchflags
14#define __stub_gtty14#define __stub_gtty
15#define __stub_lchmod
16#define __stub_revoke15#define __stub_revoke
17#define __stub_setlogin16#define __stub_setlogin
18#define __stub_sigreturn17#define __stub_sigreturn
19#define __stub_sstk
20#define __stub_stty18#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h-2
...@@ -10,9 +10,7 @@...@@ -10,9 +10,7 @@
10#define __stub_chflags10#define __stub_chflags
11#define __stub_fchflags11#define __stub_fchflags
12#define __stub_gtty12#define __stub_gtty
13#define __stub_lchmod
14#define __stub_revoke13#define __stub_revoke
15#define __stub_setlogin14#define __stub_setlogin
16#define __stub_sigreturn15#define __stub_sigreturn
17#define __stub_sstk
18#define __stub_stty16#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-soft.h-2
...@@ -13,9 +13,7 @@...@@ -13,9 +13,7 @@
13#define __stub_chflags13#define __stub_chflags
14#define __stub_fchflags14#define __stub_fchflags
15#define __stub_gtty15#define __stub_gtty
16#define __stub_lchmod
17#define __stub_revoke16#define __stub_revoke
18#define __stub_setlogin17#define __stub_setlogin
19#define __stub_sigreturn18#define __stub_sigreturn
20#define __stub_sstk
21#define __stub_stty19#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/inttypes.h+24-24
...@@ -321,10 +321,10 @@ extern long int __strtol_internal (const char *__restrict __nptr,...@@ -321,10 +321,10 @@ extern long int __strtol_internal (const char *__restrict __nptr,
321 __THROW __nonnull ((1)) __wur;321 __THROW __nonnull ((1)) __wur;
322/* Like `strtol' but convert to `intmax_t'. */322/* Like `strtol' but convert to `intmax_t'. */
323__extern_inline intmax_t323__extern_inline intmax_t
324__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,324__NTH (strtoimax (const char *__restrict __nptr, char **__restrict __endptr,
325 int base))325 int __base))
326{326{
327 return __strtol_internal (nptr, endptr, base, 0);327 return __strtol_internal (__nptr, __endptr, __base, 0);
328}328}
329329
330extern unsigned long int __strtoul_internal (const char *__restrict __nptr,330extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
...@@ -333,10 +333,10 @@ extern unsigned long int __strtoul_internal (const char *__restrict __nptr,...@@ -333,10 +333,10 @@ extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
333 __THROW __nonnull ((1)) __wur;333 __THROW __nonnull ((1)) __wur;
334/* Like `strtoul' but convert to `uintmax_t'. */334/* Like `strtoul' but convert to `uintmax_t'. */
335__extern_inline uintmax_t335__extern_inline uintmax_t
336__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,336__NTH (strtoumax (const char *__restrict __nptr, char **__restrict __endptr,
337 int base))337 int __base))
338{338{
339 return __strtoul_internal (nptr, endptr, base, 0);339 return __strtoul_internal (__nptr, __endptr, __base, 0);
340}340}
341341
342extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,342extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
...@@ -345,10 +345,10 @@ extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,...@@ -345,10 +345,10 @@ extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
345 __THROW __nonnull ((1)) __wur;345 __THROW __nonnull ((1)) __wur;
346/* Like `wcstol' but convert to `intmax_t'. */346/* Like `wcstol' but convert to `intmax_t'. */
347__extern_inline intmax_t347__extern_inline intmax_t
348__NTH (wcstoimax (const __gwchar_t *__restrict nptr,348__NTH (wcstoimax (const __gwchar_t *__restrict __nptr,
349 __gwchar_t **__restrict endptr, int base))349 __gwchar_t **__restrict __endptr, int __base))
350{350{
351 return __wcstol_internal (nptr, endptr, base, 0);351 return __wcstol_internal (__nptr, __endptr, __base, 0);
352}352}
353353
354extern unsigned long int __wcstoul_internal (const __gwchar_t *354extern unsigned long int __wcstoul_internal (const __gwchar_t *
...@@ -359,10 +359,10 @@ extern unsigned long int __wcstoul_internal (const __gwchar_t *...@@ -359,10 +359,10 @@ extern unsigned long int __wcstoul_internal (const __gwchar_t *
359 __THROW __nonnull ((1)) __wur;359 __THROW __nonnull ((1)) __wur;
360/* Like `wcstoul' but convert to `uintmax_t'. */360/* Like `wcstoul' but convert to `uintmax_t'. */
361__extern_inline uintmax_t361__extern_inline uintmax_t
362__NTH (wcstoumax (const __gwchar_t *__restrict nptr,362__NTH (wcstoumax (const __gwchar_t *__restrict __nptr,
363 __gwchar_t **__restrict endptr, int base))363 __gwchar_t **__restrict __endptr, int __base))
364{364{
365 return __wcstoul_internal (nptr, endptr, base, 0);365 return __wcstoul_internal (__nptr, __endptr, __base, 0);
366}366}
367367
368# else /* __WORDSIZE == 32 */368# else /* __WORDSIZE == 32 */
...@@ -374,10 +374,10 @@ extern long long int __strtoll_internal (const char *__restrict __nptr,...@@ -374,10 +374,10 @@ extern long long int __strtoll_internal (const char *__restrict __nptr,
374 __THROW __nonnull ((1)) __wur;374 __THROW __nonnull ((1)) __wur;
375/* Like `strtol' but convert to `intmax_t'. */375/* Like `strtol' but convert to `intmax_t'. */
376__extern_inline intmax_t376__extern_inline intmax_t
377__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,377__NTH (strtoimax (const char *__restrict __nptr, char **__restrict __endptr,
378 int base))378 int __base))
379{379{
380 return __strtoll_internal (nptr, endptr, base, 0);380 return __strtoll_internal (__nptr, __endptr, __base, 0);
381}381}
382382
383__extension__383__extension__
...@@ -390,10 +390,10 @@ extern unsigned long long int __strtoull_internal (const char *...@@ -390,10 +390,10 @@ extern unsigned long long int __strtoull_internal (const char *
390 __THROW __nonnull ((1)) __wur;390 __THROW __nonnull ((1)) __wur;
391/* Like `strtoul' but convert to `uintmax_t'. */391/* Like `strtoul' but convert to `uintmax_t'. */
392__extern_inline uintmax_t392__extern_inline uintmax_t
393__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,393__NTH (strtoumax (const char *__restrict __nptr, char **__restrict __endptr,
394 int base))394 int __base))
395{395{
396 return __strtoull_internal (nptr, endptr, base, 0);396 return __strtoull_internal (__nptr, __endptr, __base, 0);
397}397}
398398
399__extension__399__extension__
...@@ -403,10 +403,10 @@ extern long long int __wcstoll_internal (const __gwchar_t *__restrict __nptr,...@@ -403,10 +403,10 @@ extern long long int __wcstoll_internal (const __gwchar_t *__restrict __nptr,
403 __THROW __nonnull ((1)) __wur;403 __THROW __nonnull ((1)) __wur;
404/* Like `wcstol' but convert to `intmax_t'. */404/* Like `wcstol' but convert to `intmax_t'. */
405__extern_inline intmax_t405__extern_inline intmax_t
406__NTH (wcstoimax (const __gwchar_t *__restrict nptr,406__NTH (wcstoimax (const __gwchar_t *__restrict __nptr,
407 __gwchar_t **__restrict endptr, int base))407 __gwchar_t **__restrict __endptr, int __base))
408{408{
409 return __wcstoll_internal (nptr, endptr, base, 0);409 return __wcstoll_internal (__nptr, __endptr, __base, 0);
410}410}
411411
412412
...@@ -420,10 +420,10 @@ extern unsigned long long int __wcstoull_internal (const __gwchar_t *...@@ -420,10 +420,10 @@ extern unsigned long long int __wcstoull_internal (const __gwchar_t *
420 __THROW __nonnull ((1)) __wur;420 __THROW __nonnull ((1)) __wur;
421/* Like `wcstoul' but convert to `uintmax_t'. */421/* Like `wcstoul' but convert to `uintmax_t'. */
422__extern_inline uintmax_t422__extern_inline uintmax_t
423__NTH (wcstoumax (const __gwchar_t *__restrict nptr,423__NTH (wcstoumax (const __gwchar_t *__restrict __nptr,
424 __gwchar_t **__restrict endptr, int base))424 __gwchar_t **__restrict __endptr, int __base))
425{425{
426 return __wcstoull_internal (nptr, endptr, base, 0);426 return __wcstoull_internal (__nptr, __endptr, __base, 0);
427}427}
428428
429# endif /* __WORDSIZE == 32 */429# endif /* __WORDSIZE == 32 */
lib/libc/include/generic-glibc/malloc.h+4-3
...@@ -75,11 +75,11 @@ extern void *pvalloc (size_t __size) __THROW __attribute_malloc__ __wur;...@@ -75,11 +75,11 @@ extern void *pvalloc (size_t __size) __THROW __attribute_malloc__ __wur;
7575
76/* Underlying allocation function; successive calls should return76/* Underlying allocation function; successive calls should return
77 contiguous pieces of memory. */77 contiguous pieces of memory. */
78extern void *(*__morecore) (ptrdiff_t __size);78extern void *(*__morecore) (ptrdiff_t __size) __MALLOC_DEPRECATED;
7979
80/* Default value of `__morecore'. */80/* Default value of `__morecore'. */
81extern void *__default_morecore (ptrdiff_t __size)81extern void *__default_morecore (ptrdiff_t __size)
82__THROW __attribute_malloc__;82__THROW __attribute_malloc__ __MALLOC_DEPRECATED;
8383
84/* SVID2/XPG mallinfo structure */84/* SVID2/XPG mallinfo structure */
8585
...@@ -156,7 +156,8 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment,...@@ -156,7 +156,8 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment,
156 size_t __size,156 size_t __size,
157 const void *)157 const void *)
158__MALLOC_DEPRECATED;158__MALLOC_DEPRECATED;
159extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void);159extern void (*__MALLOC_HOOK_VOLATILE __after_morecore_hook) (void)
160 __MALLOC_DEPRECATED;
160161
161162
162__END_DECLS163__END_DECLS
lib/libc/include/generic-glibc/math.h+68-20
...@@ -279,8 +279,17 @@ enum...@@ -279,8 +279,17 @@ enum
279#define __MATHDECLX(type, function,suffix, args, attrib) \279#define __MATHDECLX(type, function,suffix, args, attrib) \
280 __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \280 __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \
281 __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)281 __MATHDECL_1(type, __CONCAT(__,function),suffix, args) __attribute__ (attrib)
282#define __MATHDECL_1(type, function,suffix, args) \282#define __MATHDECL_1_IMPL(type, function, suffix, args) \
283 extern type __MATH_PRECNAME(function,suffix) args __THROW283 extern type __MATH_PRECNAME(function,suffix) args __THROW
284#define __MATHDECL_1(type, function, suffix, args) \
285 __MATHDECL_1_IMPL(type, function, suffix, args)
286/* Ignore the alias by default. The alias is only useful with
287 redirections. */
288#define __MATHDECL_ALIAS(type, function, suffix, args, alias) \
289 __MATHDECL_1(type, function, suffix, args)
290
291#define __MATHREDIR(type, function, suffix, args, to) \
292 extern type __REDIRECT_NTH (__MATH_PRECNAME (function, suffix), args, to)
284293
285#define _Mdouble_ double294#define _Mdouble_ double
286#define __MATH_PRECNAME(name,r) __CONCAT(name,r)295#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
...@@ -331,11 +340,37 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -331,11 +340,37 @@ extern long double __REDIRECT_NTH (nexttowardl,
331# endif340# endif
332341
333# undef __MATHDECL_1342# undef __MATHDECL_1
334# define __MATHDECL_2(type, function,suffix, args, alias) \
335 extern type __REDIRECT_NTH(__MATH_PRECNAME(function,suffix), \
336 args, alias)
337# define __MATHDECL_1(type, function,suffix, args) \343# define __MATHDECL_1(type, function,suffix, args) \
338 __MATHDECL_2(type, function,suffix, args, __CONCAT(function,suffix))344 __MATHREDIR(type, function, suffix, args, __CONCAT(function,suffix))
345
346# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
347# ifdef __REDIRECT_NTH
348# ifdef __USE_ISOC99
349extern float __REDIRECT_NTH (nexttowardf, (float __x, long double __y),
350 __nexttowardf_to_ieee128)
351 __attribute__ ((__const__));
352extern double __REDIRECT_NTH (nexttoward, (double __x, long double __y),
353 __nexttoward_to_ieee128)
354 __attribute__ ((__const__));
355
356#define __dremieee128 __remainderieee128
357#define __gammaieee128 __lgammaieee128
358
359# endif
360# endif
361
362# undef __MATHDECL_1
363# undef __MATHDECL_ALIAS
364
365# define __REDIRTO(function, suffix) \
366 __ ## function ## ieee128 ## suffix
367# define __REDIRTO_ALT(function, suffix) \
368 __ ## function ## f128 ## suffix
369
370# define __MATHDECL_1(type, function, suffix, args) \
371 __MATHREDIR (type, function, suffix, args, __REDIRTO (function, suffix))
372# define __MATHDECL_ALIAS(type, function, suffix, args, alias) \
373 __MATHREDIR (type, function, suffix, args, __REDIRTO_ALT (alias, suffix))
339# endif374# endif
340375
341/* Include the file of declarations again, this time using `long double'376/* Include the file of declarations again, this time using `long double'
...@@ -348,11 +383,23 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -348,11 +383,23 @@ extern long double __REDIRECT_NTH (nexttowardl,
348# define __MATH_DECLARE_LDOUBLE 1383# define __MATH_DECLARE_LDOUBLE 1
349# include <bits/mathcalls-helper-functions.h>384# include <bits/mathcalls-helper-functions.h>
350# include <bits/mathcalls.h>385# include <bits/mathcalls.h>
386
351# undef _Mdouble_387# undef _Mdouble_
352# undef __MATH_PRECNAME388# undef __MATH_PRECNAME
353# undef __MATH_DECLARING_DOUBLE389# undef __MATH_DECLARING_DOUBLE
354# undef __MATH_DECLARING_FLOATN390# undef __MATH_DECLARING_FLOATN
355391
392# if defined __LDBL_COMPAT \
393 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
394# undef __REDIRTO
395# undef __REDIRTO_ALT
396# undef __MATHDECL_1
397# undef __MATHDECL_ALIAS
398# define __MATHDECL_1(type, function, suffix, args) \
399 __MATHDECL_1_IMPL(type, function, suffix, args)
400# define __MATHDECL_ALIAS(type, function, suffix, args, alias) \
401 __MATHDECL_1(type, function, suffix, args)
402# endif
356# endif /* !(__NO_LONG_DOUBLE_MATH && _LIBC) || __LDBL_COMPAT */403# endif /* !(__NO_LONG_DOUBLE_MATH && _LIBC) || __LDBL_COMPAT */
357404
358#endif /* Use ISO C99. */405#endif /* Use ISO C99. */
...@@ -479,7 +526,9 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -479,7 +526,9 @@ extern long double __REDIRECT_NTH (nexttowardl,
479# undef __MATH_DECLARING_FLOATN526# undef __MATH_DECLARING_FLOATN
480#endif /* __HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !_LIBC). */527#endif /* __HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !_LIBC). */
481528
529#undef __MATHDECL_1_IMPL
482#undef __MATHDECL_1530#undef __MATHDECL_1
531#undef __MATHDECL_ALIAS
483#undef __MATHDECL532#undef __MATHDECL
484#undef __MATHCALL533#undef __MATHCALL
485534
...@@ -511,6 +560,11 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -511,6 +560,11 @@ extern long double __REDIRECT_NTH (nexttowardl,
511# ifdef __LDBL_COMPAT560# ifdef __LDBL_COMPAT
512# define __MATHCALL_REDIR_NAME(name) f ## name561# define __MATHCALL_REDIR_NAME(name) f ## name
513# undef __MATHCALL_NARROW562# undef __MATHCALL_NARROW
563# define __MATHCALL_NARROW(func, redir, nargs) \
564 __MATHCALL_NARROW_REDIR (func, redir, nargs)
565# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
566# define __MATHCALL_REDIR_NAME(name) __ ## f32 ## name ## ieee128
567# undef __MATHCALL_NARROW
514# define __MATHCALL_NARROW(func, redir, nargs) \568# define __MATHCALL_NARROW(func, redir, nargs) \
515 __MATHCALL_NARROW_REDIR (func, redir, nargs)569 __MATHCALL_NARROW_REDIR (func, redir, nargs)
516# endif570# endif
...@@ -518,7 +572,8 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -518,7 +572,8 @@ extern long double __REDIRECT_NTH (nexttowardl,
518# undef _Mret_572# undef _Mret_
519# undef _Marg_573# undef _Marg_
520# undef __MATHCALL_NAME574# undef __MATHCALL_NAME
521# ifdef __LDBL_COMPAT575# if defined __LDBL_COMPAT \
576 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
522# undef __MATHCALL_REDIR_NAME577# undef __MATHCALL_REDIR_NAME
523# undef __MATHCALL_NARROW578# undef __MATHCALL_NARROW
524# define __MATHCALL_NARROW(func, redir, nargs) \579# define __MATHCALL_NARROW(func, redir, nargs) \
...@@ -531,6 +586,11 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -531,6 +586,11 @@ extern long double __REDIRECT_NTH (nexttowardl,
531# ifdef __LDBL_COMPAT586# ifdef __LDBL_COMPAT
532# define __MATHCALL_REDIR_NAME(name) __nldbl_d ## name ## l587# define __MATHCALL_REDIR_NAME(name) __nldbl_d ## name ## l
533# undef __MATHCALL_NARROW588# undef __MATHCALL_NARROW
589# define __MATHCALL_NARROW(func, redir, nargs) \
590 __MATHCALL_NARROW_REDIR (func, redir, nargs)
591# elif __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
592# define __MATHCALL_REDIR_NAME(name) __ ## f64 ## name ## ieee128
593# undef __MATHCALL_NARROW
534# define __MATHCALL_NARROW(func, redir, nargs) \594# define __MATHCALL_NARROW(func, redir, nargs) \
535 __MATHCALL_NARROW_REDIR (func, redir, nargs)595 __MATHCALL_NARROW_REDIR (func, redir, nargs)
536# endif596# endif
...@@ -538,7 +598,8 @@ extern long double __REDIRECT_NTH (nexttowardl,...@@ -538,7 +598,8 @@ extern long double __REDIRECT_NTH (nexttowardl,
538# undef _Mret_598# undef _Mret_
539# undef _Marg_599# undef _Marg_
540# undef __MATHCALL_NAME600# undef __MATHCALL_NAME
541# ifdef __LDBL_COMPAT601# if defined __LDBL_COMPAT \
602 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
542# undef __MATHCALL_REDIR_NAME603# undef __MATHCALL_REDIR_NAME
543# undef __MATHCALL_NARROW604# undef __MATHCALL_NARROW
544# define __MATHCALL_NARROW(func, redir, nargs) \605# define __MATHCALL_NARROW(func, redir, nargs) \
...@@ -1196,13 +1257,6 @@ iszero (__T __val)...@@ -1196,13 +1257,6 @@ iszero (__T __val)
1196# error "M_* values needed for _Float128x"1257# error "M_* values needed for _Float128x"
1197#endif1258#endif
11981259
1199/* When compiling in strict ISO C compatible mode we must not use the
1200 inline functions since they, among other things, do not set the
1201 `errno' variable correctly. */
1202#if defined __STRICT_ANSI__ && !defined __NO_MATH_INLINES
1203# define __NO_MATH_INLINES 1
1204#endif
1205
1206#ifdef __USE_ISOC991260#ifdef __USE_ISOC99
1207# if __GNUC_PREREQ (3, 1)1261# if __GNUC_PREREQ (3, 1)
1208/* ISO C99 defines some macros to compare number while taking care for1262/* ISO C99 defines some macros to compare number while taking care for
...@@ -1240,12 +1294,6 @@ iszero (__T __val)...@@ -1240,12 +1294,6 @@ iszero (__T __val)
1240# endif1294# endif
1241#endif1295#endif
12421296
1243/* Get machine-dependent inline versions (if there are any). */
1244#ifdef __USE_EXTERN_INLINES
1245# include <bits/mathinline.h>
1246#endif
1247
1248
1249#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)1297#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
1250/* An expression whose type has the widest of the evaluation formats1298/* An expression whose type has the widest of the evaluation formats
1251 of X and Y (which are of floating-point types). */1299 of X and Y (which are of floating-point types). */
lib/libc/include/generic-glibc/monetary.h+2-1
...@@ -50,7 +50,8 @@ extern ssize_t strfmon_l (char *__restrict __s, size_t __maxsize,...@@ -50,7 +50,8 @@ extern ssize_t strfmon_l (char *__restrict __s, size_t __maxsize,
50 __THROW __attribute_format_strfmon__ (4, 5);50 __THROW __attribute_format_strfmon__ (4, 5);
51#endif51#endif
5252
53#ifdef __LDBL_COMPAT53#include <bits/floatn.h>
54#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
54# include <bits/monetary-ldbl.h>55# include <bits/monetary-ldbl.h>
55#endif56#endif
5657
lib/libc/include/generic-glibc/netinet/icmp6.h+4-4
...@@ -85,16 +85,16 @@ struct icmp6_hdr...@@ -85,16 +85,16 @@ struct icmp6_hdr
85#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */85#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */
8686
87#define ICMP6_FILTER_WILLPASS(type, filterp) \87#define ICMP6_FILTER_WILLPASS(type, filterp) \
88 ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)88 ((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
8989
90#define ICMP6_FILTER_WILLBLOCK(type, filterp) \90#define ICMP6_FILTER_WILLBLOCK(type, filterp) \
91 ((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)91 ((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
9292
93#define ICMP6_FILTER_SETPASS(type, filterp) \93#define ICMP6_FILTER_SETPASS(type, filterp) \
94 ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))94 ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
9595
96#define ICMP6_FILTER_SETBLOCK(type, filterp) \96#define ICMP6_FILTER_SETBLOCK(type, filterp) \
97 ((((filterp)->icmp6_filt[(type) >> 5]) |= (1 << ((type) & 31))))97 ((((filterp)->icmp6_filt[(type) >> 5]) |= (1U << ((type) & 31))))
9898
99#define ICMP6_FILTER_SETPASSALL(filterp) \99#define ICMP6_FILTER_SETPASSALL(filterp) \
100 memset (filterp, 0, sizeof (struct icmp6_filter));100 memset (filterp, 0, sizeof (struct icmp6_filter));
lib/libc/include/generic-glibc/netinet/in.h+4
...@@ -87,8 +87,12 @@ enum...@@ -87,8 +87,12 @@ enum
87#define IPPROTO_UDPLITE IPPROTO_UDPLITE87#define IPPROTO_UDPLITE IPPROTO_UDPLITE
88 IPPROTO_MPLS = 137, /* MPLS in IP. */88 IPPROTO_MPLS = 137, /* MPLS in IP. */
89#define IPPROTO_MPLS IPPROTO_MPLS89#define IPPROTO_MPLS IPPROTO_MPLS
90 IPPROTO_ETHERNET = 143, /* Ethernet-within-IPv6 Encapsulation. */
91#define IPPROTO_ETHERNET IPPROTO_ETHERNET
90 IPPROTO_RAW = 255, /* Raw IP packets. */92 IPPROTO_RAW = 255, /* Raw IP packets. */
91#define IPPROTO_RAW IPPROTO_RAW93#define IPPROTO_RAW IPPROTO_RAW
94 IPPROTO_MPTCP = 262, /* Multipath TCP connection. */
95#define IPPROTO_MPTCP IPPROTO_MPTCP
92 IPPROTO_MAX96 IPPROTO_MAX
93 };97 };
9498
lib/libc/include/generic-glibc/nss.h+201-2
...@@ -19,10 +19,12 @@...@@ -19,10 +19,12 @@
19 and for implementors of new services. */19 and for implementors of new services. */
2020
21#ifndef _NSS_H21#ifndef _NSS_H
22#define _NSS_H 122#define _NSS_H 1
2323
24#include <features.h>24#include <features.h>
25#include <stddef.h>
25#include <stdint.h>26#include <stdint.h>
27#include <sys/types.h>
2628
2729
28__BEGIN_DECLS30__BEGIN_DECLS
...@@ -56,7 +58,204 @@ struct gaih_addrtuple...@@ -56,7 +58,204 @@ struct gaih_addrtuple
56 Attention: Using this function repeatedly will slowly eat up the58 Attention: Using this function repeatedly will slowly eat up the
57 whole memory since previous selection data cannot be freed. */59 whole memory since previous selection data cannot be freed. */
58extern int __nss_configure_lookup (const char *__dbname,60extern int __nss_configure_lookup (const char *__dbname,
59 const char *__string) __THROW;61 const char *__string) __THROW;
62
63/* NSS-related types. */
64struct __netgrent;
65struct aliasent;
66struct ether_addr;
67struct etherent;
68struct group;
69struct hostent;
70struct netent;
71struct passwd;
72struct protoent;
73struct rpcent;
74struct servent;
75struct sgrp;
76struct spwd;
77struct traced_file;
78
79/* Types of functions exported from NSS service modules. */
80typedef enum nss_status nss_endaliasent (void);
81typedef enum nss_status nss_endetherent (void);
82typedef enum nss_status nss_endgrent (void);
83typedef enum nss_status nss_endhostent (void);
84typedef enum nss_status nss_endnetent (void);
85typedef enum nss_status nss_endnetgrent (struct __netgrent *);
86typedef enum nss_status nss_endprotoent (void);
87typedef enum nss_status nss_endpwent (void);
88typedef enum nss_status nss_endrpcent (void);
89typedef enum nss_status nss_endservent (void);
90typedef enum nss_status nss_endsgent (void);
91typedef enum nss_status nss_endspent (void);
92typedef enum nss_status nss_getaliasbyname_r (const char *, struct aliasent *,
93 char *, size_t, int *);
94typedef enum nss_status nss_getaliasent_r (struct aliasent *,
95 char *, size_t, int *);
96typedef enum nss_status nss_getcanonname_r (const char *, char *, size_t,
97 char **, int *, int *);
98typedef enum nss_status nss_getetherent_r (struct etherent *,
99 char *, size_t, int *);
100typedef enum nss_status nss_getgrent_r (struct group *, char *, size_t, int *);
101typedef enum nss_status nss_getgrgid_r (__gid_t, struct group *,
102 char *, size_t, int *);
103typedef enum nss_status nss_getgrnam_r (const char *, struct group *,
104 char *, size_t, int *);
105typedef enum nss_status nss_gethostbyaddr2_r (const void *, __socklen_t, int,
106 struct hostent *, char *, size_t,
107 int *, int *, int32_t *);
108typedef enum nss_status nss_gethostbyaddr_r (const void *, __socklen_t, int,
109 struct hostent *, char *, size_t,
110 int *, int *);
111typedef enum nss_status nss_gethostbyname2_r (const char *, int,
112 struct hostent *, char *, size_t,
113 int *, int *);
114typedef enum nss_status nss_gethostbyname3_r (const char *, int,
115 struct hostent *, char *, size_t,
116 int *, int *, int32_t *,
117 char **);
118typedef enum nss_status nss_gethostbyname4_r (const char *,
119 struct gaih_addrtuple **,
120 char *, size_t,
121 int *, int *, int32_t *);
122typedef enum nss_status nss_gethostbyname_r (const char *, struct hostent *,
123 char *, size_t, int *, int *);
124typedef enum nss_status nss_gethostent_r (struct hostent *, char *, size_t,
125 int *, int *);
126typedef enum nss_status nss_gethostton_r (const char *, struct etherent *,
127 char *, size_t, int *);
128typedef enum nss_status nss_getnetbyaddr_r (uint32_t, int, struct netent *,
129 char *, size_t, int *, int *);
130typedef enum nss_status nss_getnetbyname_r (const char *, struct netent *,
131 char *, size_t, int *, int *);
132typedef enum nss_status nss_getnetent_r (struct netent *,
133 char *, size_t, int *, int *);
134typedef enum nss_status nss_getnetgrent_r (struct __netgrent *,
135 char *, size_t, int *);
136typedef enum nss_status nss_getntohost_r (const struct ether_addr *,
137 struct etherent *, char *, size_t,
138 int *);
139typedef enum nss_status nss_getprotobyname_r (const char *, struct protoent *,
140 char *, size_t, int *);
141typedef enum nss_status nss_getprotobynumber_r (int, struct protoent *,
142 char *, size_t, int *);
143typedef enum nss_status nss_getprotoent_r (struct protoent *,
144 char *, size_t, int *);
145typedef enum nss_status nss_getpublickey (const char *, char *, int *);
146typedef enum nss_status nss_getpwent_r (struct passwd *,
147 char *, size_t, int *);
148typedef enum nss_status nss_getpwnam_r (const char *, struct passwd *,
149 char *, size_t, int *);
150typedef enum nss_status nss_getpwuid_r (__uid_t, struct passwd *,
151 char *, size_t, int *);
152typedef enum nss_status nss_getrpcbyname_r (const char *, struct rpcent *,
153 char *, size_t, int *);
154typedef enum nss_status nss_getrpcbynumber_r (int, struct rpcent *,
155 char *, size_t, int *);
156typedef enum nss_status nss_getrpcent_r (struct rpcent *,
157 char *, size_t, int *);
158typedef enum nss_status nss_getsecretkey (const char *, char *, char *, int *);
159typedef enum nss_status nss_getservbyname_r (const char *, const char *,
160 struct servent *, char *, size_t,
161 int *);
162typedef enum nss_status nss_getservbyport_r (int, const char *,
163 struct servent *, char *, size_t,
164 int *);
165typedef enum nss_status nss_getservent_r (struct servent *, char *, size_t,
166 int *);
167typedef enum nss_status nss_getsgent_r (struct sgrp *, char *, size_t, int *);
168typedef enum nss_status nss_getsgnam_r (const char *, struct sgrp *,
169 char *, size_t, int *);
170typedef enum nss_status nss_getspent_r (struct spwd *, char *, size_t, int *);
171typedef enum nss_status nss_getspnam_r (const char *, struct spwd *,
172 char *, size_t, int *);
173typedef void nss_init (void (*) (size_t, struct traced_file *));
174typedef enum nss_status nss_initgroups_dyn (const char *, __gid_t, long int *,
175 long int *, __gid_t **, long int,
176 int *);
177typedef enum nss_status nss_netname2user (char [], __uid_t *, __gid_t *,
178 int *, __gid_t *, int *);
179typedef enum nss_status nss_setaliasent (void);
180typedef enum nss_status nss_setetherent (int);
181typedef enum nss_status nss_setgrent (int);
182typedef enum nss_status nss_sethostent (int);
183typedef enum nss_status nss_setnetent (int);
184typedef enum nss_status nss_setnetgrent (const char *, struct __netgrent *);
185typedef enum nss_status nss_setprotoent (int);
186typedef enum nss_status nss_setpwent (int);
187typedef enum nss_status nss_setrpcent (int);
188typedef enum nss_status nss_setservent (int);
189typedef enum nss_status nss_setsgent (int);
190typedef enum nss_status nss_setspent (int);
191
192/* Declare all NSS functions for MODULE. */
193#define NSS_DECLARE_MODULE_FUNCTIONS(module) \
194 extern nss_endaliasent _nss_##module##_endaliasent; \
195 extern nss_endetherent _nss_##module##_endetherent; \
196 extern nss_endgrent _nss_##module##_endgrent; \
197 extern nss_endhostent _nss_##module##_endhostent; \
198 extern nss_endnetent _nss_##module##_endnetent; \
199 extern nss_endnetgrent _nss_##module##__endnetgrent; \
200 extern nss_endprotoent _nss_##module##_endprotoent; \
201 extern nss_endpwent _nss_##module##_endpwent; \
202 extern nss_endrpcent _nss_##module##_endrpcent; \
203 extern nss_endservent _nss_##module##_endservent; \
204 extern nss_endsgent _nss_##module##_endsgent; \
205 extern nss_endspent _nss_##module##_endspent; \
206 extern nss_getaliasbyname_r _nss_##module##_getaliasbyname_r; \
207 extern nss_getaliasent_r _nss_##module##_getaliasent_r; \
208 extern nss_getcanonname_r _nss_##module##_getcanonname_r; \
209 extern nss_getetherent_r _nss_##module##_getetherent_r; \
210 extern nss_getgrent_r _nss_##module##_getgrent_r; \
211 extern nss_getgrgid_r _nss_##module##_getgrgid_r; \
212 extern nss_getgrnam_r _nss_##module##_getgrnam_r; \
213 extern nss_gethostbyaddr2_r _nss_##module##_gethostbyaddr2_r; \
214 extern nss_gethostbyaddr_r _nss_##module##_gethostbyaddr_r; \
215 extern nss_gethostbyname2_r _nss_##module##_gethostbyname2_r; \
216 extern nss_gethostbyname3_r _nss_##module##_gethostbyname3_r; \
217 extern nss_gethostbyname4_r _nss_##module##_gethostbyname4_r; \
218 extern nss_gethostbyname_r _nss_##module##_gethostbyname_r; \
219 extern nss_gethostent_r _nss_##module##_gethostent_r; \
220 extern nss_gethostton_r _nss_##module##_gethostton_r; \
221 extern nss_getnetbyaddr_r _nss_##module##_getnetbyaddr_r; \
222 extern nss_getnetbyname_r _nss_##module##_getnetbyname_r; \
223 extern nss_getnetent_r _nss_##module##_getnetent_r; \
224 extern nss_getnetgrent_r _nss_##module##_getnetgrent_r; \
225 extern nss_getntohost_r _nss_##module##_getntohost_r; \
226 extern nss_getprotobyname_r _nss_##module##_getprotobyname_r; \
227 extern nss_getprotobynumber_r _nss_##module##_getprotobynumber_r; \
228 extern nss_getprotoent_r _nss_##module##_getprotoent_r; \
229 extern nss_getpublickey _nss_##module##_getpublickey; \
230 extern nss_getpwent_r _nss_##module##_getpwent_r; \
231 extern nss_getpwnam_r _nss_##module##_getpwnam_r; \
232 extern nss_getpwuid_r _nss_##module##_getpwuid_r; \
233 extern nss_getrpcbyname_r _nss_##module##_getrpcbyname_r; \
234 extern nss_getrpcbynumber_r _nss_##module##_getrpcbynumber_r; \
235 extern nss_getrpcent_r _nss_##module##_getrpcent_r; \
236 extern nss_getsecretkey _nss_##module##_getsecretkey; \
237 extern nss_getservbyname_r _nss_##module##_getservbyname_r; \
238 extern nss_getservbyport_r _nss_##module##_getservbyport_r; \
239 extern nss_getservent_r _nss_##module##_getservent_r; \
240 extern nss_getsgent_r _nss_##module##_getsgent_r; \
241 extern nss_getsgnam_r _nss_##module##_getsgnam_r; \
242 extern nss_getspent_r _nss_##module##_getspent_r; \
243 extern nss_getspnam_r _nss_##module##_getspnam_r; \
244 extern nss_init _nss_##module##_init; \
245 extern nss_initgroups_dyn _nss_##module##_initgroups_dyn; \
246 extern nss_netname2user _nss_##module##_netname2user; \
247 extern nss_setaliasent _nss_##module##_setaliasent; \
248 extern nss_setetherent _nss_##module##_setetherent; \
249 extern nss_setgrent _nss_##module##_setgrent; \
250 extern nss_sethostent _nss_##module##_sethostent; \
251 extern nss_setnetent _nss_##module##_setnetent; \
252 extern nss_setnetgrent _nss_##module##_setnetgrent; \
253 extern nss_setprotoent _nss_##module##_setprotoent; \
254 extern nss_setpwent _nss_##module##_setpwent; \
255 extern nss_setrpcent _nss_##module##_setrpcent; \
256 extern nss_setservent _nss_##module##_setservent; \
257 extern nss_setsgent _nss_##module##_setsgent; \
258 extern nss_setspent _nss_##module##_setspent; \
60259
61__END_DECLS260__END_DECLS
62261
lib/libc/include/generic-glibc/printf.h+2-1
...@@ -182,7 +182,8 @@ extern int printf_size_info (const struct printf_info *__restrict...@@ -182,7 +182,8 @@ extern int printf_size_info (const struct printf_info *__restrict
182 __info, size_t __n, int *__restrict __argtypes)182 __info, size_t __n, int *__restrict __argtypes)
183 __THROW;183 __THROW;
184184
185#ifdef __LDBL_COMPAT185#include <bits/floatn.h>
186#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
186# include <bits/printf-ldbl.h>187# include <bits/printf-ldbl.h>
187#endif188#endif
188189
lib/libc/include/generic-glibc/pthread.h+15
...@@ -27,6 +27,7 @@...@@ -27,6 +27,7 @@
27#include <bits/setjmp.h>27#include <bits/setjmp.h>
28#include <bits/wordsize.h>28#include <bits/wordsize.h>
29#include <bits/types/struct_timespec.h>29#include <bits/types/struct_timespec.h>
30#include <bits/types/__sigset_t.h>
3031
3132
32/* Detach state. */33/* Detach state. */
...@@ -385,6 +386,20 @@ extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,...@@ -385,6 +386,20 @@ extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
385extern int pthread_getattr_default_np (pthread_attr_t *__attr)386extern int pthread_getattr_default_np (pthread_attr_t *__attr)
386 __THROW __nonnull ((1));387 __THROW __nonnull ((1));
387388
389/* Store *SIGMASK as the signal mask for the new thread in *ATTR. */
390extern int pthread_attr_setsigmask_np (pthread_attr_t *__attr,
391 const __sigset_t *sigmask);
392
393/* Store the signal mask of *ATTR in *SIGMASK. If there is no signal
394 mask stored, return PTHREAD_ATTR_NOSIGMASK_NP. Return zero on
395 success. */
396extern int pthread_attr_getsigmask_np (const pthread_attr_t *__attr,
397 __sigset_t *sigmask);
398
399/* Special return value from pthread_attr_getsigmask_np if the signal
400 mask has not been set. */
401#define PTHREAD_ATTR_NO_SIGMASK_NP (-1)
402
388/* Set the default attributes to be used by pthread_create in this403/* Set the default attributes to be used by pthread_create in this
389 process. */404 process. */
390extern int pthread_setattr_default_np (const pthread_attr_t *__attr)405extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
lib/libc/include/generic-glibc/signal.h+17-14
...@@ -27,7 +27,7 @@...@@ -27,7 +27,7 @@
27__BEGIN_DECLS27__BEGIN_DECLS
2828
29#include <bits/types.h>29#include <bits/types.h>
30#include <bits/signum.h>30#include <bits/signum-generic.h>
3131
32#include <bits/types/sig_atomic_t.h>32#include <bits/types/sig_atomic_t.h>
3333
...@@ -148,7 +148,8 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);...@@ -148,7 +148,8 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
148148
149#ifdef __USE_XOPEN_EXTENDED149#ifdef __USE_XOPEN_EXTENDED
150# ifdef __GNUC__150# ifdef __GNUC__
151extern int sigpause (int __sig) __asm__ ("__xpg_sigpause");151extern int sigpause (int __sig) __asm__ ("__xpg_sigpause")
152 __attribute_deprecated_msg__ ("Use the sigsuspend function instead");
152# else153# else
153extern int __sigpause (int __sig_or_mask, int __is_sig);154extern int __sigpause (int __sig_or_mask, int __is_sig);
154/* Remove a signal from the signal mask and suspend the process. */155/* Remove a signal from the signal mask and suspend the process. */
...@@ -164,7 +165,9 @@ extern int __sigpause (int __sig_or_mask, int __is_sig);...@@ -164,7 +165,9 @@ extern int __sigpause (int __sig_or_mask, int __is_sig);
164 simply do not work in many situations. Use `sigprocmask' instead. */165 simply do not work in many situations. Use `sigprocmask' instead. */
165166
166/* Compute mask for signal SIG. */167/* Compute mask for signal SIG. */
167# define sigmask(sig) ((int)(1u << ((sig) - 1)))168# define sigmask(sig) \
169 __glibc_macro_warning ("sigmask is deprecated") \
170 ((int)(1u << ((sig) - 1)))
168171
169/* Block signals in MASK, returning the old mask. */172/* Block signals in MASK, returning the old mask. */
170extern int sigblock (int __mask) __THROW __attribute_deprecated__;173extern int sigblock (int __mask) __THROW __attribute_deprecated__;
...@@ -281,12 +284,6 @@ extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)...@@ -281,12 +284,6 @@ extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
281284
282#ifdef __USE_MISC285#ifdef __USE_MISC
283286
284/* Names of the signals. This variable exists only for compatibility.
285 Use `strsignal' instead (see <string.h>). */
286extern const char *const _sys_siglist[_NSIG];
287extern const char *const sys_siglist[_NSIG];
288
289
290/* Get machine-dependent `struct sigcontext' and signal subcodes. */287/* Get machine-dependent `struct sigcontext' and signal subcodes. */
291# include <bits/sigcontext.h>288# include <bits/sigcontext.h>
292289
...@@ -311,7 +308,8 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;...@@ -311,7 +308,8 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;
311/* If INTERRUPT is nonzero, make signal SIG interrupt system calls308/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
312 (causing them to fail with EINTR); if INTERRUPT is zero, make system309 (causing them to fail with EINTR); if INTERRUPT is zero, make system
313 calls be restarted after signal SIG. */310 calls be restarted after signal SIG. */
314extern int siginterrupt (int __sig, int __interrupt) __THROW;311extern int siginterrupt (int __sig, int __interrupt) __THROW
312 __attribute_deprecated_msg__ ("Use sigaction with SA_RESTART instead");
315313
316# include <bits/sigstack.h>314# include <bits/sigstack.h>
317# include <bits/ss_flags.h>315# include <bits/ss_flags.h>
...@@ -340,16 +338,21 @@ extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)...@@ -340,16 +338,21 @@ extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
340/* Simplified interface for signal management. */338/* Simplified interface for signal management. */
341339
342/* Add SIG to the calling process' signal mask. */340/* Add SIG to the calling process' signal mask. */
343extern int sighold (int __sig) __THROW;341extern int sighold (int __sig) __THROW
342 __attribute_deprecated_msg__ ("Use the sigprocmask function instead");
344343
345/* Remove SIG from the calling process' signal mask. */344/* Remove SIG from the calling process' signal mask. */
346extern int sigrelse (int __sig) __THROW;345extern int sigrelse (int __sig) __THROW
346 __attribute_deprecated_msg__ ("Use the sigprocmask function instead");
347347
348/* Set the disposition of SIG to SIG_IGN. */348/* Set the disposition of SIG to SIG_IGN. */
349extern int sigignore (int __sig) __THROW;349extern int sigignore (int __sig) __THROW
350 __attribute_deprecated_msg__ ("Use the signal function instead");
350351
351/* Set the disposition of SIG. */352/* Set the disposition of SIG. */
352extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW;353extern __sighandler_t sigset (int __sig, __sighandler_t __disp) __THROW
354 __attribute_deprecated_msg__
355 ("Use the signal and sigprocmask functions instead");
353#endif356#endif
354357
355#if defined __USE_POSIX199506 || defined __USE_UNIX98358#if defined __USE_POSIX199506 || defined __USE_UNIX98
lib/libc/include/generic-glibc/stdio.h+14-13
...@@ -400,9 +400,12 @@ extern int sscanf (const char *__restrict __s,...@@ -400,9 +400,12 @@ extern int sscanf (const char *__restrict __s,
400 const char *__restrict __format, ...) __THROW;400 const char *__restrict __format, ...) __THROW;
401401
402/* For historical reasons, the C99-compliant versions of the scanf402/* For historical reasons, the C99-compliant versions of the scanf
403 functions are at alternative names. When __LDBL_COMPAT is in403 functions are at alternative names. When __LDBL_COMPAT or
404 effect, this is handled in bits/stdio-ldbl.h. */404 __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
405#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT405 bits/stdio-ldbl.h. */
406#include <bits/floatn.h>
407#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT \
408 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
406# ifdef __REDIRECT409# ifdef __REDIRECT
407extern int __REDIRECT (fscanf, (FILE *__restrict __stream,410extern int __REDIRECT (fscanf, (FILE *__restrict __stream,
408 const char *__restrict __format, ...),411 const char *__restrict __format, ...),
...@@ -447,7 +450,8 @@ extern int vsscanf (const char *__restrict __s,...@@ -447,7 +450,8 @@ extern int vsscanf (const char *__restrict __s,
447450
448/* Same redirection as above for the v*scanf family. */451/* Same redirection as above for the v*scanf family. */
449# if !__GLIBC_USE (DEPRECATED_SCANF)452# if !__GLIBC_USE (DEPRECATED_SCANF)
450# if defined __REDIRECT && !defined __LDBL_COMPAT453# if defined __REDIRECT && !defined __LDBL_COMPAT \
454 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
451extern int __REDIRECT (vfscanf,455extern int __REDIRECT (vfscanf,
452 (FILE *__restrict __s,456 (FILE *__restrict __s,
453 const char *__restrict __format, __gnuc_va_list __arg),457 const char *__restrict __format, __gnuc_va_list __arg),
...@@ -562,7 +566,7 @@ extern int putw (int __w, FILE *__stream);...@@ -562,7 +566,7 @@ extern int putw (int __w, FILE *__stream);
562 This function is a possible cancellation point and therefore not566 This function is a possible cancellation point and therefore not
563 marked with __THROW. */567 marked with __THROW. */
564extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)568extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
565 __wur;569 __wur __attr_access ((__write_only__, 1, 2));
566570
567#if __GLIBC_USE (DEPRECATED_GETS)571#if __GLIBC_USE (DEPRECATED_GETS)
568/* Get a newline-terminated string from stdin, removing the newline.572/* Get a newline-terminated string from stdin, removing the newline.
...@@ -585,7 +589,8 @@ extern char *gets (char *__s) __wur __attribute_deprecated__;...@@ -585,7 +589,8 @@ extern char *gets (char *__s) __wur __attribute_deprecated__;
585 or due to the implementation it is a cancellation point and589 or due to the implementation it is a cancellation point and
586 therefore not marked with __THROW. */590 therefore not marked with __THROW. */
587extern char *fgets_unlocked (char *__restrict __s, int __n,591extern char *fgets_unlocked (char *__restrict __s, int __n,
588 FILE *__restrict __stream) __wur;592 FILE *__restrict __stream) __wur
593 __attr_access ((__write_only__, 1, 2));
589#endif594#endif
590595
591596
...@@ -774,12 +779,6 @@ extern int ferror_unlocked (FILE *__stream) __THROW __wur;...@@ -774,12 +779,6 @@ extern int ferror_unlocked (FILE *__stream) __THROW __wur;
774 marked with __THROW. */779 marked with __THROW. */
775extern void perror (const char *__s);780extern void perror (const char *__s);
776781
777/* Provide the declarations for `sys_errlist' and `sys_nerr' if they
778 are available on this system. Even if available, these variables
779 should not be used directly. The `strerror' function provides
780 all the necessary functionality. */
781#include <bits/sys_errlist.h>
782
783782
784#ifdef __USE_POSIX783#ifdef __USE_POSIX
785/* Return the system file descriptor for STREAM. */784/* Return the system file descriptor for STREAM. */
...@@ -866,7 +865,9 @@ extern int __overflow (FILE *, int);...@@ -866,7 +865,9 @@ extern int __overflow (FILE *, int);
866#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function865#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
867# include <bits/stdio2.h>866# include <bits/stdio2.h>
868#endif867#endif
869#ifdef __LDBL_COMPAT868
869#include <bits/floatn.h>
870#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
870# include <bits/stdio-ldbl.h>871# include <bits/stdio-ldbl.h>
871#endif872#endif
872873
lib/libc/include/generic-glibc/stdlib.h+9-6
...@@ -397,7 +397,7 @@ extern long int a64l (const char *__s)...@@ -397,7 +397,7 @@ extern long int a64l (const char *__s)
397 `initstate' and `setstate' functions are those from BSD Unices.397 `initstate' and `setstate' functions are those from BSD Unices.
398 The `rand' and `srand' functions are required by the ANSI standard.398 The `rand' and `srand' functions are required by the ANSI standard.
399 We provide both interfaces to the same random number generator. */399 We provide both interfaces to the same random number generator. */
400/* Return a random long integer between 0 and RAND_MAX inclusive. */400/* Return a random long integer between 0 and 2^31-1 inclusive. */
401extern long int random (void) __THROW;401extern long int random (void) __THROW;
402402
403/* Seed the random number generator with the given number. */403/* Seed the random number generator with the given number. */
...@@ -931,12 +931,13 @@ extern int wctomb (char *__s, wchar_t __wchar) __THROW;...@@ -931,12 +931,13 @@ extern int wctomb (char *__s, wchar_t __wchar) __THROW;
931931
932/* Convert a multibyte string to a wide char string. */932/* Convert a multibyte string to a wide char string. */
933extern size_t mbstowcs (wchar_t *__restrict __pwcs,933extern size_t mbstowcs (wchar_t *__restrict __pwcs,
934 const char *__restrict __s, size_t __n) __THROW;934 const char *__restrict __s, size_t __n) __THROW
935 __attr_access ((__read_only__, 2));
935/* Convert a wide char string to multibyte string. */936/* Convert a wide char string to multibyte string. */
936extern size_t wcstombs (char *__restrict __s,937extern size_t wcstombs (char *__restrict __s,
937 const wchar_t *__restrict __pwcs, size_t __n)938 const wchar_t *__restrict __pwcs, size_t __n)
938 __THROW;939 __THROW
939940 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
940941
941#ifdef __USE_MISC942#ifdef __USE_MISC
942/* Determine whether the string value of RESPONSE matches the affirmation943/* Determine whether the string value of RESPONSE matches the affirmation
...@@ -990,7 +991,7 @@ extern char *ptsname (int __fd) __THROW __wur;...@@ -990,7 +991,7 @@ extern char *ptsname (int __fd) __THROW __wur;
990 terminal associated with the master FD is open on in BUF.991 terminal associated with the master FD is open on in BUF.
991 Return 0 on success, otherwise an error number. */992 Return 0 on success, otherwise an error number. */
992extern int ptsname_r (int __fd, char *__buf, size_t __buflen)993extern int ptsname_r (int __fd, char *__buf, size_t __buflen)
993 __THROW __nonnull ((2));994 __THROW __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
994995
995/* Open a master pseudo terminal and return its file descriptor. */996/* Open a master pseudo terminal and return its file descriptor. */
996extern int getpt (void);997extern int getpt (void);
...@@ -1016,7 +1017,9 @@ extern int ttyslot (void) __THROW;...@@ -1016,7 +1017,9 @@ extern int ttyslot (void) __THROW;
1016#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function1017#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
1017# include <bits/stdlib.h>1018# include <bits/stdlib.h>
1018#endif1019#endif
1019#ifdef __LDBL_COMPAT1020
1021#include <bits/floatn.h>
1022#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
1020# include <bits/stdlib-ldbl.h>1023# include <bits/stdlib-ldbl.h>
1021#endif1024#endif
10221025
lib/libc/include/generic-glibc/string.h+36-12
...@@ -53,7 +53,7 @@ extern void *memmove (void *__dest, const void *__src, size_t __n)...@@ -53,7 +53,7 @@ extern void *memmove (void *__dest, const void *__src, size_t __n)
53#if defined __USE_MISC || defined __USE_XOPEN || __GLIBC_USE (ISOC2X)53#if defined __USE_MISC || defined __USE_XOPEN || __GLIBC_USE (ISOC2X)
54extern void *memccpy (void *__restrict __dest, const void *__restrict __src,54extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
55 int __c, size_t __n)55 int __c, size_t __n)
56 __THROW __nonnull ((1, 2));56 __THROW __nonnull ((1, 2)) __attr_access ((__write_only__, 1, 4));
57#endif /* Misc || X/Open. */57#endif /* Misc || X/Open. */
5858
5959
...@@ -108,12 +108,15 @@ extern void *rawmemchr (const void *__s, int __c)...@@ -108,12 +108,15 @@ extern void *rawmemchr (const void *__s, int __c)
108/* Search N bytes of S for the final occurrence of C. */108/* Search N bytes of S for the final occurrence of C. */
109# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO109# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
110extern "C++" void *memrchr (void *__s, int __c, size_t __n)110extern "C++" void *memrchr (void *__s, int __c, size_t __n)
111 __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));111 __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1))
112 __attr_access ((__read_only__, 1, 3));
112extern "C++" const void *memrchr (const void *__s, int __c, size_t __n)113extern "C++" const void *memrchr (const void *__s, int __c, size_t __n)
113 __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1));114 __THROW __asm ("memrchr") __attribute_pure__ __nonnull ((1))
115 __attr_access ((__read_only__, 1, 3));
114# else116# else
115extern void *memrchr (const void *__s, int __c, size_t __n)117extern void *memrchr (const void *__s, int __c, size_t __n)
116 __THROW __attribute_pure__ __nonnull ((1));118 __THROW __attribute_pure__ __nonnull ((1))
119 __attr_access ((__read_only__, 1, 3));
117# endif120# endif
118#endif121#endif
119122
...@@ -146,7 +149,7 @@ extern int strcoll (const char *__s1, const char *__s2)...@@ -146,7 +149,7 @@ extern int strcoll (const char *__s1, const char *__s2)
146/* Put a transformation of SRC into no more than N bytes of DEST. */149/* Put a transformation of SRC into no more than N bytes of DEST. */
147extern size_t strxfrm (char *__restrict __dest,150extern size_t strxfrm (char *__restrict __dest,
148 const char *__restrict __src, size_t __n)151 const char *__restrict __src, size_t __n)
149 __THROW __nonnull ((2));152 __THROW __nonnull ((2)) __attr_access ((__write_only__, 1, 3));
150153
151#ifdef __USE_XOPEN2K8154#ifdef __USE_XOPEN2K8
152/* POSIX.1-2008 extended locale interface (see locale.h). */155/* POSIX.1-2008 extended locale interface (see locale.h). */
...@@ -158,7 +161,8 @@ extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)...@@ -158,7 +161,8 @@ extern int strcoll_l (const char *__s1, const char *__s2, locale_t __l)
158/* Put a transformation of SRC into no more than N bytes of DEST,161/* Put a transformation of SRC into no more than N bytes of DEST,
159 using sorting rules from L. */162 using sorting rules from L. */
160extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,163extern size_t strxfrm_l (char *__dest, const char *__src, size_t __n,
161 locale_t __l) __THROW __nonnull ((2, 4));164 locale_t __l) __THROW __nonnull ((2, 4))
165 __attr_access ((__write_only__, 1, 3));
162#endif166#endif
163167
164#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 \168#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 \
...@@ -368,7 +372,9 @@ extern char *strcasestr (const char *__haystack, const char *__needle)...@@ -368,7 +372,9 @@ extern char *strcasestr (const char *__haystack, const char *__needle)
368 HAYSTACK is HAYSTACKLEN bytes long. */372 HAYSTACK is HAYSTACKLEN bytes long. */
369extern void *memmem (const void *__haystack, size_t __haystacklen,373extern void *memmem (const void *__haystack, size_t __haystacklen,
370 const void *__needle, size_t __needlelen)374 const void *__needle, size_t __needlelen)
371 __THROW __attribute_pure__ __nonnull ((1, 3));375 __THROW __attribute_pure__ __nonnull ((1, 3))
376 __attr_access ((__read_only__, 1, 2))
377 __attr_access ((__read_only__, 3, 4));
372378
373/* Copy N bytes of SRC to DEST, return pointer to bytes after the379/* Copy N bytes of SRC to DEST, return pointer to bytes after the
374 last written byte. */380 last written byte. */
...@@ -409,17 +415,25 @@ extern char *strerror (int __errnum) __THROW;...@@ -409,17 +415,25 @@ extern char *strerror (int __errnum) __THROW;
409# ifdef __REDIRECT_NTH415# ifdef __REDIRECT_NTH
410extern int __REDIRECT_NTH (strerror_r,416extern int __REDIRECT_NTH (strerror_r,
411 (int __errnum, char *__buf, size_t __buflen),417 (int __errnum, char *__buf, size_t __buflen),
412 __xpg_strerror_r) __nonnull ((2));418 __xpg_strerror_r) __nonnull ((2))
419 __attr_access ((__write_only__, 2, 3));
413# else420# else
414extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen)421extern int __xpg_strerror_r (int __errnum, char *__buf, size_t __buflen)
415 __THROW __nonnull ((2));422 __THROW __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
416# define strerror_r __xpg_strerror_r423# define strerror_r __xpg_strerror_r
417# endif424# endif
418# else425# else
419/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be426/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be
420 used. */427 used. */
421extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)428extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
422 __THROW __nonnull ((2)) __wur;429 __THROW __nonnull ((2)) __wur __attr_access ((__write_only__, 2, 3));
430# endif
431
432# ifdef __USE_GNU
433/* Return a string describing the meaning of tthe error in ERR. */
434extern const char *strerrordesc_np (int __err) __THROW;
435/* Return a string with the error name in ERR. */
436extern const char *strerrorname_np (int __err) __THROW;
423# endif437# endif
424#endif438#endif
425439
...@@ -433,7 +447,8 @@ extern char *strerror_l (int __errnum, locale_t __l) __THROW;...@@ -433,7 +447,8 @@ extern char *strerror_l (int __errnum, locale_t __l) __THROW;
433447
434/* Set N bytes of S to 0. The compiler will not delete a call to this448/* Set N bytes of S to 0. The compiler will not delete a call to this
435 function, even if S is dead after the call. */449 function, even if S is dead after the call. */
436extern void explicit_bzero (void *__s, size_t __n) __THROW __nonnull ((1));450extern void explicit_bzero (void *__s, size_t __n) __THROW __nonnull ((1))
451 __attr_access ((__write_only__, 1, 2));
437452
438/* Return the next DELIM-delimited token from *STRINGP,453/* Return the next DELIM-delimited token from *STRINGP,
439 terminating it with a '\0', and update *STRINGP to point past it. */454 terminating it with a '\0', and update *STRINGP to point past it. */
...@@ -446,6 +461,14 @@ extern char *strsep (char **__restrict __stringp,...@@ -446,6 +461,14 @@ extern char *strsep (char **__restrict __stringp,
446/* Return a string describing the meaning of the signal number in SIG. */461/* Return a string describing the meaning of the signal number in SIG. */
447extern char *strsignal (int __sig) __THROW;462extern char *strsignal (int __sig) __THROW;
448463
464# ifdef __USE_GNU
465/* Return an abbreviation string for the signal number SIG. */
466extern const char *sigabbrev_np (int __sig) __THROW;
467/* Return a string describing the meaning of the signal number in SIG,
468 the result is not translated. */
469extern const char *sigdescr_np (int __sig) __THROW;
470# endif
471
449/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */472/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
450extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)473extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
451 __THROW __nonnull ((1, 2));474 __THROW __nonnull ((1, 2));
...@@ -471,7 +494,8 @@ extern int strverscmp (const char *__s1, const char *__s2)...@@ -471,7 +494,8 @@ extern int strverscmp (const char *__s1, const char *__s2)
471extern char *strfry (char *__string) __THROW __nonnull ((1));494extern char *strfry (char *__string) __THROW __nonnull ((1));
472495
473/* Frobnicate N bytes of S. */496/* Frobnicate N bytes of S. */
474extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1));497extern void *memfrob (void *__s, size_t __n) __THROW __nonnull ((1))
498 __attr_access ((__write_only__, 1, 2));
475499
476# ifndef basename500# ifndef basename
477/* Return the file name within directory of FILENAME. We don't501/* Return the file name within directory of FILENAME. We don't
lib/libc/include/generic-glibc/sys/cdefs.h+47-2
...@@ -452,7 +452,37 @@...@@ -452,7 +452,37 @@
452#include <bits/wordsize.h>452#include <bits/wordsize.h>
453#include <bits/long-double.h>453#include <bits/long-double.h>
454454
455#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH455#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
456# ifdef __REDIRECT
457
458/* Alias name defined automatically. */
459# define __LDBL_REDIR(name, proto) ... unused__ldbl_redir
460# define __LDBL_REDIR_DECL(name) \
461 extern __typeof (name) name __asm (__ASMNAME ("__" #name "ieee128"));
462
463/* Alias name defined automatically, with leading underscores. */
464# define __LDBL_REDIR2_DECL(name) \
465 extern __typeof (__##name) __##name \
466 __asm (__ASMNAME ("__" #name "ieee128"));
467
468/* Alias name defined manually. */
469# define __LDBL_REDIR1(name, proto, alias) ... unused__ldbl_redir1
470# define __LDBL_REDIR1_DECL(name, alias) \
471 extern __typeof (name) name __asm (__ASMNAME (#alias));
472
473# define __LDBL_REDIR1_NTH(name, proto, alias) \
474 __REDIRECT_NTH (name, proto, alias)
475# define __REDIRECT_NTH_LDBL(name, proto, alias) \
476 __LDBL_REDIR1_NTH (name, proto, __##alias##ieee128)
477
478/* Unused. */
479# define __REDIRECT_LDBL(name, proto, alias) ... unused__redirect_ldbl
480# define __LDBL_REDIR_NTH(name, proto) ... unused__ldbl_redir_nth
481
482# else
483_Static_assert (0, "IEEE 128-bits long double requires redirection on this platform");
484# endif
485#elif defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
456# define __LDBL_COMPAT 1486# define __LDBL_COMPAT 1
457# ifdef __REDIRECT487# ifdef __REDIRECT
458# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)488# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
...@@ -461,6 +491,8 @@...@@ -461,6 +491,8 @@
461# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)491# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
462# define __LDBL_REDIR_NTH(name, proto) \492# define __LDBL_REDIR_NTH(name, proto) \
463 __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)493 __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
494# define __LDBL_REDIR2_DECL(name) \
495 extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name));
464# define __LDBL_REDIR1_DECL(name, alias) \496# define __LDBL_REDIR1_DECL(name, alias) \
465 extern __typeof (name) name __asm (__ASMNAME (#alias));497 extern __typeof (name) name __asm (__ASMNAME (#alias));
466# define __LDBL_REDIR_DECL(name) \498# define __LDBL_REDIR_DECL(name) \
...@@ -471,11 +503,13 @@...@@ -471,11 +503,13 @@
471 __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)503 __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
472# endif504# endif
473#endif505#endif
474#if !defined __LDBL_COMPAT || !defined __REDIRECT506#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \
507 || !defined __REDIRECT
475# define __LDBL_REDIR1(name, proto, alias) name proto508# define __LDBL_REDIR1(name, proto, alias) name proto
476# define __LDBL_REDIR(name, proto) name proto509# define __LDBL_REDIR(name, proto) name proto
477# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW510# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
478# define __LDBL_REDIR_NTH(name, proto) name proto __THROW511# define __LDBL_REDIR_NTH(name, proto) name proto __THROW
512# define __LDBL_REDIR2_DECL(name)
479# define __LDBL_REDIR_DECL(name)513# define __LDBL_REDIR_DECL(name)
480# ifdef __REDIRECT514# ifdef __REDIRECT
481# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)515# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
...@@ -514,4 +548,15 @@...@@ -514,4 +548,15 @@
514# define __HAVE_GENERIC_SELECTION 0548# define __HAVE_GENERIC_SELECTION 0
515#endif549#endif
516550
551#if __GNUC_PREREQ (10, 0)
552/* Designates a 1-based positional argument ref-index of pointer type
553 that can be used to access size-index elements of the pointed-to
554 array according to access mode, or at least one element when
555 size-index is not provided:
556 access (access-mode, <ref-index> [, <size-index>]) */
557#define __attr_access(x) __attribute__ ((__access__ x))
558#else
559# define __attr_access(x)
560#endif
561
517#endif /* sys/cdefs.h */562#endif /* sys/cdefs.h */
\ No newline at end of file
lib/libc/include/generic-glibc/sys/random.h+1
...@@ -25,6 +25,7 @@...@@ -25,6 +25,7 @@
25/* Flags for use with getrandom. */25/* Flags for use with getrandom. */
26#define GRND_NONBLOCK 0x0126#define GRND_NONBLOCK 0x01
27#define GRND_RANDOM 0x0227#define GRND_RANDOM 0x02
28#define GRND_INSECURE 0x04
2829
29__BEGIN_DECLS30__BEGIN_DECLS
3031
lib/libc/include/generic-glibc/sys/single_threaded.h created+33
...@@ -0,0 +1,33 @@
1/* Support for single-thread optimizations.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SINGLE_THREADED_H
20#define _SYS_SINGLE_THREADED_H
21
22#include <features.h>
23
24__BEGIN_DECLS
25
26/* If this variable is non-zero, then the current thread is the only
27 thread in the process image. If it is zero, the process might be
28 multi-threaded. */
29extern char __libc_single_threaded;
30
31__END_DECLS
32
33#endif /* _SYS_SINGLE_THREADED_H */
\ No newline at end of file
lib/libc/include/generic-glibc/sys/sysctl.h deleted-76
...@@ -1,76 +0,0 @@
1/* Copyright (C) 1996-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_SYSCTL_H
19#define _SYS_SYSCTL_H 1
20
21#warning "The <sys/sysctl.h> header is deprecated and will be removed."
22
23#include <features.h>
24#define __need_size_t
25#include <stddef.h>
26/* Prevent more kernel headers than necessary to be included. */
27#ifndef _LINUX_KERNEL_H
28# define _LINUX_KERNEL_H 1
29# define __undef_LINUX_KERNEL_H
30#endif
31#ifndef _LINUX_TYPES_H
32# define _LINUX_TYPES_H 1
33# define __undef_LINUX_TYPES_H
34#endif
35#ifndef _LINUX_LIST_H
36# define _LINUX_LIST_H 1
37# define __undef_LINUX_LIST_H
38#endif
39#ifndef __LINUX_COMPILER_H
40# define __LINUX_COMPILER_H 1
41# define __user
42# define __undef__LINUX_COMPILER_H
43#endif
44
45#include <linux/sysctl.h>
46
47#ifdef __undef_LINUX_KERNEL_H
48# undef _LINUX_KERNEL_H
49# undef __undef_LINUX_KERNEL_H
50#endif
51#ifdef __undef_LINUX_TYPES_H
52# undef _LINUX_TYPES_H
53# undef __undef_LINUX_TYPES_H
54#endif
55#ifdef __undef_LINUX_LIST_H
56# undef _LINUX_LIST_H
57# undef __undef_LINUX_LIST_H
58#endif
59#ifdef __undef__LINUX_COMPILER_H
60# undef __LINUX_COMPILER_H
61# undef __user
62# undef __undef__LINUX_COMPILER_H
63#endif
64
65#include <bits/sysctl.h>
66
67__BEGIN_DECLS
68
69/* Read or write system parameters. */
70extern int sysctl (int *__name, int __nlen, void *__oldval,
71 size_t *__oldlenp, void *__newval, size_t __newlen) __THROW
72 __attribute_deprecated__;
73
74__END_DECLS
75
76#endif /* _SYS_SYSCTL_H */
\ No newline at end of file
lib/libc/include/generic-glibc/sys/syslog.h+3-1
...@@ -206,7 +206,9 @@ extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)...@@ -206,7 +206,9 @@ extern void vsyslog (int __pri, const char *__fmt, __gnuc_va_list __ap)
206#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function206#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
207# include <bits/syslog.h>207# include <bits/syslog.h>
208#endif208#endif
209#ifdef __LDBL_COMPAT209
210#include <bits/floatn.h>
211#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
210# include <bits/syslog-ldbl.h>212# include <bits/syslog-ldbl.h>
211#endif213#endif
212214
lib/libc/include/generic-glibc/threads.h+5-8
...@@ -24,7 +24,7 @@...@@ -24,7 +24,7 @@
2424
25__BEGIN_DECLS25__BEGIN_DECLS
2626
27#include <bits/pthreadtypes-arch.h>27#include <bits/thread-shared-types.h>
28#include <bits/types/struct_timespec.h>28#include <bits/types/struct_timespec.h>
2929
30#ifndef __cplusplus30#ifndef __cplusplus
...@@ -32,10 +32,10 @@ __BEGIN_DECLS...@@ -32,10 +32,10 @@ __BEGIN_DECLS
32#endif32#endif
3333
34#define TSS_DTOR_ITERATIONS 434#define TSS_DTOR_ITERATIONS 4
35typedef unsigned int tss_t;35typedef __tss_t tss_t;
36typedef void (*tss_dtor_t) (void*);36typedef void (*tss_dtor_t) (void*);
3737
38typedef unsigned long int thrd_t;38typedef __thrd_t thrd_t;
39typedef int (*thrd_start_t) (void*);39typedef int (*thrd_start_t) (void*);
4040
41/* Exit and error codes. */41/* Exit and error codes. */
...@@ -56,11 +56,8 @@ enum...@@ -56,11 +56,8 @@ enum
56 mtx_timed = 256 mtx_timed = 2
57};57};
5858
59typedef struct59typedef __once_flag once_flag;
60{60#define ONCE_FLAG_INIT __ONCE_FLAG_INIT
61 int __data __ONCE_ALIGNMENT;
62} once_flag;
63#define ONCE_FLAG_INIT { 0 }
6461
65typedef union62typedef union
66{63{
lib/libc/include/generic-glibc/unistd.h+41-24
...@@ -357,13 +357,15 @@ extern int close (int __fd);...@@ -357,13 +357,15 @@ extern int close (int __fd);
357357
358 This function is a cancellation point and therefore not marked with358 This function is a cancellation point and therefore not marked with
359 __THROW. */359 __THROW. */
360extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur;360extern ssize_t read (int __fd, void *__buf, size_t __nbytes) __wur
361 __attr_access ((__write_only__, 2, 3));
361362
362/* Write N bytes of BUF to FD. Return the number written, or -1.363/* Write N bytes of BUF to FD. Return the number written, or -1.
363364
364 This function is a cancellation point and therefore not marked with365 This function is a cancellation point and therefore not marked with
365 __THROW. */366 __THROW. */
366extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;367extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur
368 __attr_access ((__read_only__, 2, 3));
367369
368#if defined __USE_UNIX98 || defined __USE_XOPEN2K8370#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
369# ifndef __USE_FILE_OFFSET64371# ifndef __USE_FILE_OFFSET64
...@@ -374,7 +376,8 @@ extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;...@@ -374,7 +376,8 @@ extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
374 This function is a cancellation point and therefore not marked with376 This function is a cancellation point and therefore not marked with
375 __THROW. */377 __THROW. */
376extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,378extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
377 __off_t __offset) __wur;379 __off_t __offset) __wur
380 __attr_access ((__write_only__, 2, 3));
378381
379/* Write N bytes of BUF to FD at the given position OFFSET without382/* Write N bytes of BUF to FD at the given position OFFSET without
380 changing the file pointer. Return the number written, or -1.383 changing the file pointer. Return the number written, or -1.
...@@ -382,15 +385,19 @@ extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,...@@ -382,15 +385,19 @@ extern ssize_t pread (int __fd, void *__buf, size_t __nbytes,
382 This function is a cancellation point and therefore not marked with385 This function is a cancellation point and therefore not marked with
383 __THROW. */386 __THROW. */
384extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,387extern ssize_t pwrite (int __fd, const void *__buf, size_t __n,
385 __off_t __offset) __wur;388 __off_t __offset) __wur
389 __attr_access ((__read_only__, 2, 3));
390
386# else391# else
387# ifdef __REDIRECT392# ifdef __REDIRECT
388extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,393extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
389 __off64_t __offset),394 __off64_t __offset),
390 pread64) __wur;395 pread64) __wur
396 __attr_access ((__write_only__, 2, 3));
391extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,397extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
392 size_t __nbytes, __off64_t __offset),398 size_t __nbytes, __off64_t __offset),
393 pwrite64) __wur;399 pwrite64) __wur
400 __attr_access ((__read_only__, 2, 3));
394# else401# else
395# define pread pread64402# define pread pread64
396# define pwrite pwrite64403# define pwrite pwrite64
...@@ -402,11 +409,13 @@ extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,...@@ -402,11 +409,13 @@ extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
402 changing the file pointer. Return the number read, -1 for errors409 changing the file pointer. Return the number read, -1 for errors
403 or 0 for EOF. */410 or 0 for EOF. */
404extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,411extern ssize_t pread64 (int __fd, void *__buf, size_t __nbytes,
405 __off64_t __offset) __wur;412 __off64_t __offset) __wur
413 __attr_access ((__write_only__, 2, 3));
406/* Write N bytes of BUF to FD at the given position OFFSET without414/* Write N bytes of BUF to FD at the given position OFFSET without
407 changing the file pointer. Return the number written, or -1. */415 changing the file pointer. Return the number written, or -1. */
408extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,416extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n,
409 __off64_t __offset) __wur;417 __off64_t __offset) __wur
418 __attr_access ((__read_only__, 2, 3));
410# endif419# endif
411#endif420#endif
412421
...@@ -508,7 +517,8 @@ extern int fchdir (int __fd) __THROW __wur;...@@ -508,7 +517,8 @@ extern int fchdir (int __fd) __THROW __wur;
508 an array is allocated with `malloc'; the array is SIZE517 an array is allocated with `malloc'; the array is SIZE
509 bytes long, unless SIZE == 0, in which case it is as518 bytes long, unless SIZE == 0, in which case it is as
510 big as necessary. */519 big as necessary. */
511extern char *getcwd (char *__buf, size_t __size) __THROW __wur;520extern char *getcwd (char *__buf, size_t __size) __THROW __wur
521 __attr_access ((__write_only__, 1, 2));
512522
513#ifdef __USE_GNU523#ifdef __USE_GNU
514/* Return a malloc'd string containing the current directory name.524/* Return a malloc'd string containing the current directory name.
...@@ -523,7 +533,8 @@ extern char *get_current_dir_name (void) __THROW;...@@ -523,7 +533,8 @@ extern char *get_current_dir_name (void) __THROW;
523 If successful, return BUF. If not, put an error message in533 If successful, return BUF. If not, put an error message in
524 BUF and return NULL. BUF should be at least PATH_MAX bytes long. */534 BUF and return NULL. BUF should be at least PATH_MAX bytes long. */
525extern char *getwd (char *__buf)535extern char *getwd (char *__buf)
526 __THROW __nonnull ((1)) __attribute_deprecated__ __wur;536 __THROW __nonnull ((1)) __attribute_deprecated__ __wur
537 __attr_access ((__write_only__, 1));
527#endif538#endif
528539
529540
...@@ -620,7 +631,8 @@ extern long int sysconf (int __name) __THROW;...@@ -620,7 +631,8 @@ extern long int sysconf (int __name) __THROW;
620631
621#ifdef __USE_POSIX2632#ifdef __USE_POSIX2
622/* Get the value of the string-valued system variable NAME. */633/* Get the value of the string-valued system variable NAME. */
623extern size_t confstr (int __name, char *__buf, size_t __len) __THROW;634extern size_t confstr (int __name, char *__buf, size_t __len) __THROW
635 __attr_access ((__write_only__, 2, 3));
624#endif636#endif
625637
626638
...@@ -686,8 +698,8 @@ extern __gid_t getegid (void) __THROW;...@@ -686,8 +698,8 @@ extern __gid_t getegid (void) __THROW;
686/* If SIZE is zero, return the number of supplementary groups698/* If SIZE is zero, return the number of supplementary groups
687 the calling process is in. Otherwise, fill in the group IDs699 the calling process is in. Otherwise, fill in the group IDs
688 of its supplementary groups in LIST and return the number written. */700 of its supplementary groups in LIST and return the number written. */
689extern int getgroups (int __size, __gid_t __list[]) __THROW __wur;701extern int getgroups (int __size, __gid_t __list[]) __THROW __wur
690702 __attr_access ((__write_only__, 2, 1));
691#ifdef __USE_GNU703#ifdef __USE_GNU
692/* Return nonzero iff the calling process is in group GID. */704/* Return nonzero iff the calling process is in group GID. */
693extern int group_member (__gid_t __gid) __THROW;705extern int group_member (__gid_t __gid) __THROW;
...@@ -772,7 +784,7 @@ extern char *ttyname (int __fd) __THROW;...@@ -772,7 +784,7 @@ extern char *ttyname (int __fd) __THROW;
772/* Store at most BUFLEN characters of the pathname of the terminal FD is784/* Store at most BUFLEN characters of the pathname of the terminal FD is
773 open on in BUF. Return 0 on success, otherwise an error number. */785 open on in BUF. Return 0 on success, otherwise an error number. */
774extern int ttyname_r (int __fd, char *__buf, size_t __buflen)786extern int ttyname_r (int __fd, char *__buf, size_t __buflen)
775 __THROW __nonnull ((2)) __wur;787 __THROW __nonnull ((2)) __wur __attr_access ((__write_only__, 2, 3));
776788
777/* Return 1 if FD is a valid descriptor associated789/* Return 1 if FD is a valid descriptor associated
778 with a terminal, zero if not. */790 with a terminal, zero if not. */
...@@ -807,7 +819,8 @@ extern int symlink (const char *__from, const char *__to)...@@ -807,7 +819,8 @@ extern int symlink (const char *__from, const char *__to)
807 Returns the number of characters read, or -1 for errors. */819 Returns the number of characters read, or -1 for errors. */
808extern ssize_t readlink (const char *__restrict __path,820extern ssize_t readlink (const char *__restrict __path,
809 char *__restrict __buf, size_t __len)821 char *__restrict __buf, size_t __len)
810 __THROW __nonnull ((1, 2)) __wur;822 __THROW __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
823
811#endif /* Use POSIX.1-2001. */824#endif /* Use POSIX.1-2001. */
812825
813#ifdef __USE_ATFILE826#ifdef __USE_ATFILE
...@@ -818,7 +831,7 @@ extern int symlinkat (const char *__from, int __tofd,...@@ -818,7 +831,7 @@ extern int symlinkat (const char *__from, int __tofd,
818/* Like readlink but a relative PATH is interpreted relative to FD. */831/* Like readlink but a relative PATH is interpreted relative to FD. */
819extern ssize_t readlinkat (int __fd, const char *__restrict __path,832extern ssize_t readlinkat (int __fd, const char *__restrict __path,
820 char *__restrict __buf, size_t __len)833 char *__restrict __buf, size_t __len)
821 __THROW __nonnull ((2, 3)) __wur;834 __THROW __nonnull ((2, 3)) __wur __attr_access ((__read_only__, 3, 4));
822#endif835#endif
823836
824/* Remove the link NAME. */837/* Remove the link NAME. */
...@@ -853,7 +866,8 @@ extern char *getlogin (void);...@@ -853,7 +866,8 @@ extern char *getlogin (void);
853866
854 This function is a possible cancellation point and therefore not867 This function is a possible cancellation point and therefore not
855 marked with __THROW. */868 marked with __THROW. */
856extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1));869extern int getlogin_r (char *__name, size_t __name_len) __nonnull ((1))
870 __attr_access ((__write_only__, 1, 2));
857#endif871#endif
858872
859#ifdef __USE_MISC873#ifdef __USE_MISC
...@@ -874,7 +888,8 @@ extern int setlogin (const char *__name) __THROW __nonnull ((1));...@@ -874,7 +888,8 @@ extern int setlogin (const char *__name) __THROW __nonnull ((1));
874/* Put the name of the current host in no more than LEN bytes of NAME.888/* Put the name of the current host in no more than LEN bytes of NAME.
875 The result is null-terminated if LEN is large enough for the full889 The result is null-terminated if LEN is large enough for the full
876 name and the terminator. */890 name and the terminator. */
877extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));891extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1))
892 __attr_access ((__write_only__, 1, 2));
878#endif893#endif
879894
880895
...@@ -882,7 +897,7 @@ extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));...@@ -882,7 +897,7 @@ extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
882/* Set the name of the current host to NAME, which is LEN bytes long.897/* Set the name of the current host to NAME, which is LEN bytes long.
883 This call is restricted to the super-user. */898 This call is restricted to the super-user. */
884extern int sethostname (const char *__name, size_t __len)899extern int sethostname (const char *__name, size_t __len)
885 __THROW __nonnull ((1)) __wur;900 __THROW __nonnull ((1)) __wur __attr_access ((__read_only__, 1, 2));
886901
887/* Set the current machine's Internet number to ID.902/* Set the current machine's Internet number to ID.
888 This call is restricted to the super-user. */903 This call is restricted to the super-user. */
...@@ -893,10 +908,9 @@ extern int sethostid (long int __id) __THROW __wur;...@@ -893,10 +908,9 @@ extern int sethostid (long int __id) __THROW __wur;
893 Called just like `gethostname' and `sethostname'.908 Called just like `gethostname' and `sethostname'.
894 The NIS domain name is usually the empty string when not using NIS. */909 The NIS domain name is usually the empty string when not using NIS. */
895extern int getdomainname (char *__name, size_t __len)910extern int getdomainname (char *__name, size_t __len)
896 __THROW __nonnull ((1)) __wur;911 __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
897extern int setdomainname (const char *__name, size_t __len)912extern int setdomainname (const char *__name, size_t __len)
898 __THROW __nonnull ((1)) __wur;913 __THROW __nonnull ((1)) __wur __attr_access ((__read_only__, 1, 2));
899
900914
901/* Revoke access permissions to all processes currently communicating915/* Revoke access permissions to all processes currently communicating
902 with the control terminal, and then send a SIGHUP signal to the process916 with the control terminal, and then send a SIGHUP signal to the process
...@@ -1131,7 +1145,9 @@ extern char *crypt (const char *__key, const char *__salt)...@@ -1131,7 +1145,9 @@ extern char *crypt (const char *__key, const char *__salt)
1131 range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM1145 range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
1132 is without partner. */1146 is without partner. */
1133extern void swab (const void *__restrict __from, void *__restrict __to,1147extern void swab (const void *__restrict __from, void *__restrict __to,
1134 ssize_t __n) __THROW __nonnull ((1, 2));1148 ssize_t __n) __THROW __nonnull ((1, 2))
1149 __attr_access ((__read_only__, 1, 3))
1150 __attr_access ((__write_only__, 2, 3));
1135#endif1151#endif
11361152
11371153
...@@ -1158,7 +1174,8 @@ extern int pthread_atfork (void (*__prepare) (void),...@@ -1158,7 +1174,8 @@ extern int pthread_atfork (void (*__prepare) (void),
1158#ifdef __USE_MISC1174#ifdef __USE_MISC
1159/* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on1175/* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on
1160 success or -1 on error. */1176 success or -1 on error. */
1161int getentropy (void *__buffer, size_t __length) __wur;1177int getentropy (void *__buffer, size_t __length) __wur
1178 __attr_access ((__write_only__, 1, 2));
1162#endif1179#endif
11631180
1164/* Define some macros helping to catch buffer overflows. */1181/* Define some macros helping to catch buffer overflows. */
lib/libc/include/generic-glibc/wchar.h+9-5
...@@ -633,9 +633,11 @@ extern int swscanf (const wchar_t *__restrict __s,...@@ -633,9 +633,11 @@ extern int swscanf (const wchar_t *__restrict __s,
633 __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;633 __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
634634
635/* For historical reasons, the C99-compliant versions of the scanf635/* For historical reasons, the C99-compliant versions of the scanf
636 functions are at alternative names. When __LDBL_COMPAT is in636 functions are at alternative names. When __LDBL_COMPAT or
637 effect, this is handled in bits/wchar-ldbl.h. */637 __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
638#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT638 bits/wchar-ldbl.h. */
639#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT \
640 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
639# ifdef __REDIRECT641# ifdef __REDIRECT
640extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream,642extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream,
641 const wchar_t *__restrict __format, ...),643 const wchar_t *__restrict __format, ...),
...@@ -688,7 +690,8 @@ extern int vswscanf (const wchar_t *__restrict __s,...@@ -688,7 +690,8 @@ extern int vswscanf (const wchar_t *__restrict __s,
688/* Same redirection as above for the v*wscanf family. */690/* Same redirection as above for the v*wscanf family. */
689# if !__GLIBC_USE (DEPRECATED_SCANF) \691# if !__GLIBC_USE (DEPRECATED_SCANF) \
690 && (!defined __LDBL_COMPAT || !defined __REDIRECT) \692 && (!defined __LDBL_COMPAT || !defined __REDIRECT) \
691 && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K)693 && (defined __STRICT_ANSI__ || defined __USE_XOPEN2K) \
694 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
692# ifdef __REDIRECT695# ifdef __REDIRECT
693extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,696extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
694 const wchar_t *__restrict __format,697 const wchar_t *__restrict __format,
...@@ -849,7 +852,8 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,...@@ -849,7 +852,8 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
849# include <bits/wchar2.h>852# include <bits/wchar2.h>
850#endif853#endif
851854
852#ifdef __LDBL_COMPAT855#include <bits/floatn.h>
856#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
853# include <bits/wchar-ldbl.h>857# include <bits/wchar-ldbl.h>
854#endif858#endif
855859
lib/libc/include/i386-linux-gnu/bits/fenv.h-54
...@@ -113,58 +113,4 @@ femode_t;...@@ -113,58 +113,4 @@ femode_t;
113113
114/* Default floating-point control modes. */114/* Default floating-point control modes. */
115# define FE_DFL_MODE ((const femode_t *) -1L)115# define FE_DFL_MODE ((const femode_t *) -1L)
116#endif
117
118
119#ifdef __USE_EXTERN_INLINES
120__BEGIN_DECLS
121
122/* Optimized versions. */
123#ifndef _LIBC
124extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
125#endif
126__extern_always_inline void
127__NTH (__feraiseexcept_invalid_divbyzero (int __excepts))
128{
129 if ((FE_INVALID & __excepts) != 0)
130 {
131 /* One example of an invalid operation is 0.0 / 0.0. */
132 float __f = 0.0;
133
134# ifdef __SSE_MATH__
135 __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
136# else
137 __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
138 : "=t" (__f) : "0" (__f));
139# endif
140 (void) &__f;
141 }
142 if ((FE_DIVBYZERO & __excepts) != 0)
143 {
144 float __f = 1.0;
145 float __g = 0.0;
146
147# ifdef __SSE_MATH__
148 __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
149# else
150 __asm__ __volatile__ ("fdivp %%st, %%st(1); fwait"
151 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
152# endif
153 (void) &__f;
154 }
155}
156__extern_inline int
157__NTH (feraiseexcept (int __excepts))
158{
159 if (__builtin_constant_p (__excepts)
160 && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
161 {
162 __feraiseexcept_invalid_divbyzero (__excepts);
163 return 0;
164 }
165
166 return __feraiseexcept_renamed (__excepts);
167}
168
169__END_DECLS
170#endif116#endif
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/select.h deleted-63
...@@ -1,63 +0,0 @@
1/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_SELECT_H
19# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
20#endif
21
22#include <bits/wordsize.h>
23
24
25#if defined __GNUC__ && __GNUC__ >= 2
26
27# if __WORDSIZE == 64
28# define __FD_ZERO_STOS "stosq"
29# else
30# define __FD_ZERO_STOS "stosl"
31# endif
32
33# define __FD_ZERO(fdsp) \
34 do { \
35 int __d0, __d1; \
36 __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
37 : "=c" (__d0), "=D" (__d1) \
38 : "a" (0), "0" (sizeof (fd_set) \
39 / sizeof (__fd_mask)), \
40 "1" (&__FDS_BITS (fdsp)[0]) \
41 : "memory"); \
42 } while (0)
43
44#else /* ! GNU CC */
45
46/* We don't use `memset' because this would require a prototype and
47 the array isn't too big. */
48# define __FD_ZERO(set) \
49 do { \
50 unsigned int __i; \
51 fd_set *__arr = (set); \
52 for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
53 __FDS_BITS (__arr)[__i] = 0; \
54 } while (0)
55
56#endif /* GNU CC */
57
58#define __FD_SET(d, set) \
59 ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
60#define __FD_CLR(d, set) \
61 ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
62#define __FD_ISSET(d, set) \
63 ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. x86 version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 1
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SEMAPHORE_H
20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
26# define __SIZEOF_SEM_T 32
27#else
28# define __SIZEOF_SEM_T 16
29#endif
30
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/sysctl.h deleted-20
...@@ -1,20 +0,0 @@
1/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#if defined __x86_64__ && defined __ILP32__
19# error "sysctl system call is unsupported in x32 kernel"
20#endif
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/types/struct_semid_ds.h created+34
...@@ -0,0 +1,34 @@
1/* x86 implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_ctime; /* last time changed by semctl() */
30 __syscall_ulong_t __sem_ctime_high;
31 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
32 __syscall_ulong_t __glibc_reserved3;
33 __syscall_ulong_t __glibc_reserved4;
34};
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/typesizes.h+6
...@@ -64,6 +64,7 @@...@@ -64,6 +64,7 @@
64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
65#define __USECONDS_T_TYPE __U32_TYPE65#define __USECONDS_T_TYPE __U32_TYPE
66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
67#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
68#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
69#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -87,10 +88,15 @@...@@ -87,10 +88,15 @@
8788
88/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */89/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
89# define __STATFS_MATCHES_STATFS64 190# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
90#else94#else
91# define __RLIM_T_MATCHES_RLIM64_T 095# define __RLIM_T_MATCHES_RLIM64_T 0
9296
93# define __STATFS_MATCHES_STATFS64 097# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94#endif100#endif
95101
96/* Number of descriptors that can fit in an `fd_set'. */102/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/mips-linux-gnu/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mips-linux-gnu/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mips-linux-gnu/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mips64-linux-gnuabi64/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabi64/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mips64-linux-gnuabin32/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mips64-linux-gnuabin32/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mips64el-linux-gnuabi64/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabi64/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mips64el-linux-gnuabin32/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mips64el-linux-gnuabin32/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/floatn.h created+97
...@@ -0,0 +1,97 @@
1/* Macros to control TS 18661-3 glibc features on MIPS platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/msq-pad.h deleted-31
...@@ -1,31 +0,0 @@
1/* Define where padding goes in struct msqid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#ifdef __MIPSEL__
26# define __MSQ_PAD_AFTER_TIME (__TIMESIZE == 32)
27# define __MSQ_PAD_BEFORE_TIME 0
28#else
29# define __MSQ_PAD_AFTER_TIME 0
30# define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
31#endif
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/mipsel-linux-gnu/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 0
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/semaphore.h created+36
...@@ -0,0 +1,36 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SEMAPHORE_H
19# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
20#endif
21
22#if _MIPS_SIM == _ABI64
23# define __SIZEOF_SEM_T 32
24#else
25# define __SIZEOF_SEM_T 16
26#endif
27
28/* Value returned if `sem_open' failed. */
29#define SEM_FAILED ((sem_t *) 0)
30
31
32typedef union
33{
34 char __size[__SIZEOF_SEM_T];
35 long int __align;
36} sem_t;
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/shm-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct shmid_ds. MIPS version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#define __SHM_PAD_AFTER_TIME 0
24#define __SHM_PAD_BEFORE_TIME 0
25#define __SHM_SEGSZ_AFTER_TIME 0
26#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/signum-arch.h created+65
...@@ -0,0 +1,65 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/MIPS. */
28
29#define SIGEMT 7 /* Emulator trap. */
30#define SIGPWR 19 /* Power failure imminent. */
31
32/* Historical signals specified by POSIX. */
33#define SIGBUS 10 /* Bus error. */
34#define SIGSYS 12 /* Bad system call. */
35
36/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
37#define SIGURG 21 /* Urgent data is available at a socket. */
38#define SIGSTOP 23 /* Stop, unblockable. */
39#define SIGTSTP 24 /* Keyboard stop. */
40#define SIGCONT 25 /* Continue. */
41#define SIGCHLD 18 /* Child terminated or stopped. */
42#define SIGTTIN 26 /* Background read from control terminal. */
43#define SIGTTOU 27 /* Background write to control terminal. */
44#define SIGPOLL 22 /* Pollable event occurred (System V). */
45#define SIGXCPU 30 /* CPU time limit exceeded. */
46#define SIGVTALRM 28 /* Virtual timer expired. */
47#define SIGPROF 29 /* Profiling timer expired. */
48#define SIGXFSZ 31 /* File size limit exceeded. */
49#define SIGUSR1 16 /* User-defined signal 1. */
50#define SIGUSR2 17 /* User-defined signal 2. */
51
52/* Nonstandard signals found in all modern POSIX systems
53 (including both BSD and Linux). */
54#define SIGWINCH 20 /* Window size change (4.3 BSD, Sun). */
55
56/* Archaic names for compatibility. */
57#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
58#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
59#define SIGCLD SIGCHLD /* Old System V name */
60
61/* By default no real-time signals are supported. */
62#define __SIGRTMIN 32
63#define __SIGRTMAX 127
64
65#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/signum.h deleted-68
...@@ -1,68 +0,0 @@
1/* Signal number definitions. Linux/MIPS version.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/MIPS. */
30
31#define SIGEMT 7 /* Emulator trap. */
32#define SIGPWR 19 /* Power failure imminent. */
33
34#undef SIGUSR1
35#define SIGUSR1 16
36#undef SIGUSR2
37#define SIGUSR2 17
38#undef SIGCHLD
39#define SIGCHLD 18
40#undef SIGWINCH
41#define SIGWINCH 20
42#undef SIGURG
43#define SIGURG 21
44#undef SIGPOLL
45#define SIGPOLL 22
46#undef SIGSTOP
47#define SIGSTOP 23
48#undef SIGTSTP
49#define SIGTSTP 24
50#undef SIGCONT
51#define SIGCONT 25
52#undef SIGTTIN
53#define SIGTTIN 26
54#undef SIGTTOU
55#define SIGTTOU 27
56#undef SIGVTALRM
57#define SIGVTALRM 28
58#undef SIGPROF
59#define SIGPROF 29
60#undef SIGXCPU
61#define SIGXCPU 30
62#undef SIGXFSZ
63#define SIGXFSZ 31
64
65#undef __SIGRTMAX
66#define __SIGRTMAX 127
67
68#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/types/struct_msqid_ds.h created+56
...@@ -0,0 +1,56 @@
1/* Linux/MIPS implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29# ifdef __MIPSEL__
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_stime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_rtime_high;
34 __time_t msg_ctime; /* time of last change */
35 unsigned long int __msg_ctime_high;
36# else
37 unsigned long int __msg_stime_high;
38 __time_t msg_stime; /* time of last msgsnd command */
39 unsigned long int __msg_rtime_high;
40 __time_t msg_rtime; /* time of last msgsnd command */
41 unsigned long int __msg_ctime_high;
42 __time_t msg_ctime; /* time of last change */
43# endif
44#else
45 __time_t msg_stime; /* time of last msgsnd command */
46 __time_t msg_rtime; /* time of last msgsnd command */
47 __time_t msg_ctime; /* time of last change */
48#endif
49 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
50 msgqnum_t msg_qnum; /* number of messages currently on queue */
51 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
52 __pid_t msg_lspid; /* pid of last msgsnd() */
53 __pid_t msg_lrpid; /* pid of last msgrcv() */
54 __syscall_ulong_t __glibc_reserved4;
55 __syscall_ulong_t __glibc_reserved5;
56};
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/types/struct_semid_ds.h created+32
...@@ -0,0 +1,32 @@
1/* MIPS implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __time_t sem_ctime; /* last time changed by semctl() */
29 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
30 __syscall_ulong_t __sem_otime_high;
31 __syscall_ulong_t __sem_ctime_high;
32};
\ No newline at end of file
lib/libc/include/mipsel-linux-gnu/bits/types/struct_shmid_ds.h created+49
...@@ -0,0 +1,49 @@
1/* Linux/MIPS implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27 size_t shm_segsz; /* size of segment in bytes */
28#if __TIMESIZE == 32
29 __time_t shm_atime; /* time of last shmat() */
30 __time_t shm_dtime; /* time of last shmdt() */
31 __time_t shm_ctime; /* time of last change by shmctl() */
32#else
33 __time_t shm_atime; /* time of last shmat() */
34 __time_t shm_dtime; /* time of last shmdt() */
35 __time_t shm_ctime; /* time of last change by shmctl() */
36#endif
37 __pid_t shm_cpid; /* pid of creator */
38 __pid_t shm_lpid; /* pid of last shmop */
39 shmatt_t shm_nattch; /* number of current attaches */
40#if __TIMESIZE == 32
41 unsigned short int __shm_atime_high;
42 unsigned short int __shm_dtime_high;
43 unsigned short int __shm_ctime_high;
44 unsigned short int __glibc_reserved4;
45#else
46 __syscall_ulong_t __glibc_reserved5;
47 __syscall_ulong_t __glibc_reserved6;
48#endif
49 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/fenvinline.h deleted-102
...@@ -1,102 +0,0 @@
1/* Inline floating-point environment handling functions for powerpc.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
20
21/* Inline definitions for fegetround. */
22# define __fegetround_ISA300() \
23 (__extension__ ({ \
24 union { double __d; unsigned long long __ll; } __u; \
25 __asm__ __volatile__ ( \
26 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
27 : "=f" (__u.__d)); \
28 __u.__ll & 0x0000000000000003LL; \
29 }))
30
31# define __fegetround_ISA2() \
32 (__extension__ ({ \
33 int __fegetround_result; \
34 __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
35 : "=r"(__fegetround_result) : : "cr7"); \
36 __fegetround_result & 3; \
37 }))
38
39# ifdef _ARCH_PWR9
40# define __fegetround() __fegetround_ISA300()
41# elif defined __BUILTIN_CPU_SUPPORTS__
42# define __fegetround() \
43 (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
44 ? __fegetround_ISA300() \
45 : __fegetround_ISA2() \
46 )
47# else
48# define __fegetround() __fegetround_ISA2()
49# endif
50
51# define fegetround() __fegetround ()
52
53# ifndef __NO_MATH_INLINES
54/* The weird 'i#*X' constraints on the following suppress a gcc
55 warning when __excepts is not a constant. Otherwise, they mean the
56 same as just plain 'i'. */
57
58# if __GNUC_PREREQ(3, 4)
59
60/* Inline definition for feraiseexcept. */
61# define feraiseexcept(__excepts) \
62 (__extension__ ({ \
63 int __e = __excepts; \
64 int __ret; \
65 if (__builtin_constant_p (__e) \
66 && (__e & (__e - 1)) == 0 \
67 && __e != FE_INVALID) \
68 { \
69 if (__e != 0) \
70 __asm__ __volatile__ ("mtfsb1 %0" \
71 : : "i#*X" (__builtin_clz (__e))); \
72 __ret = 0; \
73 } \
74 else \
75 __ret = feraiseexcept (__e); \
76 __ret; \
77 }))
78
79/* Inline definition for feclearexcept. */
80# define feclearexcept(__excepts) \
81 (__extension__ ({ \
82 int __e = __excepts; \
83 int __ret; \
84 if (__builtin_constant_p (__e) \
85 && (__e & (__e - 1)) == 0 \
86 && __e != FE_INVALID) \
87 { \
88 if (__e != 0) \
89 __asm__ __volatile__ ("mtfsb0 %0" \
90 : : "i#*X" (__builtin_clz (__e))); \
91 __ret = 0; \
92 } \
93 else \
94 __ret = feclearexcept (__e); \
95 __ret; \
96 }))
97
98# endif /* __GNUC_PREREQ(3, 4). */
99
100# endif /* !__NO_MATH_INLINES. */
101
102#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/hwcap.h+3-1
...@@ -73,4 +73,6 @@...@@ -73,4 +73,6 @@
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
\ No newline at end of file
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/iscanonical.h+1-1
...@@ -20,7 +20,7 @@...@@ -20,7 +20,7 @@
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif21#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else25#else
26extern int __iscanonicall (long double __x)26extern int __iscanonicall (long double __x)
lib/libc/include/powerpc-linux-gnu/bits/long-double.h+1-1
...@@ -22,4 +22,4 @@...@@ -22,4 +22,4 @@
22# define __NO_LONG_DOUBLE_MATH 122# define __NO_LONG_DOUBLE_MATH 1
23# endif23# endif
24#endif24#endif
25#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/msq-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct msqid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __MSQ_PAD_AFTER_TIME 0
26#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/sem-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct semid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SEM_PAD_AFTER_TIME 0
26#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. PowerPC version.
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <https://www.gnu.org/licenses/>. */
19
20#ifndef _SEMAPHORE_H
21# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
22#endif
23
24#include <bits/wordsize.h>
25
26#if __WORDSIZE == 64
27# define __SIZEOF_SEM_T 32
28#else
29# define __SIZEOF_SEM_T 16
30#endif
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/shm-pad.h deleted-28
...@@ -1,28 +0,0 @@
1/* Define where padding goes in struct shmid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SHM_PAD_AFTER_TIME 0
26#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
27#define __SHM_SEGSZ_AFTER_TIME 1
28#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 unsigned long int __msg_stime_high;
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_rtime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_ctime_high;
34 __time_t msg_ctime; /* time of last change */
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_otime; /* last semop() time */
30 __syscall_ulong_t __sem_ctime_high;
31 __time_t sem_ctime; /* last time changed by semctl() */
32#else
33 __time_t sem_otime; /* last semop() time */
34 __time_t sem_ctime; /* last time changed by semctl() */
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/bits/types/struct_shmid_ds.h created+46
...@@ -0,0 +1,46 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 unsigned long int __shm_atime_high;
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_dtime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_ctime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34 unsigned long int __glibc_reserved4;
35#else
36 __time_t shm_atime; /* time of last shmat() */
37 __time_t shm_dtime; /* time of last shmdt() */
38 __time_t shm_ctime; /* time of last change by shmctl() */
39#endif
40 size_t shm_segsz; /* size of segment in bytes */
41 __pid_t shm_cpid; /* pid of creator */
42 __pid_t shm_lpid; /* pid of last shmop */
43 shmatt_t shm_nattch; /* number of current attaches */
44 __syscall_ulong_t __glibc_reserved5;
45 __syscall_ulong_t __glibc_reserved6;
46 };
\ No newline at end of file
lib/libc/include/powerpc-linux-gnu/gnu/lib-names-32.h-2
...@@ -19,8 +19,6 @@...@@ -19,8 +19,6 @@
19#define LIBNSS_FILES_SO "libnss_files.so.2"19#define LIBNSS_FILES_SO "libnss_files.so.2"
20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"20#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"21#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
22#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
23#define LIBNSS_NIS_SO "libnss_nis.so.2"
24#define LIBNSS_TEST1_SO "libnss_test1.so.2"22#define LIBNSS_TEST1_SO "libnss_test1.so.2"
25#define LIBNSS_TEST2_SO "libnss_test2.so.2"23#define LIBNSS_TEST2_SO "libnss_test2.so.2"
26#define LIBPTHREAD_SO "libpthread.so.0"24#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc-linux-gnu/ieee754.h+66-2
...@@ -21,6 +21,7 @@...@@ -21,6 +21,7 @@
21#include <features.h>21#include <features.h>
2222
23#include <bits/endian.h>23#include <bits/endian.h>
24#include <bits/floatn.h>
2425
25__BEGIN_DECLS26__BEGIN_DECLS
2627
...@@ -111,6 +112,65 @@ union ieee754_double...@@ -111,6 +112,65 @@ union ieee754_double
111#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
112113
113114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
114/* IBM extended format for long double.174/* IBM extended format for long double.
115175
116 Each long double is made up of two IEEE doubles. The value of the176 Each long double is made up of two IEEE doubles. The value of the
...@@ -121,12 +181,16 @@ union ieee754_double...@@ -121,12 +181,16 @@ union ieee754_double
121 -0.0. No other requirements are made; so, for example, 1.0 may be181 -0.0. No other requirements are made; so, for example, 1.0 may be
122 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123 NaN is don't-care. */183 NaN is don't-care. */
124
125union ibm_extended_long_double184union ibm_extended_long_double
126 {185 {
127 long double ld;186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
128 union ieee754_double d[2];191 union ieee754_double d[2];
129 };192 };
193#endif
130194
131__END_DECLS195__END_DECLS
132196
lib/libc/include/powerpc64-linux-gnu/bits/fenvinline.h deleted-102
...@@ -1,102 +0,0 @@
1/* Inline floating-point environment handling functions for powerpc.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
20
21/* Inline definitions for fegetround. */
22# define __fegetround_ISA300() \
23 (__extension__ ({ \
24 union { double __d; unsigned long long __ll; } __u; \
25 __asm__ __volatile__ ( \
26 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
27 : "=f" (__u.__d)); \
28 __u.__ll & 0x0000000000000003LL; \
29 }))
30
31# define __fegetround_ISA2() \
32 (__extension__ ({ \
33 int __fegetround_result; \
34 __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
35 : "=r"(__fegetround_result) : : "cr7"); \
36 __fegetround_result & 3; \
37 }))
38
39# ifdef _ARCH_PWR9
40# define __fegetround() __fegetround_ISA300()
41# elif defined __BUILTIN_CPU_SUPPORTS__
42# define __fegetround() \
43 (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
44 ? __fegetround_ISA300() \
45 : __fegetround_ISA2() \
46 )
47# else
48# define __fegetround() __fegetround_ISA2()
49# endif
50
51# define fegetround() __fegetround ()
52
53# ifndef __NO_MATH_INLINES
54/* The weird 'i#*X' constraints on the following suppress a gcc
55 warning when __excepts is not a constant. Otherwise, they mean the
56 same as just plain 'i'. */
57
58# if __GNUC_PREREQ(3, 4)
59
60/* Inline definition for feraiseexcept. */
61# define feraiseexcept(__excepts) \
62 (__extension__ ({ \
63 int __e = __excepts; \
64 int __ret; \
65 if (__builtin_constant_p (__e) \
66 && (__e & (__e - 1)) == 0 \
67 && __e != FE_INVALID) \
68 { \
69 if (__e != 0) \
70 __asm__ __volatile__ ("mtfsb1 %0" \
71 : : "i#*X" (__builtin_clz (__e))); \
72 __ret = 0; \
73 } \
74 else \
75 __ret = feraiseexcept (__e); \
76 __ret; \
77 }))
78
79/* Inline definition for feclearexcept. */
80# define feclearexcept(__excepts) \
81 (__extension__ ({ \
82 int __e = __excepts; \
83 int __ret; \
84 if (__builtin_constant_p (__e) \
85 && (__e & (__e - 1)) == 0 \
86 && __e != FE_INVALID) \
87 { \
88 if (__e != 0) \
89 __asm__ __volatile__ ("mtfsb0 %0" \
90 : : "i#*X" (__builtin_clz (__e))); \
91 __ret = 0; \
92 } \
93 else \
94 __ret = feclearexcept (__e); \
95 __ret; \
96 }))
97
98# endif /* __GNUC_PREREQ(3, 4). */
99
100# endif /* !__NO_MATH_INLINES. */
101
102#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/hwcap.h+3-1
...@@ -73,4 +73,6 @@...@@ -73,4 +73,6 @@
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
\ No newline at end of file
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/iscanonical.h+1-1
...@@ -20,7 +20,7 @@...@@ -20,7 +20,7 @@
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif21#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else25#else
26extern int __iscanonicall (long double __x)26extern int __iscanonicall (long double __x)
lib/libc/include/powerpc64-linux-gnu/bits/long-double.h+1-1
...@@ -22,4 +22,4 @@...@@ -22,4 +22,4 @@
22# define __NO_LONG_DOUBLE_MATH 122# define __NO_LONG_DOUBLE_MATH 1
23# endif23# endif
24#endif24#endif
25#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/msq-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct msqid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __MSQ_PAD_AFTER_TIME 0
26#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/sem-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct semid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SEM_PAD_AFTER_TIME 0
26#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. PowerPC version.
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <https://www.gnu.org/licenses/>. */
19
20#ifndef _SEMAPHORE_H
21# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
22#endif
23
24#include <bits/wordsize.h>
25
26#if __WORDSIZE == 64
27# define __SIZEOF_SEM_T 32
28#else
29# define __SIZEOF_SEM_T 16
30#endif
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/shm-pad.h deleted-28
...@@ -1,28 +0,0 @@
1/* Define where padding goes in struct shmid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SHM_PAD_AFTER_TIME 0
26#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
27#define __SHM_SEGSZ_AFTER_TIME 1
28#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 unsigned long int __msg_stime_high;
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_rtime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_ctime_high;
34 __time_t msg_ctime; /* time of last change */
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_otime; /* last semop() time */
30 __syscall_ulong_t __sem_ctime_high;
31 __time_t sem_ctime; /* last time changed by semctl() */
32#else
33 __time_t sem_otime; /* last semop() time */
34 __time_t sem_ctime; /* last time changed by semctl() */
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/bits/types/struct_shmid_ds.h created+46
...@@ -0,0 +1,46 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 unsigned long int __shm_atime_high;
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_dtime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_ctime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34 unsigned long int __glibc_reserved4;
35#else
36 __time_t shm_atime; /* time of last shmat() */
37 __time_t shm_dtime; /* time of last shmdt() */
38 __time_t shm_ctime; /* time of last change by shmctl() */
39#endif
40 size_t shm_segsz; /* size of segment in bytes */
41 __pid_t shm_cpid; /* pid of creator */
42 __pid_t shm_lpid; /* pid of last shmop */
43 shmatt_t shm_nattch; /* number of current attaches */
44 __syscall_ulong_t __glibc_reserved5;
45 __syscall_ulong_t __glibc_reserved6;
46 };
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/gnu/lib-names-64-v1.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h-2
...@@ -10,9 +10,7 @@...@@ -10,9 +10,7 @@
10#define __stub_chflags10#define __stub_chflags
11#define __stub_fchflags11#define __stub_fchflags
12#define __stub_gtty12#define __stub_gtty
13#define __stub_lchmod
14#define __stub_revoke13#define __stub_revoke
15#define __stub_setlogin14#define __stub_setlogin
16#define __stub_sigreturn15#define __stub_sigreturn
17#define __stub_sstk
18#define __stub_stty16#define __stub_stty
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/ieee754.h+66-2
...@@ -21,6 +21,7 @@...@@ -21,6 +21,7 @@
21#include <features.h>21#include <features.h>
2222
23#include <bits/endian.h>23#include <bits/endian.h>
24#include <bits/floatn.h>
2425
25__BEGIN_DECLS26__BEGIN_DECLS
2627
...@@ -111,6 +112,65 @@ union ieee754_double...@@ -111,6 +112,65 @@ union ieee754_double
111#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
112113
113114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
114/* IBM extended format for long double.174/* IBM extended format for long double.
115175
116 Each long double is made up of two IEEE doubles. The value of the176 Each long double is made up of two IEEE doubles. The value of the
...@@ -121,12 +181,16 @@ union ieee754_double...@@ -121,12 +181,16 @@ union ieee754_double
121 -0.0. No other requirements are made; so, for example, 1.0 may be181 -0.0. No other requirements are made; so, for example, 1.0 may be
122 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123 NaN is don't-care. */183 NaN is don't-care. */
124
125union ibm_extended_long_double184union ibm_extended_long_double
126 {185 {
127 long double ld;186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
128 union ieee754_double d[2];191 union ieee754_double d[2];
129 };192 };
193#endif
130194
131__END_DECLS195__END_DECLS
132196
lib/libc/include/powerpc64le-linux-gnu/bits/fenvinline.h deleted-102
...@@ -1,102 +0,0 @@
1/* Inline floating-point environment handling functions for powerpc.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#if defined __GNUC__ && !defined _SOFT_FLOAT && !defined __NO_FPRS__
20
21/* Inline definitions for fegetround. */
22# define __fegetround_ISA300() \
23 (__extension__ ({ \
24 union { double __d; unsigned long long __ll; } __u; \
25 __asm__ __volatile__ ( \
26 ".machine push; .machine \"power9\"; mffsl %0; .machine pop" \
27 : "=f" (__u.__d)); \
28 __u.__ll & 0x0000000000000003LL; \
29 }))
30
31# define __fegetround_ISA2() \
32 (__extension__ ({ \
33 int __fegetround_result; \
34 __asm__ __volatile__ ("mcrfs 7,7 ; mfcr %0" \
35 : "=r"(__fegetround_result) : : "cr7"); \
36 __fegetround_result & 3; \
37 }))
38
39# ifdef _ARCH_PWR9
40# define __fegetround() __fegetround_ISA300()
41# elif defined __BUILTIN_CPU_SUPPORTS__
42# define __fegetround() \
43 (__glibc_likely (__builtin_cpu_supports ("arch_3_00")) \
44 ? __fegetround_ISA300() \
45 : __fegetround_ISA2() \
46 )
47# else
48# define __fegetround() __fegetround_ISA2()
49# endif
50
51# define fegetround() __fegetround ()
52
53# ifndef __NO_MATH_INLINES
54/* The weird 'i#*X' constraints on the following suppress a gcc
55 warning when __excepts is not a constant. Otherwise, they mean the
56 same as just plain 'i'. */
57
58# if __GNUC_PREREQ(3, 4)
59
60/* Inline definition for feraiseexcept. */
61# define feraiseexcept(__excepts) \
62 (__extension__ ({ \
63 int __e = __excepts; \
64 int __ret; \
65 if (__builtin_constant_p (__e) \
66 && (__e & (__e - 1)) == 0 \
67 && __e != FE_INVALID) \
68 { \
69 if (__e != 0) \
70 __asm__ __volatile__ ("mtfsb1 %0" \
71 : : "i#*X" (__builtin_clz (__e))); \
72 __ret = 0; \
73 } \
74 else \
75 __ret = feraiseexcept (__e); \
76 __ret; \
77 }))
78
79/* Inline definition for feclearexcept. */
80# define feclearexcept(__excepts) \
81 (__extension__ ({ \
82 int __e = __excepts; \
83 int __ret; \
84 if (__builtin_constant_p (__e) \
85 && (__e & (__e - 1)) == 0 \
86 && __e != FE_INVALID) \
87 { \
88 if (__e != 0) \
89 __asm__ __volatile__ ("mtfsb0 %0" \
90 : : "i#*X" (__builtin_clz (__e))); \
91 __ret = 0; \
92 } \
93 else \
94 __ret = feclearexcept (__e); \
95 __ret; \
96 }))
97
98# endif /* __GNUC_PREREQ(3, 4). */
99
100# endif /* !__NO_MATH_INLINES. */
101
102#endif /* __GNUC__ && !_SOFT_FLOAT && !__NO_FPRS__ */
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/hwcap.h+3-1
...@@ -73,4 +73,6 @@...@@ -73,4 +73,6 @@
73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */73#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */74#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended75#define PPC_FEATURE2_HTM_NO_SUSPEND 0x00080000 /* TM without suspended
76 state. */
\ No newline at end of file
76 state. */
77#define PPC_FEATURE2_ARCH_3_1 0x00040000 /* ISA 3.1. */
78#define PPC_FEATURE2_MMA 0x00020000 /* Matrix-Multiply Assist. */
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/iscanonical.h+1-1
...@@ -20,7 +20,7 @@...@@ -20,7 +20,7 @@
20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."20# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
21#endif21#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)24# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
25#else25#else
26extern int __iscanonicall (long double __x)26extern int __iscanonicall (long double __x)
lib/libc/include/powerpc64le-linux-gnu/bits/long-double.h+3-2
...@@ -1,5 +1,5 @@...@@ -1,5 +1,5 @@
1/* Properties of long double type. ldbl-opt version.1/* Properties of long double type. ldbl-opt version.
2 Copyright (C) 2016-2020 Free Software Foundation, Inc.2 Copyright (C) 2019-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.3 This file is part of the GNU C Library.
44
5 The GNU C Library is free software; you can redistribute it and/or5 The GNU C Library is free software; you can redistribute it and/or
...@@ -22,4 +22,5 @@...@@ -22,4 +22,5 @@
22# define __NO_LONG_DOUBLE_MATH 122# define __NO_LONG_DOUBLE_MATH 1
23# endif23# endif
24#endif24#endif
25#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
25
26#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI (__LDBL_MANT_DIG__ == 113)
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/msq-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct msqid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __MSQ_PAD_AFTER_TIME 0
26#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/sem-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct semid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SEM_PAD_AFTER_TIME 0
26#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. PowerPC version.
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Paul Mackerras <paulus@au.ibm.com>, 2003.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <https://www.gnu.org/licenses/>. */
19
20#ifndef _SEMAPHORE_H
21# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
22#endif
23
24#include <bits/wordsize.h>
25
26#if __WORDSIZE == 64
27# define __SIZEOF_SEM_T 32
28#else
29# define __SIZEOF_SEM_T 16
30#endif
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/shm-pad.h deleted-28
...@@ -1,28 +0,0 @@
1/* Define where padding goes in struct shmid_ds. PowerPC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SHM_PAD_AFTER_TIME 0
26#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
27#define __SHM_SEGSZ_AFTER_TIME 1
28#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Linux/PowerPC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 unsigned long int __msg_stime_high;
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_rtime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_ctime_high;
34 __time_t msg_ctime; /* time of last change */
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* PowerPC implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_otime; /* last semop() time */
30 __syscall_ulong_t __sem_ctime_high;
31 __time_t sem_ctime; /* last time changed by semctl() */
32#else
33 __time_t sem_otime; /* last semop() time */
34 __time_t sem_ctime; /* last time changed by semctl() */
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/bits/types/struct_shmid_ds.h created+46
...@@ -0,0 +1,46 @@
1/* Linux/PowerPC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 unsigned long int __shm_atime_high;
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_dtime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_ctime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34 unsigned long int __glibc_reserved4;
35#else
36 __time_t shm_atime; /* time of last shmat() */
37 __time_t shm_dtime; /* time of last shmdt() */
38 __time_t shm_ctime; /* time of last change by shmctl() */
39#endif
40 size_t shm_segsz; /* size of segment in bytes */
41 __pid_t shm_cpid; /* pid of creator */
42 __pid_t shm_lpid; /* pid of last shmop */
43 shmatt_t shm_nattch; /* number of current attaches */
44 __syscall_ulong_t __glibc_reserved5;
45 __syscall_ulong_t __glibc_reserved6;
46 };
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/gnu/lib-names-64-v2.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h-2
...@@ -10,9 +10,7 @@...@@ -10,9 +10,7 @@
10#define __stub_chflags10#define __stub_chflags
11#define __stub_fchflags11#define __stub_fchflags
12#define __stub_gtty12#define __stub_gtty
13#define __stub_lchmod
14#define __stub_revoke13#define __stub_revoke
15#define __stub_setlogin14#define __stub_setlogin
16#define __stub_sigreturn15#define __stub_sigreturn
17#define __stub_sstk
18#define __stub_stty16#define __stub_stty
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/ieee754.h+66-2
...@@ -21,6 +21,7 @@...@@ -21,6 +21,7 @@
21#include <features.h>21#include <features.h>
2222
23#include <bits/endian.h>23#include <bits/endian.h>
24#include <bits/floatn.h>
2425
25__BEGIN_DECLS26__BEGIN_DECLS
2627
...@@ -111,6 +112,65 @@ union ieee754_double...@@ -111,6 +112,65 @@ union ieee754_double
111#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */112#define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */
112113
113114
115#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
116/* long double is IEEE 128 bit */
117union ieee854_long_double
118 {
119 long double d;
120
121 /* This is the IEEE 854 quad-precision format. */
122 struct
123 {
124#if __BYTE_ORDER == __BIG_ENDIAN
125 unsigned int negative:1;
126 unsigned int exponent:15;
127 /* Together these comprise the mantissa. */
128 unsigned int mantissa0:16;
129 unsigned int mantissa1:32;
130 unsigned int mantissa2:32;
131 unsigned int mantissa3:32;
132#endif /* Big endian. */
133#if __BYTE_ORDER == __LITTLE_ENDIAN
134 /* Together these comprise the mantissa. */
135 unsigned int mantissa3:32;
136 unsigned int mantissa2:32;
137 unsigned int mantissa1:32;
138 unsigned int mantissa0:16;
139 unsigned int exponent:15;
140 unsigned int negative:1;
141#endif /* Little endian. */
142 } ieee;
143
144 /* This format makes it easier to see if a NaN is a signalling NaN. */
145 struct
146 {
147#if __BYTE_ORDER == __BIG_ENDIAN
148 unsigned int negative:1;
149 unsigned int exponent:15;
150 unsigned int quiet_nan:1;
151 /* Together these comprise the mantissa. */
152 unsigned int mantissa0:15;
153 unsigned int mantissa1:32;
154 unsigned int mantissa2:32;
155 unsigned int mantissa3:32;
156#else
157 /* Together these comprise the mantissa. */
158 unsigned int mantissa3:32;
159 unsigned int mantissa2:32;
160 unsigned int mantissa1:32;
161 unsigned int mantissa0:15;
162 unsigned int quiet_nan:1;
163 unsigned int exponent:15;
164 unsigned int negative:1;
165#endif
166 } ieee_nan;
167 };
168
169#define IEEE854_LONG_DOUBLE_BIAS 0x3fff /* Added to exponent. */
170#endif
171
172
173#if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0 || __GNUC_PREREQ (7, 0)
114/* IBM extended format for long double.174/* IBM extended format for long double.
115175
116 Each long double is made up of two IEEE doubles. The value of the176 Each long double is made up of two IEEE doubles. The value of the
...@@ -121,12 +181,16 @@ union ieee754_double...@@ -121,12 +181,16 @@ union ieee754_double
121 -0.0. No other requirements are made; so, for example, 1.0 may be181 -0.0. No other requirements are made; so, for example, 1.0 may be
122 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123 NaN is don't-care. */183 NaN is don't-care. */
124
125union ibm_extended_long_double184union ibm_extended_long_double
126 {185 {
127 long double ld;186# if __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1 && __GNUC_PREREQ (7, 0)
187 __ibm128 ld;
188# else
189 long double ld;
190# endif
128 union ieee754_double d[2];191 union ieee754_double d[2];
129 };192 };
193#endif
130194
131__END_DECLS195__END_DECLS
132196
lib/libc/include/riscv64-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/riscv64-linux-gnu/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/riscv64-linux-gnu/bits/semaphore.h deleted-33
...@@ -1,33 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. RISC-V version.
2 Copyright (C) 2002-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library. If not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SEMAPHORE_H
20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
21#endif
22
23#define __SIZEOF_SEM_T (4 * __SIZEOF_POINTER__)
24
25/* Value returned if `sem_open' failed. */
26#define SEM_FAILED ((sem_t *) 0)
27
28
29typedef union
30{
31 char __size[__SIZEOF_SEM_T];
32 long int __align;
33} sem_t;
\ No newline at end of file
lib/libc/include/riscv64-linux-gnu/bits/typesizes.h+29-9
...@@ -26,31 +26,45 @@...@@ -26,31 +26,45 @@
2626
27/* See <bits/types.h> for the meaning of these macros. This file exists so27/* See <bits/types.h> for the meaning of these macros. This file exists so
28 that <bits/types.h> need not vary across different GNU platforms. */28 that <bits/types.h> need not vary across different GNU platforms. */
29#if __TIMESIZE == 64 && __WORDSIZE == 32
30/* These are the "new" y2038 types defined for architectures added after
31 the 5.1 kernel. */
32# define __INO_T_TYPE __UQUAD_TYPE
33# define __OFF_T_TYPE __SQUAD_TYPE
34# define __RLIM_T_TYPE __UQUAD_TYPE
35# define __BLKCNT_T_TYPE __SQUAD_TYPE
36# define __FSBLKCNT_T_TYPE __UQUAD_TYPE
37# define __FSFILCNT_T_TYPE __UQUAD_TYPE
38# define __TIME_T_TYPE __SQUAD_TYPE
39# define __SUSECONDS_T_TYPE __SQUAD_TYPE
40#else
41# define __INO_T_TYPE __ULONGWORD_TYPE
42# define __OFF_T_TYPE __SLONGWORD_TYPE
43# define __RLIM_T_TYPE __ULONGWORD_TYPE
44# define __BLKCNT_T_TYPE __SLONGWORD_TYPE
45# define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
46# define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47# define __TIME_T_TYPE __SLONGWORD_TYPE
48# define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
49#endif
2950
30#define __DEV_T_TYPE __UQUAD_TYPE51#define __DEV_T_TYPE __UQUAD_TYPE
31#define __UID_T_TYPE __U32_TYPE52#define __UID_T_TYPE __U32_TYPE
32#define __GID_T_TYPE __U32_TYPE53#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
34#define __INO64_T_TYPE __UQUAD_TYPE54#define __INO64_T_TYPE __UQUAD_TYPE
35#define __MODE_T_TYPE __U32_TYPE55#define __MODE_T_TYPE __U32_TYPE
36#define __NLINK_T_TYPE __U32_TYPE56#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
38#define __OFF64_T_TYPE __SQUAD_TYPE57#define __OFF64_T_TYPE __SQUAD_TYPE
39#define __PID_T_TYPE __S32_TYPE58#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
41#define __RLIM64_T_TYPE __UQUAD_TYPE59#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
43#define __BLKCNT64_T_TYPE __SQUAD_TYPE60#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
45#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE61#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
47#define __FSFILCNT64_T_TYPE __UQUAD_TYPE62#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
48#define __FSWORD_T_TYPE __SWORD_TYPE63#define __FSWORD_T_TYPE __SWORD_TYPE
49#define __ID_T_TYPE __U32_TYPE64#define __ID_T_TYPE __U32_TYPE
50#define __CLOCK_T_TYPE __SLONGWORD_TYPE65#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
52#define __USECONDS_T_TYPE __U32_TYPE66#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
54#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
55#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
56#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -62,7 +76,7 @@...@@ -62,7 +76,7 @@
62#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE76#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
63#define __CPU_MASK_TYPE __ULONGWORD_TYPE77#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
66/* Tell the libc code that off_t and off64_t are actually the same type80/* Tell the libc code that off_t and off64_t are actually the same type
67 for all ABI purposes, even if possibly expressed as different base types81 for all ABI purposes, even if possibly expressed as different base types
68 for C type-checking purposes. */82 for C type-checking purposes. */
...@@ -76,11 +90,17 @@...@@ -76,11 +90,17 @@
7690
77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */91/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
78# define __STATFS_MATCHES_STATFS64 192# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
79#else96#else
80# define __RLIM_T_MATCHES_RLIM64_T 097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
82# define __STATFS_MATCHES_STATFS64 099# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83#endif102#endif
103
84/* Number of descriptors that can fit in an `fd_set'. */104/* Number of descriptors that can fit in an `fd_set'. */
85#define __FD_SETSIZE 1024105#define __FD_SETSIZE 1024
86106
lib/libc/include/riscv64-linux-gnu/gnu/lib-names-lp64.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h+1-4
...@@ -32,10 +32,7 @@...@@ -32,10 +32,7 @@
32#define __stub_fetestexcept32#define __stub_fetestexcept
33#define __stub_feupdateenv33#define __stub_feupdateenv
34#define __stub_gtty34#define __stub_gtty
35#define __stub_lchmod
36#define __stub_revoke35#define __stub_revoke
37#define __stub_setlogin36#define __stub_setlogin
38#define __stub_sigreturn37#define __stub_sigreturn
39#define __stub_sstk
40#define __stub_stty
41#define __stub_sysctl
\ No newline at end of file
38#define __stub_stty
\ No newline at end of file
lib/libc/include/s390x-linux-gnu/bits/fenv.h+2-2
...@@ -73,14 +73,14 @@ typedef unsigned int fexcept_t; /* size of fpc */...@@ -73,14 +73,14 @@ typedef unsigned int fexcept_t; /* size of fpc */
7373
7474
75/* Type representing floating-point environment. This function corresponds75/* Type representing floating-point environment. This function corresponds
76 to the layout of the block written by the `fstenv'. */76 to the layout of the block used by fegetenv and fesetenv. */
77typedef struct77typedef struct
78{78{
79 fexcept_t __fpc;79 fexcept_t __fpc;
80 void *__unused;80 void *__unused;
81 /* The field __unused (formerly __ieee_instruction_pointer) is a relict from81 /* The field __unused (formerly __ieee_instruction_pointer) is a relict from
82 commit "Remove PTRACE_PEEKUSER" (87b9b50f0d4b92248905e95a06a13c513dc45e59)82 commit "Remove PTRACE_PEEKUSER" (87b9b50f0d4b92248905e95a06a13c513dc45e59)
83 and isn´t used anymore. */83 and isn't used anymore. */
84} fenv_t;84} fenv_t;
8585
86/* If the default argument is used we use this value. */86/* If the default argument is used we use this value. */
lib/libc/include/s390x-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/s390x-linux-gnu/bits/long-double.h+1-1
...@@ -22,4 +22,4 @@...@@ -22,4 +22,4 @@
22# define __NO_LONG_DOUBLE_MATH 122# define __NO_LONG_DOUBLE_MATH 1
23# endif23# endif
24#endif24#endif
25#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
25#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/s390x-linux-gnu/bits/semaphore.h deleted-39
...@@ -1,39 +0,0 @@
1/* Copyright (C) 2003-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Martin Schwidefsky <schwidefsky@de.ibm.com>, 2003.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SEMAPHORE_H
20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
26# define __SIZEOF_SEM_T 32
27#else
28# define __SIZEOF_SEM_T 16
29#endif
30
31/* Value returned if `sem_open' failed. */
32#define SEM_FAILED ((sem_t *) 0)
33
34
35typedef union
36{
37 char __size[__SIZEOF_SEM_T];
38 long int __align;
39} sem_t;
\ No newline at end of file
lib/libc/include/s390x-linux-gnu/bits/typesizes.h+7
...@@ -50,6 +50,7 @@...@@ -50,6 +50,7 @@
50#define __TIME_T_TYPE __SLONGWORD_TYPE50#define __TIME_T_TYPE __SLONGWORD_TYPE
51#define __USECONDS_T_TYPE __U32_TYPE51#define __USECONDS_T_TYPE __U32_TYPE
52#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE52#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
53#define __DADDR_T_TYPE __S32_TYPE54#define __DADDR_T_TYPE __S32_TYPE
54#define __KEY_T_TYPE __S32_TYPE55#define __KEY_T_TYPE __S32_TYPE
55#define __CLOCKID_T_TYPE __S32_TYPE56#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -81,10 +82,16 @@...@@ -81,10 +82,16 @@
8182
82/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */83/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
83# define __STATFS_MATCHES_STATFS64 184# define __STATFS_MATCHES_STATFS64 1
85
86/* And for getitimer, setitimer and rusage */
87# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
84#else88#else
85# define __RLIM_T_MATCHES_RLIM64_T 089# define __RLIM_T_MATCHES_RLIM64_T 0
8690
87# define __STATFS_MATCHES_STATFS64 091# define __STATFS_MATCHES_STATFS64 0
92
93/* And for getitimer, setitimer and rusage */
94# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
88#endif95#endif
8996
90/* Number of descriptors that can fit in an `fd_set'. */97/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/s390x-linux-gnu/gnu/lib-names-64.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/sparc-linux-gnu/bits/fenv.h-9
...@@ -83,15 +83,6 @@ typedef unsigned long int fenv_t;...@@ -83,15 +83,6 @@ typedef unsigned long int fenv_t;
83# define FE_NOMASK_ENV ((const fenv_t *) -2)83# define FE_NOMASK_ENV ((const fenv_t *) -2)
84#endif84#endif
8585
86/* For internal use only: access the fp state register. */
87#if __WORDSIZE == 64
88# define __fenv_stfsr(X) __asm__ __volatile__ ("stx %%fsr,%0" : "=m" (X))
89# define __fenv_ldfsr(X) __asm__ __volatile__ ("ldx %0,%%fsr" : : "m" (X))
90#else
91# define __fenv_stfsr(X) __asm__ __volatile__ ("st %%fsr,%0" : "=m" (X))
92# define __fenv_ldfsr(X) __asm__ __volatile__ ("ld %0,%%fsr" : : "m" (X))
93#endif
94
95#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)86#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
96/* Type representing floating-point control modes. */87/* Type representing floating-point control modes. */
97typedef unsigned long int femode_t;88typedef unsigned long int femode_t;
lib/libc/include/sparc-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/long-double.h+1-1
...@@ -24,4 +24,4 @@...@@ -24,4 +24,4 @@
24# define __NO_LONG_DOUBLE_MATH 124# define __NO_LONG_DOUBLE_MATH 1
25# endif25# endif
26#endif26#endif
27#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
27#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/msq-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct msqid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __MSQ_PAD_AFTER_TIME 0
26#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/sparc-linux-gnu/bits/sem-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct semid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SEM_PAD_AFTER_TIME 0
26#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. SPARC version.
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <https://www.gnu.org/licenses/>. */
19
20#ifndef _SEMAPHORE_H
21# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
22#endif
23
24#include <bits/wordsize.h>
25
26#if __WORDSIZE == 64
27# define __SIZEOF_SEM_T 32
28#else
29# define __SIZEOF_SEM_T 16
30#endif
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/shm-pad.h deleted-28
...@@ -1,28 +0,0 @@
1/* Define where padding goes in struct shmid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SHM_PAD_AFTER_TIME 0
26#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
27#define __SHM_SEGSZ_AFTER_TIME 1
28#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/signum-arch.h created+66
...@@ -0,0 +1,66 @@
1/* Signal number definitions. Linux/SPARC version.
2 Copyright (C) 1996-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_ARCH_H
20#define _BITS_SIGNUM_ARCH_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum-arch.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/SPARC systems. Signal values on this platform were chosen
28 for SunOS binary compatibility. */
29
30#define SIGEMT 7 /* Emulator trap. */
31#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */
32#define SIGPWR SIGLOST /* Power failure imminent (SysV). */
33
34/* Historical signals specified by POSIX. */
35#define SIGBUS 10 /* Bus error. */
36#define SIGSYS 12 /* Bad system call. */
37
38/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
39#define SIGURG 16 /* Urgent data is available at a socket. */
40#define SIGSTOP 17 /* Stop, unblockable. */
41#define SIGTSTP 18 /* Keyboard stop. */
42#define SIGCONT 19 /* Continue. */
43#define SIGCHLD 20 /* Child terminated or stopped. */
44#define SIGTTIN 21 /* Background read from control terminal. */
45#define SIGTTOU 22 /* Background write to control terminal. */
46#define SIGPOLL 23 /* Pollable event occurred (System V). */
47#define SIGXCPU 24 /* CPU time limit exceeded. */
48#define SIGVTALRM 26 /* Virtual timer expired. */
49#define SIGPROF 27 /* Profiling timer expired. */
50#define SIGXFSZ 25 /* File size limit exceeded. */
51#define SIGUSR1 30 /* User-defined signal 1. */
52#define SIGUSR2 31 /* User-defined signal 2. */
53
54/* Nonstandard signals found in all modern POSIX systems
55 (including both BSD and Linux). */
56#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
57
58/* Archaic names for compatibility. */
59#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
60#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
61#define SIGCLD SIGCHLD /* Old System V name */
62
63#define __SIGRTMIN 32
64#define __SIGRTMAX 64
65
66#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/signum.h deleted-39
...@@ -1,39 +0,0 @@
1/* Signal number definitions. Linux/SPARC version.
2 Copyright (C) 1996-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/SPARC systems. Signal values on this platform were chosen
30 for SunOS binary compatibility. */
31
32#define SIGEMT 7 /* Emulator trap. */
33#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */
34#define SIGPWR SIGLOST /* Power failure imminent (SysV). */
35
36#undef __SIGRTMAX
37#define __SIGRTMAX 64
38
39#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Linux/SPARC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 unsigned long int __msg_stime_high;
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_rtime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_ctime_high;
34 __time_t msg_ctime; /* time of last change */
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* Sparc implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_otime; /* last semop() time */
30 __syscall_ulong_t __sem_ctime_high;
31 __time_t sem_ctime; /* last time changed by semctl() */
32#else
33 __time_t sem_otime; /* last semop() time */
34 __time_t sem_ctime; /* last time changed by semctl() */
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/types/struct_shmid_ds.h created+45
...@@ -0,0 +1,45 @@
1/* Linux/SPARC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 unsigned long int __shm_atime_high;
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_dtime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_ctime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34#else
35 __time_t shm_atime; /* time of last shmat() */
36 __time_t shm_dtime; /* time of last shmdt() */
37 __time_t shm_ctime; /* time of last change by shmctl() */
38#endif
39 size_t shm_segsz; /* size of segment in bytes */
40 __pid_t shm_cpid; /* pid of creator */
41 __pid_t shm_lpid; /* pid of last shmop */
42 shmatt_t shm_nattch; /* number of current attaches */
43 __syscall_ulong_t __glibc_reserved5;
44 __syscall_ulong_t __glibc_reserved6;
45 };
\ No newline at end of file
lib/libc/include/sparc-linux-gnu/bits/typesizes.h+7
...@@ -50,6 +50,7 @@...@@ -50,6 +50,7 @@
50#define __TIME_T_TYPE __SLONGWORD_TYPE50#define __TIME_T_TYPE __SLONGWORD_TYPE
51#define __USECONDS_T_TYPE __U32_TYPE51#define __USECONDS_T_TYPE __U32_TYPE
52#define __SUSECONDS_T_TYPE __S32_TYPE52#define __SUSECONDS_T_TYPE __S32_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
53#define __DADDR_T_TYPE __S32_TYPE54#define __DADDR_T_TYPE __S32_TYPE
54#define __KEY_T_TYPE __S32_TYPE55#define __KEY_T_TYPE __S32_TYPE
55#define __CLOCKID_T_TYPE __S32_TYPE56#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -75,10 +76,16 @@...@@ -75,10 +76,16 @@
7576
76/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
77# define __STATFS_MATCHES_STATFS64 178# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
78#else82#else
79# define __RLIM_T_MATCHES_RLIM64_T 083# define __RLIM_T_MATCHES_RLIM64_T 0
8084
81# define __STATFS_MATCHES_STATFS64 085# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
82#endif89#endif
8390
84/* Number of descriptors that can fit in an `fd_set'. */91/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/sparc-linux-gnu/gnu/lib-names-64.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/sparcv9-linux-gnu/bits/fenv.h-9
...@@ -83,15 +83,6 @@ typedef unsigned long int fenv_t;...@@ -83,15 +83,6 @@ typedef unsigned long int fenv_t;
83# define FE_NOMASK_ENV ((const fenv_t *) -2)83# define FE_NOMASK_ENV ((const fenv_t *) -2)
84#endif84#endif
8585
86/* For internal use only: access the fp state register. */
87#if __WORDSIZE == 64
88# define __fenv_stfsr(X) __asm__ __volatile__ ("stx %%fsr,%0" : "=m" (X))
89# define __fenv_ldfsr(X) __asm__ __volatile__ ("ldx %0,%%fsr" : : "m" (X))
90#else
91# define __fenv_stfsr(X) __asm__ __volatile__ ("st %%fsr,%0" : "=m" (X))
92# define __fenv_ldfsr(X) __asm__ __volatile__ ("ld %0,%%fsr" : : "m" (X))
93#endif
94
95#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)86#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
96/* Type representing floating-point control modes. */87/* Type representing floating-point control modes. */
97typedef unsigned long int femode_t;88typedef unsigned long int femode_t;
lib/libc/include/sparcv9-linux-gnu/bits/floatn.h deleted-97
...@@ -1,97 +0,0 @@
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
2 Copyright (C) 2017-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_FLOATN_H
20#define _BITS_FLOATN_H
21
22#include <features.h>
23#include <bits/long-double.h>
24
25/* Defined to 1 if the current compiler invocation provides a
26 floating-point type with the IEEE 754 binary128 format, and this
27 glibc includes corresponding *f128 interfaces for it. */
28#ifndef __NO_LONG_DOUBLE_MATH
29# define __HAVE_FLOAT128 1
30#else
31/* glibc does not support _Float128 for platforms where long double is
32 normally binary128 when building with long double as binary64.
33 GCC's default for supported scalar modes does not support it either
34 in that case. */
35# define __HAVE_FLOAT128 0
36#endif
37
38/* Defined to 1 if __HAVE_FLOAT128 is 1 and the type is ABI-distinct
39 from the default float, double and long double types in this glibc. */
40#define __HAVE_DISTINCT_FLOAT128 0
41
42/* Defined to 1 if the current compiler invocation provides a
43 floating-point type with the right format for _Float64x, and this
44 glibc includes corresponding *f64x interfaces for it. */
45#define __HAVE_FLOAT64X __HAVE_FLOAT128
46
47/* Defined to 1 if __HAVE_FLOAT64X is 1 and _Float64x has the format
48 of long double. Otherwise, if __HAVE_FLOAT64X is 1, _Float64x has
49 the format of _Float128, which must be different from that of long
50 double. */
51#define __HAVE_FLOAT64X_LONG_DOUBLE __HAVE_FLOAT128
52
53#ifndef __ASSEMBLER__
54
55/* Defined to concatenate the literal suffix to be used with _Float128
56 types, if __HAVE_FLOAT128 is 1. */
57# if __HAVE_FLOAT128
58# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
59/* The literal suffix f128 exists only since GCC 7.0. */
60# define __f128(x) x##l
61# else
62# define __f128(x) x##f128
63# endif
64# endif
65
66/* Defined to a complex binary128 type if __HAVE_FLOAT128 is 1. */
67# if __HAVE_FLOAT128
68# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
69# define __CFLOAT128 _Complex long double
70# else
71# define __CFLOAT128 _Complex _Float128
72# endif
73# endif
74
75/* The remaining of this file provides support for older compilers. */
76# if __HAVE_FLOAT128
77
78/* The type _Float128 exists only since GCC 7.0. */
79# if !__GNUC_PREREQ (7, 0) || defined __cplusplus
80typedef long double _Float128;
81# endif
82
83/* Various built-in functions do not exist before GCC 7.0. */
84# if !__GNUC_PREREQ (7, 0)
85# define __builtin_huge_valf128() (__builtin_huge_vall ())
86# define __builtin_inff128() (__builtin_infl ())
87# define __builtin_nanf128(x) (__builtin_nanl (x))
88# define __builtin_nansf128(x) (__builtin_nansl (x))
89# endif
90
91# endif
92
93#endif /* !__ASSEMBLER__. */
94
95#include <bits/floatn-common.h>
96
97#endif /* _BITS_FLOATN_H */
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/long-double.h+1-1
...@@ -24,4 +24,4 @@...@@ -24,4 +24,4 @@
24# define __NO_LONG_DOUBLE_MATH 124# define __NO_LONG_DOUBLE_MATH 1
25# endif25# endif
26#endif26#endif
27#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
27#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/msq-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct msqid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq-pad.h> directly; include <sys/msg.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __MSQ_PAD_AFTER_TIME 0
26#define __MSQ_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/resource.h+1-1
...@@ -98,7 +98,7 @@ enum __rlimit_resource...@@ -98,7 +98,7 @@ enum __rlimit_resource
98 __RLIMIT_RTPRIO = 14,98 __RLIMIT_RTPRIO = 14,
99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO99#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102 scheduling policy may consume without making a blocking system102 scheduling policy may consume without making a blocking system
103 call before being forcibly descheduled. */103 call before being forcibly descheduled. */
104 __RLIMIT_RTTIME = 15,104 __RLIMIT_RTTIME = 15,
lib/libc/include/sparcv9-linux-gnu/bits/sem-pad.h deleted-26
...@@ -1,26 +0,0 @@
1/* Define where padding goes in struct semid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SEM_PAD_AFTER_TIME 0
26#define __SEM_PAD_BEFORE_TIME (__TIMESIZE == 32)
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Machine-specific POSIX semaphore type layouts. SPARC version.
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4 Contributed by Jakub Jelinek <jakub@redhat.com>, 2003.
5
6 The GNU C Library is free software; you can redistribute it and/or
7 modify it under the terms of the GNU Lesser General Public
8 License as published by the Free Software Foundation; either
9 version 2.1 of the License, or (at your option) any later version.
10
11 The GNU C Library is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 Lesser General Public License for more details.
15
16 You should have received a copy of the GNU Lesser General Public
17 License along with the GNU C Library; if not, see
18 <https://www.gnu.org/licenses/>. */
19
20#ifndef _SEMAPHORE_H
21# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
22#endif
23
24#include <bits/wordsize.h>
25
26#if __WORDSIZE == 64
27# define __SIZEOF_SEM_T 32
28#else
29# define __SIZEOF_SEM_T 16
30#endif
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/shm-pad.h deleted-28
...@@ -1,28 +0,0 @@
1/* Define where padding goes in struct shmid_ds. SPARC version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never use <bits/shm-pad.h> directly; include <sys/shm.h> instead."
21#endif
22
23#include <bits/timesize.h>
24
25#define __SHM_PAD_AFTER_TIME 0
26#define __SHM_PAD_BEFORE_TIME (__TIMESIZE == 32)
27#define __SHM_SEGSZ_AFTER_TIME 1
28#define __SHM_PAD_BETWEEN_TIME_AND_SEGSZ 0
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/signum-arch.h created+66
...@@ -0,0 +1,66 @@
1/* Signal number definitions. Linux/SPARC version.
2 Copyright (C) 1996-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_ARCH_H
20#define _BITS_SIGNUM_ARCH_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum-arch.h> directly; use <signal.h> instead."
24#endif
25
26/* Adjustments and additions to the signal number constants for
27 Linux/SPARC systems. Signal values on this platform were chosen
28 for SunOS binary compatibility. */
29
30#define SIGEMT 7 /* Emulator trap. */
31#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */
32#define SIGPWR SIGLOST /* Power failure imminent (SysV). */
33
34/* Historical signals specified by POSIX. */
35#define SIGBUS 10 /* Bus error. */
36#define SIGSYS 12 /* Bad system call. */
37
38/* New(er) POSIX signals (1003.1-2008, 1003.1-2013). */
39#define SIGURG 16 /* Urgent data is available at a socket. */
40#define SIGSTOP 17 /* Stop, unblockable. */
41#define SIGTSTP 18 /* Keyboard stop. */
42#define SIGCONT 19 /* Continue. */
43#define SIGCHLD 20 /* Child terminated or stopped. */
44#define SIGTTIN 21 /* Background read from control terminal. */
45#define SIGTTOU 22 /* Background write to control terminal. */
46#define SIGPOLL 23 /* Pollable event occurred (System V). */
47#define SIGXCPU 24 /* CPU time limit exceeded. */
48#define SIGVTALRM 26 /* Virtual timer expired. */
49#define SIGPROF 27 /* Profiling timer expired. */
50#define SIGXFSZ 25 /* File size limit exceeded. */
51#define SIGUSR1 30 /* User-defined signal 1. */
52#define SIGUSR2 31 /* User-defined signal 2. */
53
54/* Nonstandard signals found in all modern POSIX systems
55 (including both BSD and Linux). */
56#define SIGWINCH 28 /* Window size change (4.3 BSD, Sun). */
57
58/* Archaic names for compatibility. */
59#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
60#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
61#define SIGCLD SIGCHLD /* Old System V name */
62
63#define __SIGRTMIN 32
64#define __SIGRTMAX 64
65
66#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/signum.h deleted-39
...@@ -1,39 +0,0 @@
1/* Signal number definitions. Linux/SPARC version.
2 Copyright (C) 1996-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _BITS_SIGNUM_H
20#define _BITS_SIGNUM_H 1
21
22#ifndef _SIGNAL_H
23#error "Never include <bits/signum.h> directly; use <signal.h> instead."
24#endif
25
26#include <bits/signum-generic.h>
27
28/* Adjustments and additions to the signal number constants for
29 Linux/SPARC systems. Signal values on this platform were chosen
30 for SunOS binary compatibility. */
31
32#define SIGEMT 7 /* Emulator trap. */
33#define SIGLOST 29 /* Resource lost (Sun); server died (GNU). */
34#define SIGPWR SIGLOST /* Power failure imminent (SysV). */
35
36#undef __SIGRTMAX
37#define __SIGRTMAX 64
38
39#endif /* <signal.h> included. */
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/types/struct_msqid_ds.h created+47
...@@ -0,0 +1,47 @@
1/* Linux/SPARC implementation of the SysV message struct msqid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_MSG_H
20# error "Never use <bits/msq.h> directly; include <sys/msg.h> instead."
21#endif
22
23/* Structure of record for one message inside the kernel.
24 The type `struct msg' is opaque. */
25struct msqid_ds
26{
27 struct ipc_perm msg_perm; /* structure describing operation permission */
28#if __TIMESIZE == 32
29 unsigned long int __msg_stime_high;
30 __time_t msg_stime; /* time of last msgsnd command */
31 unsigned long int __msg_rtime_high;
32 __time_t msg_rtime; /* time of last msgsnd command */
33 unsigned long int __msg_ctime_high;
34 __time_t msg_ctime; /* time of last change */
35#else
36 __time_t msg_stime; /* time of last msgsnd command */
37 __time_t msg_rtime; /* time of last msgsnd command */
38 __time_t msg_ctime; /* time of last change */
39#endif
40 __syscall_ulong_t __msg_cbytes; /* current number of bytes on queue */
41 msgqnum_t msg_qnum; /* number of messages currently on queue */
42 msglen_t msg_qbytes; /* max number of bytes allowed on queue */
43 __pid_t msg_lspid; /* pid of last msgsnd() */
44 __pid_t msg_lrpid; /* pid of last msgrcv() */
45 __syscall_ulong_t __glibc_reserved4;
46 __syscall_ulong_t __glibc_reserved5;
47};
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/types/struct_semid_ds.h created+39
...@@ -0,0 +1,39 @@
1/* Sparc implementation of the semaphore struct semid_ds
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_otime; /* last semop() time */
30 __syscall_ulong_t __sem_ctime_high;
31 __time_t sem_ctime; /* last time changed by semctl() */
32#else
33 __time_t sem_otime; /* last semop() time */
34 __time_t sem_ctime; /* last time changed by semctl() */
35#endif
36 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
37 __syscall_ulong_t __glibc_reserved3;
38 __syscall_ulong_t __glibc_reserved4;
39};
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/types/struct_shmid_ds.h created+45
...@@ -0,0 +1,45 @@
1/* Linux/SPARC implementation of the shared memory struct shmid_ds.
2 Copyright (C) 2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SHM_H
20# error "Never include <bits/types/struct_shmid_ds.h> directly; use <sys/shm.h> instead."
21#endif
22
23/* Data structure describing a shared memory segment. */
24struct shmid_ds
25 {
26 struct ipc_perm shm_perm; /* operation permission struct */
27#if __TIMESIZE == 32
28 unsigned long int __shm_atime_high;
29 __time_t shm_atime; /* time of last shmat() */
30 unsigned long int __shm_dtime_high;
31 __time_t shm_dtime; /* time of last shmdt() */
32 unsigned long int __shm_ctime_high;
33 __time_t shm_ctime; /* time of last change by shmctl() */
34#else
35 __time_t shm_atime; /* time of last shmat() */
36 __time_t shm_dtime; /* time of last shmdt() */
37 __time_t shm_ctime; /* time of last change by shmctl() */
38#endif
39 size_t shm_segsz; /* size of segment in bytes */
40 __pid_t shm_cpid; /* pid of creator */
41 __pid_t shm_lpid; /* pid of last shmop */
42 shmatt_t shm_nattch; /* number of current attaches */
43 __syscall_ulong_t __glibc_reserved5;
44 __syscall_ulong_t __glibc_reserved6;
45 };
\ No newline at end of file
lib/libc/include/sparcv9-linux-gnu/bits/typesizes.h+7
...@@ -50,6 +50,7 @@...@@ -50,6 +50,7 @@
50#define __TIME_T_TYPE __SLONGWORD_TYPE50#define __TIME_T_TYPE __SLONGWORD_TYPE
51#define __USECONDS_T_TYPE __U32_TYPE51#define __USECONDS_T_TYPE __U32_TYPE
52#define __SUSECONDS_T_TYPE __S32_TYPE52#define __SUSECONDS_T_TYPE __S32_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
53#define __DADDR_T_TYPE __S32_TYPE54#define __DADDR_T_TYPE __S32_TYPE
54#define __KEY_T_TYPE __S32_TYPE55#define __KEY_T_TYPE __S32_TYPE
55#define __CLOCKID_T_TYPE __S32_TYPE56#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -75,10 +76,16 @@...@@ -75,10 +76,16 @@
7576
76/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */77/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
77# define __STATFS_MATCHES_STATFS64 178# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
78#else82#else
79# define __RLIM_T_MATCHES_RLIM64_T 083# define __RLIM_T_MATCHES_RLIM64_T 0
8084
81# define __STATFS_MATCHES_STATFS64 085# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
82#endif89#endif
8390
84/* Number of descriptors that can fit in an `fd_set'. */91/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/x86_64-linux-gnu/bits/fenv.h-54
...@@ -113,58 +113,4 @@ femode_t;...@@ -113,58 +113,4 @@ femode_t;
113113
114/* Default floating-point control modes. */114/* Default floating-point control modes. */
115# define FE_DFL_MODE ((const femode_t *) -1L)115# define FE_DFL_MODE ((const femode_t *) -1L)
116#endif
117
118
119#ifdef __USE_EXTERN_INLINES
120__BEGIN_DECLS
121
122/* Optimized versions. */
123#ifndef _LIBC
124extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
125#endif
126__extern_always_inline void
127__NTH (__feraiseexcept_invalid_divbyzero (int __excepts))
128{
129 if ((FE_INVALID & __excepts) != 0)
130 {
131 /* One example of an invalid operation is 0.0 / 0.0. */
132 float __f = 0.0;
133
134# ifdef __SSE_MATH__
135 __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
136# else
137 __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
138 : "=t" (__f) : "0" (__f));
139# endif
140 (void) &__f;
141 }
142 if ((FE_DIVBYZERO & __excepts) != 0)
143 {
144 float __f = 1.0;
145 float __g = 0.0;
146
147# ifdef __SSE_MATH__
148 __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
149# else
150 __asm__ __volatile__ ("fdivp %%st, %%st(1); fwait"
151 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
152# endif
153 (void) &__f;
154 }
155}
156__extern_inline int
157__NTH (feraiseexcept (int __excepts))
158{
159 if (__builtin_constant_p (__excepts)
160 && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
161 {
162 __feraiseexcept_invalid_divbyzero (__excepts);
163 return 0;
164 }
165
166 return __feraiseexcept_renamed (__excepts);
167}
168
169__END_DECLS
170#endif116#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/select.h deleted-63
...@@ -1,63 +0,0 @@
1/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_SELECT_H
19# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
20#endif
21
22#include <bits/wordsize.h>
23
24
25#if defined __GNUC__ && __GNUC__ >= 2
26
27# if __WORDSIZE == 64
28# define __FD_ZERO_STOS "stosq"
29# else
30# define __FD_ZERO_STOS "stosl"
31# endif
32
33# define __FD_ZERO(fdsp) \
34 do { \
35 int __d0, __d1; \
36 __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
37 : "=c" (__d0), "=D" (__d1) \
38 : "a" (0), "0" (sizeof (fd_set) \
39 / sizeof (__fd_mask)), \
40 "1" (&__FDS_BITS (fdsp)[0]) \
41 : "memory"); \
42 } while (0)
43
44#else /* ! GNU CC */
45
46/* We don't use `memset' because this would require a prototype and
47 the array isn't too big. */
48# define __FD_ZERO(set) \
49 do { \
50 unsigned int __i; \
51 fd_set *__arr = (set); \
52 for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
53 __FDS_BITS (__arr)[__i] = 0; \
54 } while (0)
55
56#endif /* GNU CC */
57
58#define __FD_SET(d, set) \
59 ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
60#define __FD_CLR(d, set) \
61 ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
62#define __FD_ISSET(d, set) \
63 ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. x86 version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 1
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SEMAPHORE_H
20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
26# define __SIZEOF_SEM_T 32
27#else
28# define __SIZEOF_SEM_T 16
29#endif
30
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/sysctl.h deleted-20
...@@ -1,20 +0,0 @@
1/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#if defined __x86_64__ && defined __ILP32__
19# error "sysctl system call is unsupported in x32 kernel"
20#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/types/struct_semid_ds.h created+34
...@@ -0,0 +1,34 @@
1/* x86 implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_ctime; /* last time changed by semctl() */
30 __syscall_ulong_t __sem_ctime_high;
31 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
32 __syscall_ulong_t __glibc_reserved3;
33 __syscall_ulong_t __glibc_reserved4;
34};
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/typesizes.h+6
...@@ -64,6 +64,7 @@...@@ -64,6 +64,7 @@
64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
65#define __USECONDS_T_TYPE __U32_TYPE65#define __USECONDS_T_TYPE __U32_TYPE
66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
67#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
68#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
69#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -87,10 +88,15 @@...@@ -87,10 +88,15 @@
8788
88/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */89/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
89# define __STATFS_MATCHES_STATFS64 190# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
90#else94#else
91# define __RLIM_T_MATCHES_RLIM64_T 095# define __RLIM_T_MATCHES_RLIM64_T 0
9296
93# define __STATFS_MATCHES_STATFS64 097# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94#endif100#endif
95101
96/* Number of descriptors that can fit in an `fd_set'. */102/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/x86_64-linux-gnu/gnu/lib-names-64.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h-2
...@@ -11,9 +11,7 @@...@@ -11,9 +11,7 @@
11#define __stub_chflags11#define __stub_chflags
12#define __stub_fchflags12#define __stub_fchflags
13#define __stub_gtty13#define __stub_gtty
14#define __stub_lchmod
15#define __stub_revoke14#define __stub_revoke
16#define __stub_setlogin15#define __stub_setlogin
17#define __stub_sigreturn16#define __stub_sigreturn
18#define __stub_sstk
19#define __stub_stty17#define __stub_stty
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/fenv.h-54
...@@ -113,58 +113,4 @@ femode_t;...@@ -113,58 +113,4 @@ femode_t;
113113
114/* Default floating-point control modes. */114/* Default floating-point control modes. */
115# define FE_DFL_MODE ((const femode_t *) -1L)115# define FE_DFL_MODE ((const femode_t *) -1L)
116#endif
117
118
119#ifdef __USE_EXTERN_INLINES
120__BEGIN_DECLS
121
122/* Optimized versions. */
123#ifndef _LIBC
124extern int __REDIRECT_NTH (__feraiseexcept_renamed, (int), feraiseexcept);
125#endif
126__extern_always_inline void
127__NTH (__feraiseexcept_invalid_divbyzero (int __excepts))
128{
129 if ((FE_INVALID & __excepts) != 0)
130 {
131 /* One example of an invalid operation is 0.0 / 0.0. */
132 float __f = 0.0;
133
134# ifdef __SSE_MATH__
135 __asm__ __volatile__ ("divss %0, %0 " : : "x" (__f));
136# else
137 __asm__ __volatile__ ("fdiv %%st, %%st(0); fwait"
138 : "=t" (__f) : "0" (__f));
139# endif
140 (void) &__f;
141 }
142 if ((FE_DIVBYZERO & __excepts) != 0)
143 {
144 float __f = 1.0;
145 float __g = 0.0;
146
147# ifdef __SSE_MATH__
148 __asm__ __volatile__ ("divss %1, %0" : : "x" (__f), "x" (__g));
149# else
150 __asm__ __volatile__ ("fdivp %%st, %%st(1); fwait"
151 : "=t" (__f) : "0" (__f), "u" (__g) : "st(1)");
152# endif
153 (void) &__f;
154 }
155}
156__extern_inline int
157__NTH (feraiseexcept (int __excepts))
158{
159 if (__builtin_constant_p (__excepts)
160 && (__excepts & ~(FE_INVALID | FE_DIVBYZERO)) == 0)
161 {
162 __feraiseexcept_invalid_divbyzero (__excepts);
163 return 0;
164 }
165
166 return __feraiseexcept_renamed (__excepts);
167}
168
169__END_DECLS
170#endif116#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/long-double.h+1-1
...@@ -18,4 +18,4 @@...@@ -18,4 +18,4 @@
1818
19/* long double is distinct from double, so there is nothing to19/* long double is distinct from double, so there is nothing to
20 define here. */20 define here. */
21#define __LONG_DOUBLE_USES_FLOAT128 0
\ No newline at end of file
21#define __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI 0
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/select.h deleted-63
...@@ -1,63 +0,0 @@
1/* Copyright (C) 1997-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#ifndef _SYS_SELECT_H
19# error "Never use <bits/select.h> directly; include <sys/select.h> instead."
20#endif
21
22#include <bits/wordsize.h>
23
24
25#if defined __GNUC__ && __GNUC__ >= 2
26
27# if __WORDSIZE == 64
28# define __FD_ZERO_STOS "stosq"
29# else
30# define __FD_ZERO_STOS "stosl"
31# endif
32
33# define __FD_ZERO(fdsp) \
34 do { \
35 int __d0, __d1; \
36 __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
37 : "=c" (__d0), "=D" (__d1) \
38 : "a" (0), "0" (sizeof (fd_set) \
39 / sizeof (__fd_mask)), \
40 "1" (&__FDS_BITS (fdsp)[0]) \
41 : "memory"); \
42 } while (0)
43
44#else /* ! GNU CC */
45
46/* We don't use `memset' because this would require a prototype and
47 the array isn't too big. */
48# define __FD_ZERO(set) \
49 do { \
50 unsigned int __i; \
51 fd_set *__arr = (set); \
52 for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
53 __FDS_BITS (__arr)[__i] = 0; \
54 } while (0)
55
56#endif /* GNU CC */
57
58#define __FD_SET(d, set) \
59 ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
60#define __FD_CLR(d, set) \
61 ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
62#define __FD_ISSET(d, set) \
63 ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/sem-pad.h deleted-24
...@@ -1,24 +0,0 @@
1/* Define where padding goes in struct semid_ds. x86 version.
2 Copyright (C) 2018-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never use <bits/sem-pad.h> directly; include <sys/sem.h> instead."
21#endif
22
23#define __SEM_PAD_AFTER_TIME 1
24#define __SEM_PAD_BEFORE_TIME 0
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/semaphore.h deleted-40
...@@ -1,40 +0,0 @@
1/* Copyright (C) 2002-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3 Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SEMAPHORE_H
20# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
21#endif
22
23#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
26# define __SIZEOF_SEM_T 32
27#else
28# define __SIZEOF_SEM_T 16
29#endif
30
31
32/* Value returned if `sem_open' failed. */
33#define SEM_FAILED ((sem_t *) 0)
34
35
36typedef union
37{
38 char __size[__SIZEOF_SEM_T];
39 long int __align;
40} sem_t;
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/sysctl.h deleted-20
...@@ -1,20 +0,0 @@
1/* Copyright (C) 2012-2020 Free Software Foundation, Inc.
2 This file is part of the GNU C Library.
3
4 The GNU C Library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 The GNU C Library is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 Lesser General Public License for more details.
13
14 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library; if not, see
16 <https://www.gnu.org/licenses/>. */
17
18#if defined __x86_64__ && defined __ILP32__
19# error "sysctl system call is unsupported in x32 kernel"
20#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/types/struct_semid_ds.h created+34
...@@ -0,0 +1,34 @@
1/* x86 implementation of the semaphore struct semid_ds.
2 Copyright (C) 1995-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 Lesser General Public License for more details.
14
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
18
19#ifndef _SYS_SEM_H
20# error "Never include <bits/types/struct_semid_ds.h> directly; use <sys/sem.h> instead."
21#endif
22
23/* Data structure describing a set of semaphores. */
24struct semid_ds
25{
26 struct ipc_perm sem_perm; /* operation permission struct */
27 __time_t sem_otime; /* last semop() time */
28 __syscall_ulong_t __sem_otime_high;
29 __time_t sem_ctime; /* last time changed by semctl() */
30 __syscall_ulong_t __sem_ctime_high;
31 __syscall_ulong_t sem_nsems; /* number of semaphores in set */
32 __syscall_ulong_t __glibc_reserved3;
33 __syscall_ulong_t __glibc_reserved4;
34};
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/typesizes.h+6
...@@ -64,6 +64,7 @@...@@ -64,6 +64,7 @@
64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE64#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
65#define __USECONDS_T_TYPE __U32_TYPE65#define __USECONDS_T_TYPE __U32_TYPE
66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE66#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
67#define __DADDR_T_TYPE __S32_TYPE68#define __DADDR_T_TYPE __S32_TYPE
68#define __KEY_T_TYPE __S32_TYPE69#define __KEY_T_TYPE __S32_TYPE
69#define __CLOCKID_T_TYPE __S32_TYPE70#define __CLOCKID_T_TYPE __S32_TYPE
...@@ -87,10 +88,15 @@...@@ -87,10 +88,15 @@
8788
88/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */89/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
89# define __STATFS_MATCHES_STATFS64 190# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
90#else94#else
91# define __RLIM_T_MATCHES_RLIM64_T 095# define __RLIM_T_MATCHES_RLIM64_T 0
9296
93# define __STATFS_MATCHES_STATFS64 097# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94#endif100#endif
95101
96/* Number of descriptors that can fit in an `fd_set'. */102/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/x86_64-linux-gnux32/gnu/lib-names-x32.h-2
...@@ -20,8 +20,6 @@...@@ -20,8 +20,6 @@
20#define LIBNSS_FILES_SO "libnss_files.so.2"20#define LIBNSS_FILES_SO "libnss_files.so.2"
21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"21#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"22#define LIBNSS_LDAP_SO "libnss_ldap.so.2"
23#define LIBNSS_NISPLUS_SO "libnss_nisplus.so.2"
24#define LIBNSS_NIS_SO "libnss_nis.so.2"
25#define LIBNSS_TEST1_SO "libnss_test1.so.2"23#define LIBNSS_TEST1_SO "libnss_test1.so.2"
26#define LIBNSS_TEST2_SO "libnss_test2.so.2"24#define LIBNSS_TEST2_SO "libnss_test2.so.2"
27#define LIBPTHREAD_SO "libpthread.so.0"25#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h-2
...@@ -16,9 +16,7 @@...@@ -16,9 +16,7 @@
16#define __stub_chflags16#define __stub_chflags
17#define __stub_fchflags17#define __stub_fchflags
18#define __stub_gtty18#define __stub_gtty
19#define __stub_lchmod
20#define __stub_revoke19#define __stub_revoke
21#define __stub_setlogin20#define __stub_setlogin
22#define __stub_sigreturn21#define __stub_sigreturn
23#define __stub_sstk
24#define __stub_stty22#define __stub_stty
\ No newline at end of file
lib/std/child_process.zig+2-2
...@@ -396,12 +396,12 @@ pub const ChildProcess = struct {...@@ -396,12 +396,12 @@ pub const ChildProcess = struct {
396 // and execve from the child process to the parent process.396 // and execve from the child process to the parent process.
397 const err_pipe = blk: {397 const err_pipe = blk: {
398 if (builtin.os.tag == .linux) {398 if (builtin.os.tag == .linux) {
399 const fd = try os.eventfd(0, 0);399 const fd = try os.eventfd(0, os.EFD_CLOEXEC);
400 // There's no distinction between the readable and the writeable400 // There's no distinction between the readable and the writeable
401 // end with eventfd401 // end with eventfd
402 break :blk [2]os.fd_t{ fd, fd };402 break :blk [2]os.fd_t{ fd, fd };
403 } else {403 } else {
404 break :blk try os.pipe();404 break :blk try os.pipe2(os.O_CLOEXEC);
405 }405 }
406 };406 };
407 errdefer destroyPipe(err_pipe);407 errdefer destroyPipe(err_pipe);
lib/std/crypto/benchmark.zig+59-13
...@@ -7,6 +7,7 @@...@@ -7,6 +7,7 @@
77
8const builtin = @import("builtin");8const builtin = @import("builtin");
9const std = @import("std");9const std = @import("std");
10const mem = std.mem;
10const time = std.time;11const time = std.time;
11const Timer = time.Timer;12const Timer = time.Timer;
12const crypto = std.crypto;13const crypto = std.crypto;
...@@ -46,6 +47,7 @@ pub fn benchmarkHash(comptime Hash: anytype, comptime bytes: comptime_int) !u64...@@ -46,6 +47,7 @@ pub fn benchmarkHash(comptime Hash: anytype, comptime bytes: comptime_int) !u64
46 while (offset < bytes) : (offset += block.len) {47 while (offset < bytes) : (offset += block.len) {
47 h.update(block[0..]);48 h.update(block[0..]);
48 }49 }
50 mem.doNotOptimizeAway(&h);
49 const end = timer.read();51 const end = timer.read();
5052
51 const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;53 const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
...@@ -67,19 +69,20 @@ const macs = [_]Crypto{...@@ -67,19 +69,20 @@ const macs = [_]Crypto{
67};69};
6870
69pub fn benchmarkMac(comptime Mac: anytype, comptime bytes: comptime_int) !u64 {71pub fn benchmarkMac(comptime Mac: anytype, comptime bytes: comptime_int) !u64 {
70 std.debug.assert(64 >= Mac.mac_length and 32 >= Mac.minimum_key_length);72 var in: [512 * KiB]u8 = undefined;
71
72 var in: [1 * MiB]u8 = undefined;
73 prng.random.bytes(in[0..]);73 prng.random.bytes(in[0..]);
7474
75 var key: [64]u8 = undefined;75 const key_length = if (Mac.minimum_key_length == 0) 32 else Mac.minimum_key_length;
76 var key: [key_length]u8 = undefined;
76 prng.random.bytes(key[0..]);77 prng.random.bytes(key[0..]);
7778
79 var mac: [Mac.mac_length]u8 = undefined;
78 var offset: usize = 0;80 var offset: usize = 0;
79 var timer = try Timer.start();81 var timer = try Timer.start();
80 const start = timer.lap();82 const start = timer.lap();
81 while (offset < bytes) : (offset += in.len) {83 while (offset < bytes) : (offset += in.len) {
82 Mac.create(key[0..], in[0..], key[0..]);84 Mac.create(mac[0..], in[0..], key[0..]);
85 mem.doNotOptimizeAway(&mac);
83 }86 }
84 const end = timer.read();87 const end = timer.read();
8588
...@@ -106,6 +109,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c...@@ -106,6 +109,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
106 var i: usize = 0;109 var i: usize = 0;
107 while (i < exchange_count) : (i += 1) {110 while (i < exchange_count) : (i += 1) {
108 _ = DhKeyExchange.create(out[0..], out[0..], in[0..]);111 _ = DhKeyExchange.create(out[0..], out[0..], in[0..]);
112 mem.doNotOptimizeAway(&out);
109 }113 }
110 }114 }
111 const end = timer.read();115 const end = timer.read();
...@@ -118,7 +122,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c...@@ -118,7 +122,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
118122
119const signatures = [_]Crypto{Crypto{ .ty = crypto.sign.Ed25519, .name = "ed25519" }};123const signatures = [_]Crypto{Crypto{ .ty = crypto.sign.Ed25519, .name = "ed25519" }};
120124
121pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_count: comptime_int) !u64 {125pub fn benchmarkSignature(comptime Signature: anytype, comptime signatures_count: comptime_int) !u64 {
122 var seed: [Signature.seed_length]u8 = undefined;126 var seed: [Signature.seed_length]u8 = undefined;
123 prng.random.bytes(seed[0..]);127 prng.random.bytes(seed[0..]);
124 const msg = [_]u8{0} ** 64;128 const msg = [_]u8{0} ** 64;
...@@ -129,7 +133,8 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun...@@ -129,7 +133,8 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun
129 {133 {
130 var i: usize = 0;134 var i: usize = 0;
131 while (i < signatures_count) : (i += 1) {135 while (i < signatures_count) : (i += 1) {
132 _ = try Signature.sign(&msg, key_pair, null);136 const s = try Signature.sign(&msg, key_pair, null);
137 mem.doNotOptimizeAway(&s);
133 }138 }
134 }139 }
135 const end = timer.read();140 const end = timer.read();
...@@ -140,6 +145,40 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun...@@ -140,6 +145,40 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun
140 return throughput;145 return throughput;
141}146}
142147
148const aeads = [_]Crypto{
149 Crypto{ .ty = crypto.aead.ChaCha20Poly1305, .name = "chacha20Poly1305" },
150 Crypto{ .ty = crypto.aead.XChaCha20Poly1305, .name = "xchacha20Poly1305" },
151 Crypto{ .ty = crypto.aead.Gimli, .name = "gimli-aead" },
152};
153
154pub fn benchmarkAead(comptime Aead: anytype, comptime bytes: comptime_int) !u64 {
155 var in: [512 * KiB]u8 = undefined;
156 prng.random.bytes(in[0..]);
157
158 var tag: [Aead.tag_length]u8 = undefined;
159
160 var key: [Aead.key_length]u8 = undefined;
161 prng.random.bytes(key[0..]);
162
163 var nonce: [Aead.nonce_length]u8 = undefined;
164 prng.random.bytes(nonce[0..]);
165
166 var offset: usize = 0;
167 var timer = try Timer.start();
168 const start = timer.lap();
169 while (offset < bytes) : (offset += in.len) {
170 Aead.encrypt(in[0..], tag[0..], in[0..], &[_]u8{}, nonce, key);
171 Aead.decrypt(in[0..], in[0..], tag, &[_]u8{}, nonce, key) catch unreachable;
172 }
173 mem.doNotOptimizeAway(&in);
174 const end = timer.read();
175
176 const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
177 const throughput = @floatToInt(u64, 2 * bytes / elapsed_s);
178
179 return throughput;
180}
181
143fn usage() void {182fn usage() void {
144 std.debug.warn(183 std.debug.warn(
145 \\throughput_test [options]184 \\throughput_test [options]
...@@ -198,29 +237,36 @@ pub fn main() !void {...@@ -198,29 +237,36 @@ pub fn main() !void {
198237
199 inline for (hashes) |H| {238 inline for (hashes) |H| {
200 if (filter == null or std.mem.indexOf(u8, H.name, filter.?) != null) {239 if (filter == null or std.mem.indexOf(u8, H.name, filter.?) != null) {
201 const throughput = try benchmarkHash(H.ty, mode(32 * MiB));240 const throughput = try benchmarkHash(H.ty, mode(128 * MiB));
202 try stdout.print("{:>11}: {:5} MiB/s\n", .{ H.name, throughput / (1 * MiB) });241 try stdout.print("{:>17}: {:7} MiB/s\n", .{ H.name, throughput / (1 * MiB) });
203 }242 }
204 }243 }
205244
206 inline for (macs) |M| {245 inline for (macs) |M| {
207 if (filter == null or std.mem.indexOf(u8, M.name, filter.?) != null) {246 if (filter == null or std.mem.indexOf(u8, M.name, filter.?) != null) {
208 const throughput = try benchmarkMac(M.ty, mode(128 * MiB));247 const throughput = try benchmarkMac(M.ty, mode(128 * MiB));
209 try stdout.print("{:>11}: {:5} MiB/s\n", .{ M.name, throughput / (1 * MiB) });248 try stdout.print("{:>17}: {:7} MiB/s\n", .{ M.name, throughput / (1 * MiB) });
210 }249 }
211 }250 }
212251
213 inline for (exchanges) |E| {252 inline for (exchanges) |E| {
214 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {253 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {
215 const throughput = try benchmarkKeyExchange(E.ty, mode(1000));254 const throughput = try benchmarkKeyExchange(E.ty, mode(1000));
216 try stdout.print("{:>11}: {:5} exchanges/s\n", .{ E.name, throughput });255 try stdout.print("{:>17}: {:7} exchanges/s\n", .{ E.name, throughput });
217 }256 }
218 }257 }
219258
220 inline for (signatures) |E| {259 inline for (signatures) |E| {
221 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {260 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {
222 const throughput = try benchmarkSignatures(E.ty, mode(1000));261 const throughput = try benchmarkSignature(E.ty, mode(1000));
223 try stdout.print("{:>11}: {:5} signatures/s\n", .{ E.name, throughput });262 try stdout.print("{:>17}: {:7} signatures/s\n", .{ E.name, throughput });
263 }
264 }
265
266 inline for (aeads) |E| {
267 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {
268 const throughput = try benchmarkAead(E.ty, mode(128 * MiB));
269 try stdout.print("{:>17}: {:7} MiB/s\n", .{ E.name, throughput / (1 * MiB) });
224 }270 }
225 }271 }
226}272}
lib/std/crypto/chacha20.zig+13-13
...@@ -47,7 +47,7 @@ fn initContext(key: [8]u32, d: [4]u32) [16]u32 {...@@ -47,7 +47,7 @@ fn initContext(key: [8]u32, d: [4]u32) [16]u32 {
47}47}
4848
49// The chacha family of ciphers are based on the salsa family.49// The chacha family of ciphers are based on the salsa family.
50fn chacha20Core(x: []u32, input: [16]u32) void {50inline fn chacha20Core(x: []u32, input: [16]u32) void {
51 for (x) |_, i|51 for (x) |_, i|
52 x[i] = input[i];52 x[i] = input[i];
5353
...@@ -744,26 +744,26 @@ pub const Chacha20Poly1305 = struct {...@@ -744,26 +744,26 @@ pub const Chacha20Poly1305 = struct {
744 pub const key_length = 32;744 pub const key_length = 32;
745745
746 /// c: ciphertext: output buffer should be of size m.len746 /// c: ciphertext: output buffer should be of size m.len
747 /// at: authentication tag: output MAC747 /// tag: authentication tag: output MAC
748 /// m: message748 /// m: message
749 /// ad: Associated Data749 /// ad: Associated Data
750 /// npub: public nonce750 /// npub: public nonce
751 /// k: private key751 /// k: private key
752 pub fn encrypt(c: []u8, at: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) void {752 pub fn encrypt(c: []u8, tag: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) void {
753 assert(c.len == m.len);753 assert(c.len == m.len);
754 return chacha20poly1305SealDetached(c, at, m, ad, k, npub);754 return chacha20poly1305SealDetached(c, tag, m, ad, k, npub);
755 }755 }
756756
757 /// m: message: output buffer should be of size c.len757 /// m: message: output buffer should be of size c.len
758 /// c: ciphertext758 /// c: ciphertext
759 /// at: authentication tag759 /// tag: authentication tag
760 /// ad: Associated Data760 /// ad: Associated Data
761 /// npub: public nonce761 /// npub: public nonce
762 /// k: private key762 /// k: private key
763 /// NOTE: the check of the authentication tag is currently not done in constant time763 /// NOTE: the check of the authentication tag is currently not done in constant time
764 pub fn decrypt(m: []u8, c: []const u8, at: [tag_length]u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) !void {764 pub fn decrypt(m: []u8, c: []const u8, tag: [tag_length]u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) !void {
765 assert(c.len == m.len);765 assert(c.len == m.len);
766 return try chacha20poly1305OpenDetached(m, c, at[0..], ad, k, npub);766 return try chacha20poly1305OpenDetached(m, c, tag[0..], ad, k, npub);
767 }767 }
768};768};
769769
...@@ -773,26 +773,26 @@ pub const XChacha20Poly1305 = struct {...@@ -773,26 +773,26 @@ pub const XChacha20Poly1305 = struct {
773 pub const key_length = 32;773 pub const key_length = 32;
774774
775 /// c: ciphertext: output buffer should be of size m.len775 /// c: ciphertext: output buffer should be of size m.len
776 /// at: authentication tag: output MAC776 /// tag: authentication tag: output MAC
777 /// m: message777 /// m: message
778 /// ad: Associated Data778 /// ad: Associated Data
779 /// npub: public nonce779 /// npub: public nonce
780 /// k: private key780 /// k: private key
781 pub fn encrypt(c: []u8, at: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) void {781 pub fn encrypt(c: []u8, tag: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) void {
782 assert(c.len == m.len);782 assert(c.len == m.len);
783 return xchacha20poly1305SealDetached(c, at, m, ad, k, npub);783 return xchacha20poly1305SealDetached(c, tag, m, ad, k, npub);
784 }784 }
785785
786 /// m: message: output buffer should be of size c.len786 /// m: message: output buffer should be of size c.len
787 /// c: ciphertext787 /// c: ciphertext
788 /// at: authentication tag788 /// tag: authentication tag
789 /// ad: Associated Data789 /// ad: Associated Data
790 /// npub: public nonce790 /// npub: public nonce
791 /// k: private key791 /// k: private key
792 /// NOTE: the check of the authentication tag is currently not done in constant time792 /// NOTE: the check of the authentication tag is currently not done in constant time
793 pub fn decrypt(m: []u8, c: []const u8, at: [tag_length]u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) !void {793 pub fn decrypt(m: []u8, c: []const u8, tag: [tag_length]u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) !void {
794 assert(c.len == m.len);794 assert(c.len == m.len);
795 return try xchacha20poly1305OpenDetached(m, c, at[0..], ad, k, npub);795 return try xchacha20poly1305OpenDetached(m, c, tag[0..], ad, k, npub);
796 }796 }
797};797};
798798
lib/std/crypto/gimli.zig+31-27
...@@ -180,10 +180,14 @@ test "hash" {...@@ -180,10 +180,14 @@ test "hash" {
180}180}
181181
182pub const Aead = struct {182pub const Aead = struct {
183 pub const tag_length = State.RATE;
184 pub const nonce_length = 16;
185 pub const key_length = 32;
186
183 /// ad: Associated Data187 /// ad: Associated Data
184 /// npub: public nonce188 /// npub: public nonce
185 /// k: private key189 /// k: private key
186 fn init(ad: []const u8, npub: [16]u8, k: [32]u8) State {190 fn init(ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) State {
187 var state = State{191 var state = State{
188 .data = undefined,192 .data = undefined,
189 };193 };
...@@ -224,12 +228,12 @@ pub const Aead = struct {...@@ -224,12 +228,12 @@ pub const Aead = struct {
224 }228 }
225229
226 /// c: ciphertext: output buffer should be of size m.len230 /// c: ciphertext: output buffer should be of size m.len
227 /// at: authentication tag: output MAC231 /// tag: authentication tag: output MAC
228 /// m: message232 /// m: message
229 /// ad: Associated Data233 /// ad: Associated Data
230 /// npub: public nonce234 /// npub: public nonce
231 /// k: private key235 /// k: private key
232 pub fn encrypt(c: []u8, at: *[State.RATE]u8, m: []const u8, ad: []const u8, npub: [16]u8, k: [32]u8) void {236 pub fn encrypt(c: []u8, tag: *[tag_length]u8, m: []const u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) void {
233 assert(c.len == m.len);237 assert(c.len == m.len);
234238
235 var state = Aead.init(ad, npub, k);239 var state = Aead.init(ad, npub, k);
...@@ -265,17 +269,17 @@ pub const Aead = struct {...@@ -265,17 +269,17 @@ pub const Aead = struct {
265269
266 // After the final non-full block of plaintext, the first 16 bytes270 // After the final non-full block of plaintext, the first 16 bytes
267 // of the state are output as an authentication tag.271 // of the state are output as an authentication tag.
268 std.mem.copy(u8, at, buf[0..State.RATE]);272 std.mem.copy(u8, tag, buf[0..State.RATE]);
269 }273 }
270274
271 /// m: message: output buffer should be of size c.len275 /// m: message: output buffer should be of size c.len
272 /// c: ciphertext276 /// c: ciphertext
273 /// at: authentication tag277 /// tag: authentication tag
274 /// ad: Associated Data278 /// ad: Associated Data
275 /// npub: public nonce279 /// npub: public nonce
276 /// k: private key280 /// k: private key
277 /// NOTE: the check of the authentication tag is currently not done in constant time281 /// NOTE: the check of the authentication tag is currently not done in constant time
278 pub fn decrypt(m: []u8, c: []const u8, at: [State.RATE]u8, ad: []const u8, npub: [16]u8, k: [32]u8) !void {282 pub fn decrypt(m: []u8, c: []const u8, tag: [tag_length]u8, ad: []const u8, npub: [nonce_length]u8, k: [key_length]u8) !void {
279 assert(c.len == m.len);283 assert(c.len == m.len);
280284
281 var state = Aead.init(ad, npub, k);285 var state = Aead.init(ad, npub, k);
...@@ -308,7 +312,7 @@ pub const Aead = struct {...@@ -308,7 +312,7 @@ pub const Aead = struct {
308 // After the final non-full block of plaintext, the first 16 bytes312 // After the final non-full block of plaintext, the first 16 bytes
309 // of the state are the authentication tag.313 // of the state are the authentication tag.
310 // TODO: use a constant-time equality check here, see https://github.com/ziglang/zig/issues/1776314 // TODO: use a constant-time equality check here, see https://github.com/ziglang/zig/issues/1776
311 if (!mem.eql(u8, buf[0..State.RATE], &at)) {315 if (!mem.eql(u8, buf[0..State.RATE], &tag)) {
312 @memset(m.ptr, undefined, m.len);316 @memset(m.ptr, undefined, m.len);
313 return error.InvalidMessage;317 return error.InvalidMessage;
314 }318 }
...@@ -328,13 +332,13 @@ test "cipher" {...@@ -328,13 +332,13 @@ test "cipher" {
328 const pt: [0]u8 = undefined;332 const pt: [0]u8 = undefined;
329333
330 var ct: [pt.len]u8 = undefined;334 var ct: [pt.len]u8 = undefined;
331 var at: [16]u8 = undefined;335 var tag: [16]u8 = undefined;
332 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);336 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
333 htest.assertEqual("", &ct);337 htest.assertEqual("", &ct);
334 htest.assertEqual("14DA9BB7120BF58B985A8E00FDEBA15B", &at);338 htest.assertEqual("14DA9BB7120BF58B985A8E00FDEBA15B", &tag);
335339
336 var pt2: [pt.len]u8 = undefined;340 var pt2: [pt.len]u8 = undefined;
337 try Aead.decrypt(&pt2, &ct, at, &ad, nonce, key);341 try Aead.decrypt(&pt2, &ct, tag, &ad, nonce, key);
338 testing.expectEqualSlices(u8, &pt, &pt2);342 testing.expectEqualSlices(u8, &pt, &pt2);
339 }343 }
340 { // test vector (34) from NIST KAT submission.344 { // test vector (34) from NIST KAT submission.
...@@ -343,13 +347,13 @@ test "cipher" {...@@ -343,13 +347,13 @@ test "cipher" {
343 try std.fmt.hexToBytes(&pt, "00");347 try std.fmt.hexToBytes(&pt, "00");
344348
345 var ct: [pt.len]u8 = undefined;349 var ct: [pt.len]u8 = undefined;
346 var at: [16]u8 = undefined;350 var tag: [16]u8 = undefined;
347 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);351 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
348 htest.assertEqual("7F", &ct);352 htest.assertEqual("7F", &ct);
349 htest.assertEqual("80492C317B1CD58A1EDC3A0D3E9876FC", &at);353 htest.assertEqual("80492C317B1CD58A1EDC3A0D3E9876FC", &tag);
350354
351 var pt2: [pt.len]u8 = undefined;355 var pt2: [pt.len]u8 = undefined;
352 try Aead.decrypt(&pt2, &ct, at, &ad, nonce, key);356 try Aead.decrypt(&pt2, &ct, tag, &ad, nonce, key);
353 testing.expectEqualSlices(u8, &pt, &pt2);357 testing.expectEqualSlices(u8, &pt, &pt2);
354 }358 }
355 { // test vector (106) from NIST KAT submission.359 { // test vector (106) from NIST KAT submission.
...@@ -359,13 +363,13 @@ test "cipher" {...@@ -359,13 +363,13 @@ test "cipher" {
359 try std.fmt.hexToBytes(&pt, "000102");363 try std.fmt.hexToBytes(&pt, "000102");
360364
361 var ct: [pt.len]u8 = undefined;365 var ct: [pt.len]u8 = undefined;
362 var at: [16]u8 = undefined;366 var tag: [16]u8 = undefined;
363 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);367 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
364 htest.assertEqual("484D35", &ct);368 htest.assertEqual("484D35", &ct);
365 htest.assertEqual("030BBEA23B61C00CED60A923BDCF9147", &at);369 htest.assertEqual("030BBEA23B61C00CED60A923BDCF9147", &tag);
366370
367 var pt2: [pt.len]u8 = undefined;371 var pt2: [pt.len]u8 = undefined;
368 try Aead.decrypt(&pt2, &ct, at, &ad, nonce, key);372 try Aead.decrypt(&pt2, &ct, tag, &ad, nonce, key);
369 testing.expectEqualSlices(u8, &pt, &pt2);373 testing.expectEqualSlices(u8, &pt, &pt2);
370 }374 }
371 { // test vector (790) from NIST KAT submission.375 { // test vector (790) from NIST KAT submission.
...@@ -375,13 +379,13 @@ test "cipher" {...@@ -375,13 +379,13 @@ test "cipher" {
375 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F10111213141516");379 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F10111213141516");
376380
377 var ct: [pt.len]u8 = undefined;381 var ct: [pt.len]u8 = undefined;
378 var at: [16]u8 = undefined;382 var tag: [16]u8 = undefined;
379 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);383 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
380 htest.assertEqual("6815B4A0ECDAD01596EAD87D9E690697475D234C6A13D1", &ct);384 htest.assertEqual("6815B4A0ECDAD01596EAD87D9E690697475D234C6A13D1", &ct);
381 htest.assertEqual("DFE23F1642508290D68245279558B2FB", &at);385 htest.assertEqual("DFE23F1642508290D68245279558B2FB", &tag);
382386
383 var pt2: [pt.len]u8 = undefined;387 var pt2: [pt.len]u8 = undefined;
384 try Aead.decrypt(&pt2, &ct, at, &ad, nonce, key);388 try Aead.decrypt(&pt2, &ct, tag, &ad, nonce, key);
385 testing.expectEqualSlices(u8, &pt, &pt2);389 testing.expectEqualSlices(u8, &pt, &pt2);
386 }390 }
387 { // test vector (1057) from NIST KAT submission.391 { // test vector (1057) from NIST KAT submission.
...@@ -390,13 +394,13 @@ test "cipher" {...@@ -390,13 +394,13 @@ test "cipher" {
390 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F");394 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F");
391395
392 var ct: [pt.len]u8 = undefined;396 var ct: [pt.len]u8 = undefined;
393 var at: [16]u8 = undefined;397 var tag: [16]u8 = undefined;
394 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);398 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
395 htest.assertEqual("7F8A2CF4F52AA4D6B2E74105C30A2777B9D0C8AEFDD555DE35861BD3011F652F", &ct);399 htest.assertEqual("7F8A2CF4F52AA4D6B2E74105C30A2777B9D0C8AEFDD555DE35861BD3011F652F", &ct);
396 htest.assertEqual("7256456FA935AC34BBF55AE135F33257", &at);400 htest.assertEqual("7256456FA935AC34BBF55AE135F33257", &tag);
397401
398 var pt2: [pt.len]u8 = undefined;402 var pt2: [pt.len]u8 = undefined;
399 try Aead.decrypt(&pt2, &ct, at, &ad, nonce, key);403 try Aead.decrypt(&pt2, &ct, tag, &ad, nonce, key);
400 testing.expectEqualSlices(u8, &pt, &pt2);404 testing.expectEqualSlices(u8, &pt, &pt2);
401 }405 }
402}406}
lib/std/fs/test.zig+20-4
...@@ -25,12 +25,20 @@ test "Dir.readLink" {...@@ -25,12 +25,20 @@ test "Dir.readLink" {
2525
26 {26 {
27 // Create symbolic link by path27 // Create symbolic link by path
28 try tmp.dir.symLink("file.txt", "symlink1", .{});28 tmp.dir.symLink("file.txt", "symlink1", .{}) catch |err| switch (err) {
29 // Symlink requires admin privileges on windows, so this test can legitimately fail.
30 error.AccessDenied => return error.SkipZigTest,
31 else => return err,
32 };
29 try testReadLink(tmp.dir, "file.txt", "symlink1");33 try testReadLink(tmp.dir, "file.txt", "symlink1");
30 }34 }
31 {35 {
32 // Create symbolic link by path36 // Create symbolic link by path
33 try tmp.dir.symLink("subdir", "symlink2", .{ .is_directory = true });37 tmp.dir.symLink("subdir", "symlink2", .{ .is_directory = true }) catch |err| switch (err) {
38 // Symlink requires admin privileges on windows, so this test can legitimately fail.
39 error.AccessDenied => return error.SkipZigTest,
40 else => return err,
41 };
34 try testReadLink(tmp.dir, "subdir", "symlink2");42 try testReadLink(tmp.dir, "subdir", "symlink2");
35 }43 }
36}44}
...@@ -66,7 +74,11 @@ test "readLinkAbsolute" {...@@ -66,7 +74,11 @@ test "readLinkAbsolute" {
66 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink1" });74 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink1" });
6775
68 // Create symbolic link by path76 // Create symbolic link by path
69 try fs.symLinkAbsolute(target_path, symlink_path, .{});77 fs.symLinkAbsolute(target_path, symlink_path, .{}) catch |err| switch (err) {
78 // Symlink requires admin privileges on windows, so this test can legitimately fail.
79 error.AccessDenied => return error.SkipZigTest,
80 else => return err,
81 };
70 try testReadLinkAbsolute(target_path, symlink_path);82 try testReadLinkAbsolute(target_path, symlink_path);
71 }83 }
72 {84 {
...@@ -74,7 +86,11 @@ test "readLinkAbsolute" {...@@ -74,7 +86,11 @@ test "readLinkAbsolute" {
74 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink2" });86 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink2" });
7587
76 // Create symbolic link by path88 // Create symbolic link by path
77 try fs.symLinkAbsolute(target_path, symlink_path, .{ .is_directory = true });89 fs.symLinkAbsolute(target_path, symlink_path, .{ .is_directory = true }) catch |err| switch (err) {
90 // Symlink requires admin privileges on windows, so this test can legitimately fail.
91 error.AccessDenied => return error.SkipZigTest,
92 else => return err,
93 };
78 try testReadLinkAbsolute(target_path, symlink_path);94 try testReadLinkAbsolute(target_path, symlink_path);
79 }95 }
80}96}
lib/std/heap/general_purpose_allocator.zig+30-16
...@@ -561,24 +561,25 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {...@@ -561,24 +561,25 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
561 return error.OutOfMemory;561 return error.OutOfMemory;
562 }562 }
563563
564 // Returns true if an allocation of `size` bytes is within the specified
565 // limits if enable_memory_limit is true
566 fn isAllocationAllowed(self: *Self, size: usize) bool {
567 if (config.enable_memory_limit) {
568 const new_req_bytes = self.total_requested_bytes + size;
569 if (new_req_bytes > self.requested_memory_limit)
570 return false;
571 self.total_requested_bytes = new_req_bytes;
572 }
573
574 return true;
575 }
576
564 fn alloc(allocator: *Allocator, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8 {577 fn alloc(allocator: *Allocator, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8 {
565 const self = @fieldParentPtr(Self, "allocator", allocator);578 const self = @fieldParentPtr(Self, "allocator", allocator);
566579
567 const held = self.mutex.acquire();580 const held = self.mutex.acquire();
568 defer held.release();581 defer held.release();
569582
570 const prev_req_bytes = self.total_requested_bytes;
571 if (config.enable_memory_limit) {
572 const new_req_bytes = prev_req_bytes + len;
573 if (new_req_bytes > self.requested_memory_limit) {
574 return error.OutOfMemory;
575 }
576 self.total_requested_bytes = new_req_bytes;
577 }
578 errdefer if (config.enable_memory_limit) {
579 self.total_requested_bytes = prev_req_bytes;
580 };
581
582 const new_aligned_size = math.max(len, ptr_align);583 const new_aligned_size = math.max(len, ptr_align);
583 if (new_aligned_size > largest_bucket_object_size) {584 if (new_aligned_size > largest_bucket_object_size) {
584 try self.large_allocations.ensureCapacity(585 try self.large_allocations.ensureCapacity(
...@@ -588,17 +589,30 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {...@@ -588,17 +589,30 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
588589
589 const slice = try self.backing_allocator.allocFn(self.backing_allocator, len, ptr_align, len_align, ret_addr);590 const slice = try self.backing_allocator.allocFn(self.backing_allocator, len, ptr_align, len_align, ret_addr);
590591
592 // The backing allocator may return a memory block bigger than
593 // `len`, use the effective size for bookkeeping purposes
594 if (!self.isAllocationAllowed(slice.len)) {
595 // Free the block so no memory is leaked
596 const new_len = try self.backing_allocator.resizeFn(self.backing_allocator, slice, ptr_align, 0, 0, ret_addr);
597 assert(new_len == 0);
598 return error.OutOfMemory;
599 }
600
591 const gop = self.large_allocations.getOrPutAssumeCapacity(@ptrToInt(slice.ptr));601 const gop = self.large_allocations.getOrPutAssumeCapacity(@ptrToInt(slice.ptr));
592 assert(!gop.found_existing); // This would mean the kernel double-mapped pages.602 assert(!gop.found_existing); // This would mean the kernel double-mapped pages.
593 gop.entry.value.bytes = slice;603 gop.entry.value.bytes = slice;
594 collectStackTrace(ret_addr, &gop.entry.value.stack_addresses);604 collectStackTrace(ret_addr, &gop.entry.value.stack_addresses);
595605
596 return slice;606 return slice;
597 } else {
598 const new_size_class = math.ceilPowerOfTwoAssert(usize, new_aligned_size);
599 const ptr = try self.allocSlot(new_size_class, ret_addr);
600 return ptr[0..len];
601 }607 }
608
609 if (!self.isAllocationAllowed(len)) {
610 return error.OutOfMemory;
611 }
612
613 const new_size_class = math.ceilPowerOfTwoAssert(usize, new_aligned_size);
614 const ptr = try self.allocSlot(new_size_class, ret_addr);
615 return ptr[0..len];
602 }616 }
603617
604 fn createBucket(self: *Self, size_class: usize, bucket_index: usize) Error!*BucketHeader {618 fn createBucket(self: *Self, size_class: usize, bucket_index: usize) Error!*BucketHeader {
lib/std/io/reader.zig+22-4
...@@ -231,10 +231,20 @@ pub fn Reader(...@@ -231,10 +231,20 @@ pub fn Reader(
231 return mem.readVarInt(ReturnType, bytes, endian);231 return mem.readVarInt(ReturnType, bytes, endian);
232 }232 }
233233
234 pub fn skipBytes(self: Self, num_bytes: u64) !void {234 /// Optional parameters for `skipBytes`
235 var i: u64 = 0;235 pub const SkipBytesOptions = struct {
236 while (i < num_bytes) : (i += 1) {236 buf_size: usize = 512,
237 _ = try self.readByte();237 };
238
239 /// Reads `num_bytes` bytes from the stream and discards them
240 pub fn skipBytes(self: Self, num_bytes: usize, comptime options: SkipBytesOptions) !void {
241 var buf: [options.buf_size]u8 = undefined;
242 var remaining = num_bytes;
243
244 while (remaining > 0) {
245 const amt = std.math.min(remaining, options.buf_size);
246 try self.readNoEof(buf[0..amt]);
247 remaining -= amt;
238 }248 }
239 }249 }
240250
...@@ -298,3 +308,11 @@ test "Reader.isBytes" {...@@ -298,3 +308,11 @@ test "Reader.isBytes" {
298 testing.expectEqual(true, try reader.isBytes("foo"));308 testing.expectEqual(true, try reader.isBytes("foo"));
299 testing.expectEqual(false, try reader.isBytes("qux"));309 testing.expectEqual(false, try reader.isBytes("qux"));
300}310}
311
312test "Reader.skipBytes" {
313 const reader = std.io.fixedBufferStream("foobar").reader();
314 try reader.skipBytes(3, .{});
315 testing.expect(try reader.isBytes("bar"));
316 try reader.skipBytes(0, .{});
317 testing.expectError(error.EndOfStream, reader.skipBytes(1, .{}));
318}
lib/std/macho.zig+357
...@@ -81,6 +81,182 @@ pub const symtab_command = extern struct {...@@ -81,6 +81,182 @@ pub const symtab_command = extern struct {
81 strsize: u32,81 strsize: u32,
82};82};
8383
84/// This is the second set of the symbolic information which is used to support
85/// the data structures for the dynamically link editor.
86///
87/// The original set of symbolic information in the symtab_command which contains
88/// the symbol and string tables must also be present when this load command is
89/// present. When this load command is present the symbol table is organized
90/// into three groups of symbols:
91/// local symbols (static and debugging symbols) - grouped by module
92/// defined external symbols - grouped by module (sorted by name if not lib)
93/// undefined external symbols (sorted by name if MH_BINDATLOAD is not set,
94/// and in order the were seen by the static
95/// linker if MH_BINDATLOAD is set)
96/// In this load command there are offsets and counts to each of the three groups
97/// of symbols.
98///
99/// This load command contains a the offsets and sizes of the following new
100/// symbolic information tables:
101/// table of contents
102/// module table
103/// reference symbol table
104/// indirect symbol table
105/// The first three tables above (the table of contents, module table and
106/// reference symbol table) are only present if the file is a dynamically linked
107/// shared library. For executable and object modules, which are files
108/// containing only one module, the information that would be in these three
109/// tables is determined as follows:
110/// table of contents - the defined external symbols are sorted by name
111/// module table - the file contains only one module so everything in the
112/// file is part of the module.
113/// reference symbol table - is the defined and undefined external symbols
114///
115/// For dynamically linked shared library files this load command also contains
116/// offsets and sizes to the pool of relocation entries for all sections
117/// separated into two groups:
118/// external relocation entries
119/// local relocation entries
120/// For executable and object modules the relocation entries continue to hang
121/// off the section structures.
122pub const dysymtab_command = extern struct {
123 /// LC_DYSYMTAB
124 cmd: u32,
125
126 /// sizeof(struct dysymtab_command)
127 cmdsize: u32,
128
129 // The symbols indicated by symoff and nsyms of the LC_SYMTAB load command
130 // are grouped into the following three groups:
131 // local symbols (further grouped by the module they are from)
132 // defined external symbols (further grouped by the module they are from)
133 // undefined symbols
134 //
135 // The local symbols are used only for debugging. The dynamic binding
136 // process may have to use them to indicate to the debugger the local
137 // symbols for a module that is being bound.
138 //
139 // The last two groups are used by the dynamic binding process to do the
140 // binding (indirectly through the module table and the reference symbol
141 // table when this is a dynamically linked shared library file).
142
143 /// index of local symbols
144 ilocalsym: u32,
145
146 /// number of local symbols
147 nlocalsym: u32,
148
149 /// index to externally defined symbols
150 iextdefsym: u32,
151
152 /// number of externally defined symbols
153 nextdefsym: u32,
154
155 /// index to undefined symbols
156 iundefsym: u32,
157
158 /// number of undefined symbols
159 nundefsym: u32,
160
161 // For the for the dynamic binding process to find which module a symbol
162 // is defined in the table of contents is used (analogous to the ranlib
163 // structure in an archive) which maps defined external symbols to modules
164 // they are defined in. This exists only in a dynamically linked shared
165 // library file. For executable and object modules the defined external
166 // symbols are sorted by name and is use as the table of contents.
167
168 /// file offset to table of contents
169 tocoff: u32,
170
171 /// number of entries in table of contents
172 ntoc: u32,
173
174 // To support dynamic binding of "modules" (whole object files) the symbol
175 // table must reflect the modules that the file was created from. This is
176 // done by having a module table that has indexes and counts into the merged
177 // tables for each module. The module structure that these two entries
178 // refer to is described below. This exists only in a dynamically linked
179 // shared library file. For executable and object modules the file only
180 // contains one module so everything in the file belongs to the module.
181
182 /// file offset to module table
183 modtaboff: u32,
184
185 /// number of module table entries
186 nmodtab: u32,
187
188 // To support dynamic module binding the module structure for each module
189 // indicates the external references (defined and undefined) each module
190 // makes. For each module there is an offset and a count into the
191 // reference symbol table for the symbols that the module references.
192 // This exists only in a dynamically linked shared library file. For
193 // executable and object modules the defined external symbols and the
194 // undefined external symbols indicates the external references.
195
196 /// offset to referenced symbol table
197 extrefsymoff: u32,
198
199 /// number of referenced symbol table entries
200 nextrefsyms: u32,
201
202 // The sections that contain "symbol pointers" and "routine stubs" have
203 // indexes and (implied counts based on the size of the section and fixed
204 // size of the entry) into the "indirect symbol" table for each pointer
205 // and stub. For every section of these two types the index into the
206 // indirect symbol table is stored in the section header in the field
207 // reserved1. An indirect symbol table entry is simply a 32bit index into
208 // the symbol table to the symbol that the pointer or stub is referring to.
209 // The indirect symbol table is ordered to match the entries in the section.
210
211 /// file offset to the indirect symbol table
212 indirectsymoff: u32,
213
214 /// number of indirect symbol table entries
215 nindirectsyms: u32,
216
217 // To support relocating an individual module in a library file quickly the
218 // external relocation entries for each module in the library need to be
219 // accessed efficiently. Since the relocation entries can't be accessed
220 // through the section headers for a library file they are separated into
221 // groups of local and external entries further grouped by module. In this
222 // case the presents of this load command who's extreloff, nextrel,
223 // locreloff and nlocrel fields are non-zero indicates that the relocation
224 // entries of non-merged sections are not referenced through the section
225 // structures (and the reloff and nreloc fields in the section headers are
226 // set to zero).
227 //
228 // Since the relocation entries are not accessed through the section headers
229 // this requires the r_address field to be something other than a section
230 // offset to identify the item to be relocated. In this case r_address is
231 // set to the offset from the vmaddr of the first LC_SEGMENT command.
232 // For MH_SPLIT_SEGS images r_address is set to the the offset from the
233 // vmaddr of the first read-write LC_SEGMENT command.
234 //
235 // The relocation entries are grouped by module and the module table
236 // entries have indexes and counts into them for the group of external
237 // relocation entries for that the module.
238 //
239 // For sections that are merged across modules there must not be any
240 // remaining external relocation entries for them (for merged sections
241 // remaining relocation entries must be local).
242
243 /// offset to external relocation entries
244 extreloff: u32,
245
246 /// number of external relocation entries
247 nextrel: u32,
248
249 // All the local relocation entries are grouped together (they are not
250 // grouped by their module since they are only used if the object is moved
251 // from it staticly link edited address).
252
253 /// offset to local relocation entries
254 locreloff: u32,
255
256 /// number of local relocation entries
257 nlocrel: u32,
258};
259
84/// The linkedit_data_command contains the offsets and sizes of a blob260/// The linkedit_data_command contains the offsets and sizes of a blob
85/// of data in the __LINKEDIT segment.261/// of data in the __LINKEDIT segment.
86pub const linkedit_data_command = extern struct {262pub const linkedit_data_command = extern struct {
...@@ -97,6 +273,127 @@ pub const linkedit_data_command = extern struct {...@@ -97,6 +273,127 @@ pub const linkedit_data_command = extern struct {
97 datasize: u32,273 datasize: u32,
98};274};
99275
276/// The dyld_info_command contains the file offsets and sizes of
277/// the new compressed form of the information dyld needs to
278/// load the image. This information is used by dyld on Mac OS X
279/// 10.6 and later. All information pointed to by this command
280/// is encoded using byte streams, so no endian swapping is needed
281/// to interpret it.
282pub const dyld_info_command = extern struct {
283 /// LC_DYLD_INFO or LC_DYLD_INFO_ONLY
284 cmd: u32,
285
286 /// sizeof(struct dyld_info_command)
287 cmdsize: u32,
288
289 // Dyld rebases an image whenever dyld loads it at an address different
290 // from its preferred address. The rebase information is a stream
291 // of byte sized opcodes whose symbolic names start with REBASE_OPCODE_.
292 // Conceptually the rebase information is a table of tuples:
293 // <seg-index, seg-offset, type>
294 // The opcodes are a compressed way to encode the table by only
295 // encoding when a column changes. In addition simple patterns
296 // like "every n'th offset for m times" can be encoded in a few
297 // bytes.
298
299 /// file offset to rebase info
300 rebase_off: u32,
301
302 /// size of rebase info
303 rebase_size: u32,
304
305 // Dyld binds an image during the loading process, if the image
306 // requires any pointers to be initialized to symbols in other images.
307 // The bind information is a stream of byte sized
308 // opcodes whose symbolic names start with BIND_OPCODE_.
309 // Conceptually the bind information is a table of tuples:
310 // <seg-index, seg-offset, type, symbol-library-ordinal, symbol-name, addend>
311 // The opcodes are a compressed way to encode the table by only
312 // encoding when a column changes. In addition simple patterns
313 // like for runs of pointers initialzed to the same value can be
314 // encoded in a few bytes.
315
316 /// file offset to binding info
317 bind_off: u32,
318
319 /// size of binding info
320 bind_size: u32,
321
322 // Some C++ programs require dyld to unique symbols so that all
323 // images in the process use the same copy of some code/data.
324 // This step is done after binding. The content of the weak_bind
325 // info is an opcode stream like the bind_info. But it is sorted
326 // alphabetically by symbol name. This enable dyld to walk
327 // all images with weak binding information in order and look
328 // for collisions. If there are no collisions, dyld does
329 // no updating. That means that some fixups are also encoded
330 // in the bind_info. For instance, all calls to "operator new"
331 // are first bound to libstdc++.dylib using the information
332 // in bind_info. Then if some image overrides operator new
333 // that is detected when the weak_bind information is processed
334 // and the call to operator new is then rebound.
335
336 /// file offset to weak binding info
337 weak_bind_off: u32,
338
339 /// size of weak binding info
340 weak_bind_size: u32,
341
342 // Some uses of external symbols do not need to be bound immediately.
343 // Instead they can be lazily bound on first use. The lazy_bind
344 // are contains a stream of BIND opcodes to bind all lazy symbols.
345 // Normal use is that dyld ignores the lazy_bind section when
346 // loading an image. Instead the static linker arranged for the
347 // lazy pointer to initially point to a helper function which
348 // pushes the offset into the lazy_bind area for the symbol
349 // needing to be bound, then jumps to dyld which simply adds
350 // the offset to lazy_bind_off to get the information on what
351 // to bind.
352
353 /// file offset to lazy binding info
354 lazy_bind_off: u32,
355
356 /// size of lazy binding info
357 lazy_bind_size: u32,
358
359 // The symbols exported by a dylib are encoded in a trie. This
360 // is a compact representation that factors out common prefixes.
361 // It also reduces LINKEDIT pages in RAM because it encodes all
362 // information (name, address, flags) in one small, contiguous range.
363 // The export area is a stream of nodes. The first node sequentially
364 // is the start node for the trie.
365 //
366 // Nodes for a symbol start with a uleb128 that is the length of
367 // the exported symbol information for the string so far.
368 // If there is no exported symbol, the node starts with a zero byte.
369 // If there is exported info, it follows the length.
370 //
371 // First is a uleb128 containing flags. Normally, it is followed by
372 // a uleb128 encoded offset which is location of the content named
373 // by the symbol from the mach_header for the image. If the flags
374 // is EXPORT_SYMBOL_FLAGS_REEXPORT, then following the flags is
375 // a uleb128 encoded library ordinal, then a zero terminated
376 // UTF8 string. If the string is zero length, then the symbol
377 // is re-export from the specified dylib with the same name.
378 // If the flags is EXPORT_SYMBOL_FLAGS_STUB_AND_RESOLVER, then following
379 // the flags is two uleb128s: the stub offset and the resolver offset.
380 // The stub is used by non-lazy pointers. The resolver is used
381 // by lazy pointers and must be called to get the actual address to use.
382 //
383 // After the optional exported symbol information is a byte of
384 // how many edges (0-255) that this node has leaving it,
385 // followed by each edge.
386 // Each edge is a zero terminated UTF8 of the addition chars
387 // in the symbol, followed by a uleb128 offset for the node that
388 // edge points to.
389
390 /// file offset to lazy binding info
391 export_off: u32,
392
393 /// size of lazy binding info
394 export_size: u32,
395};
396
100/// A program that uses a dynamic linker contains a dylinker_command to identify397/// A program that uses a dynamic linker contains a dylinker_command to identify
101/// the name of the dynamic linker (LC_LOAD_DYLINKER). And a dynamic linker398/// the name of the dynamic linker (LC_LOAD_DYLINKER). And a dynamic linker
102/// contains a dylinker_command to identify the dynamic linker (LC_ID_DYLINKER).399/// contains a dylinker_command to identify the dynamic linker (LC_ID_DYLINKER).
...@@ -681,6 +978,24 @@ pub const N_TYPE = 0x0e;...@@ -681,6 +978,24 @@ pub const N_TYPE = 0x0e;
681/// external symbol bit, set for external symbols978/// external symbol bit, set for external symbols
682pub const N_EXT = 0x01;979pub const N_EXT = 0x01;
683980
981/// symbol is undefined
982pub const N_UNDF = 0x0;
983
984/// symbol is absolute
985pub const N_ABS = 0x2;
986
987/// symbol is defined in the section number given in n_sect
988pub const N_SECT = 0xe;
989
990/// symbol is undefined and the image is using a prebound
991/// value for the symbol
992pub const N_PBUD = 0xc;
993
994/// symbol is defined to be the same as another symbol; the n_value
995/// field is an index into the string table specifying the name of the
996/// other symbol
997pub const N_INDR = 0xa;
998
684/// global symbol: name,,NO_SECT,type,0999/// global symbol: name,,NO_SECT,type,0
685pub const N_GSYM = 0x20;1000pub const N_GSYM = 0x20;
6861001
...@@ -781,6 +1096,35 @@ pub const N_LENG = 0xfe;...@@ -781,6 +1096,35 @@ pub const N_LENG = 0xfe;
781/// a debug section1096/// a debug section
782pub const S_ATTR_DEBUG = 0x02000000;1097pub const S_ATTR_DEBUG = 0x02000000;
7831098
1099/// section contains only true machine instructions
1100pub const S_ATTR_PURE_INSTRUCTIONS = 0x80000000;
1101
1102/// section contains coalesced symbols that are not to be in a ranlib
1103/// table of contents
1104pub const S_ATTR_NO_TOC = 0x40000000;
1105
1106/// ok to strip static symbols in this section in files with the
1107/// MH_DYLDLINK flag
1108pub const S_ATTR_STRIP_STATIC_SYMS = 0x20000000;
1109
1110/// no dead stripping
1111pub const S_ATTR_NO_DEAD_STRIP = 0x10000000;
1112
1113/// blocks are live if they reference live blocks
1114pub const S_ATTR_LIVE_SUPPORT = 0x8000000;
1115
1116/// used with i386 code stubs written on by dyld
1117pub const S_ATTR_SELF_MODIFYING_CODE = 0x4000000;
1118
1119/// section contains some machine instructions
1120pub const S_ATTR_SOME_INSTRUCTIONS = 0x400;
1121
1122/// section has external relocation entries
1123pub const S_ATTR_EXT_RELOC = 0x200;
1124
1125/// section has local relocation entries
1126pub const S_ATTR_LOC_RELOC = 0x100;
1127
784pub const cpu_type_t = integer_t;1128pub const cpu_type_t = integer_t;
785pub const cpu_subtype_t = integer_t;1129pub const cpu_subtype_t = integer_t;
786pub const integer_t = c_int;1130pub const integer_t = c_int;
...@@ -797,3 +1141,16 @@ pub const CPU_SUBTYPE_X86_64_ALL: cpu_subtype_t = 0x3;...@@ -797,3 +1141,16 @@ pub const CPU_SUBTYPE_X86_64_ALL: cpu_subtype_t = 0x3;
7971141
798/// All ARM-based Macs1142/// All ARM-based Macs
799pub const CPU_SUBTYPE_ARM_ALL: cpu_subtype_t = 0x0;1143pub const CPU_SUBTYPE_ARM_ALL: cpu_subtype_t = 0x0;
1144
1145// Protection values defined as bits within the vm_prot_t type
1146/// No VM protection
1147pub const VM_PROT_NONE: vm_prot_t = 0x0;
1148
1149/// VM read permission
1150pub const VM_PROT_READ: vm_prot_t = 0x1;
1151
1152/// VM write permission
1153pub const VM_PROT_WRITE: vm_prot_t = 0x2;
1154
1155/// VM execute permission
1156pub const VM_PROT_EXECUTE: vm_prot_t = 0x4;
lib/std/math.zig+56-28
...@@ -5,6 +5,7 @@...@@ -5,6 +5,7 @@
5// and substantial portions of the software.5// and substantial portions of the software.
6const std = @import("std.zig");6const std = @import("std.zig");
7const assert = std.debug.assert;7const assert = std.debug.assert;
8const mem = std.mem;
8const testing = std.testing;9const testing = std.testing;
910
10/// Euler's number (e)11/// Euler's number (e)
...@@ -108,34 +109,8 @@ pub fn approxEq(comptime T: type, x: T, y: T, epsilon: T) bool {...@@ -108,34 +109,8 @@ pub fn approxEq(comptime T: type, x: T, y: T, epsilon: T) bool {
108 return fabs(x - y) < epsilon;109 return fabs(x - y) < epsilon;
109}110}
110111
111// TODO: Hide the following in an internal module.112pub fn doNotOptimizeAway(value: anytype) void {
112pub fn forceEval(value: anytype) void {113 mem.doNotOptimizeAway(value);
113 const T = @TypeOf(value);
114 switch (T) {
115 f16 => {
116 var x: f16 = undefined;
117 const p = @ptrCast(*volatile f16, &x);
118 p.* = x;
119 },
120 f32 => {
121 var x: f32 = undefined;
122 const p = @ptrCast(*volatile f32, &x);
123 p.* = x;
124 },
125 f64 => {
126 var x: f64 = undefined;
127 const p = @ptrCast(*volatile f64, &x);
128 p.* = x;
129 },
130 f128 => {
131 var x: f128 = undefined;
132 const p = @ptrCast(*volatile f128, &x);
133 p.* = x;
134 },
135 else => {
136 @compileError("forceEval not implemented for " ++ @typeName(T));
137 },
138 }
139}114}
140115
141pub fn raiseInvalid() void {116pub fn raiseInvalid() void {
...@@ -621,6 +596,59 @@ fn testDivFloor() void {...@@ -621,6 +596,59 @@ fn testDivFloor() void {
621 testing.expect((divFloor(f32, -5.0, 3.0) catch unreachable) == -2.0);596 testing.expect((divFloor(f32, -5.0, 3.0) catch unreachable) == -2.0);
622}597}
623598
599pub fn divCeil(comptime T: type, numerator: T, denominator: T) !T {
600 @setRuntimeSafety(false);
601 if (comptime std.meta.trait.isNumber(T) and denominator == 0) return error.DivisionByZero;
602 const info = @typeInfo(T);
603 switch (info) {
604 .ComptimeFloat, .Float => return @ceil(numerator / denominator),
605 .ComptimeInt, .Int => {
606 if (numerator < 0 and denominator < 0) {
607 if (info == .Int and numerator == minInt(T) and denominator == -1)
608 return error.Overflow;
609 return @divFloor(numerator + 1, denominator) + 1;
610 }
611 if (numerator > 0 and denominator > 0)
612 return @divFloor(numerator - 1, denominator) + 1;
613 return @divTrunc(numerator, denominator);
614 },
615 else => @compileError("divCeil unsupported on " ++ @typeName(T)),
616 }
617}
618
619test "math.divCeil" {
620 testDivCeil();
621 comptime testDivCeil();
622}
623fn testDivCeil() void {
624 testing.expectEqual(@as(i32, 2), divCeil(i32, 5, 3) catch unreachable);
625 testing.expectEqual(@as(i32, -1), divCeil(i32, -5, 3) catch unreachable);
626 testing.expectEqual(@as(i32, -1), divCeil(i32, 5, -3) catch unreachable);
627 testing.expectEqual(@as(i32, 2), divCeil(i32, -5, -3) catch unreachable);
628 testing.expectEqual(@as(i32, 0), divCeil(i32, 0, 5) catch unreachable);
629 testing.expectEqual(@as(u32, 0), divCeil(u32, 0, 5) catch unreachable);
630 testing.expectError(error.DivisionByZero, divCeil(i8, -5, 0));
631 testing.expectError(error.Overflow, divCeil(i8, -128, -1));
632
633 testing.expectEqual(@as(f32, 0.0), divCeil(f32, 0.0, 5.0) catch unreachable);
634 testing.expectEqual(@as(f32, 2.0), divCeil(f32, 5.0, 3.0) catch unreachable);
635 testing.expectEqual(@as(f32, -1.0), divCeil(f32, -5.0, 3.0) catch unreachable);
636 testing.expectEqual(@as(f32, -1.0), divCeil(f32, 5.0, -3.0) catch unreachable);
637 testing.expectEqual(@as(f32, 2.0), divCeil(f32, -5.0, -3.0) catch unreachable);
638
639 testing.expectEqual(6, divCeil(comptime_int, 23, 4) catch unreachable);
640 testing.expectEqual(-5, divCeil(comptime_int, -23, 4) catch unreachable);
641 testing.expectEqual(-5, divCeil(comptime_int, 23, -4) catch unreachable);
642 testing.expectEqual(6, divCeil(comptime_int, -23, -4) catch unreachable);
643 testing.expectError(error.DivisionByZero, divCeil(comptime_int, 23, 0));
644
645 testing.expectEqual(6.0, divCeil(comptime_float, 23.0, 4.0) catch unreachable);
646 testing.expectEqual(-5.0, divCeil(comptime_float, -23.0, 4.0) catch unreachable);
647 testing.expectEqual(-5.0, divCeil(comptime_float, 23.0, -4.0) catch unreachable);
648 testing.expectEqual(6.0, divCeil(comptime_float, -23.0, -4.0) catch unreachable);
649 testing.expectError(error.DivisionByZero, divCeil(comptime_float, 23.0, 0.0));
650}
651
624pub fn divExact(comptime T: type, numerator: T, denominator: T) !T {652pub fn divExact(comptime T: type, numerator: T, denominator: T) !T {
625 @setRuntimeSafety(false);653 @setRuntimeSafety(false);
626 if (denominator == 0) return error.DivisionByZero;654 if (denominator == 0) return error.DivisionByZero;
lib/std/math/asinh.zig+2-2
...@@ -56,7 +56,7 @@ fn asinh32(x: f32) f32 {...@@ -56,7 +56,7 @@ fn asinh32(x: f32) f32 {
56 }56 }
57 // |x| < 0x1p-12, inexact if x != 057 // |x| < 0x1p-12, inexact if x != 0
58 else {58 else {
59 math.forceEval(x + 0x1.0p120);59 math.doNotOptimizeAway(x + 0x1.0p120);
60 }60 }
6161
62 return if (s != 0) -rx else rx;62 return if (s != 0) -rx else rx;
...@@ -87,7 +87,7 @@ fn asinh64(x: f64) f64 {...@@ -87,7 +87,7 @@ fn asinh64(x: f64) f64 {
87 }87 }
88 // |x| < 0x1p-12, inexact if x != 088 // |x| < 0x1p-12, inexact if x != 0
89 else {89 else {
90 math.forceEval(x + 0x1.0p120);90 math.doNotOptimizeAway(x + 0x1.0p120);
91 }91 }
9292
93 return if (s != 0) -rx else rx;93 return if (s != 0) -rx else rx;
lib/std/math/atan.zig+2-2
...@@ -72,7 +72,7 @@ fn atan32(x_: f32) f32 {...@@ -72,7 +72,7 @@ fn atan32(x_: f32) f32 {
72 // |x| < 2^(-12)72 // |x| < 2^(-12)
73 if (ix < 0x39800000) {73 if (ix < 0x39800000) {
74 if (ix < 0x00800000) {74 if (ix < 0x00800000) {
75 math.forceEval(x * x);75 math.doNotOptimizeAway(x * x);
76 }76 }
77 return x;77 return x;
78 }78 }
...@@ -170,7 +170,7 @@ fn atan64(x_: f64) f64 {...@@ -170,7 +170,7 @@ fn atan64(x_: f64) f64 {
170 // |x| < 2^(-27)170 // |x| < 2^(-27)
171 if (ix < 0x3E400000) {171 if (ix < 0x3E400000) {
172 if (ix < 0x00100000) {172 if (ix < 0x00100000) {
173 math.forceEval(@floatCast(f32, x));173 math.doNotOptimizeAway(@floatCast(f32, x));
174 }174 }
175 return x;175 return x;
176 }176 }
lib/std/math/atanh.zig+2-2
...@@ -45,7 +45,7 @@ fn atanh_32(x: f32) f32 {...@@ -45,7 +45,7 @@ fn atanh_32(x: f32) f32 {
45 if (u < 0x3F800000 - (32 << 23)) {45 if (u < 0x3F800000 - (32 << 23)) {
46 // underflow46 // underflow
47 if (u < (1 << 23)) {47 if (u < (1 << 23)) {
48 math.forceEval(y * y);48 math.doNotOptimizeAway(y * y);
49 }49 }
50 }50 }
51 // |x| < 0.551 // |x| < 0.5
...@@ -74,7 +74,7 @@ fn atanh_64(x: f64) f64 {...@@ -74,7 +74,7 @@ fn atanh_64(x: f64) f64 {
74 if (e < 0x3FF - 32) {74 if (e < 0x3FF - 32) {
75 // underflow75 // underflow
76 if (e == 0) {76 if (e == 0) {
77 math.forceEval(@floatCast(f32, y));77 math.doNotOptimizeAway(@floatCast(f32, y));
78 }78 }
79 }79 }
80 // |x| < 0.580 // |x| < 0.5
lib/std/math/ceil.zig+4-4
...@@ -47,14 +47,14 @@ fn ceil32(x: f32) f32 {...@@ -47,14 +47,14 @@ fn ceil32(x: f32) f32 {
47 if (u & m == 0) {47 if (u & m == 0) {
48 return x;48 return x;
49 }49 }
50 math.forceEval(x + 0x1.0p120);50 math.doNotOptimizeAway(x + 0x1.0p120);
51 if (u >> 31 == 0) {51 if (u >> 31 == 0) {
52 u += m;52 u += m;
53 }53 }
54 u &= ~m;54 u &= ~m;
55 return @bitCast(f32, u);55 return @bitCast(f32, u);
56 } else {56 } else {
57 math.forceEval(x + 0x1.0p120);57 math.doNotOptimizeAway(x + 0x1.0p120);
58 if (u >> 31 != 0) {58 if (u >> 31 != 0) {
59 return -0.0;59 return -0.0;
60 } else {60 } else {
...@@ -79,7 +79,7 @@ fn ceil64(x: f64) f64 {...@@ -79,7 +79,7 @@ fn ceil64(x: f64) f64 {
79 }79 }
8080
81 if (e <= 0x3FF - 1) {81 if (e <= 0x3FF - 1) {
82 math.forceEval(y);82 math.doNotOptimizeAway(y);
83 if (u >> 63 != 0) {83 if (u >> 63 != 0) {
84 return -0.0;84 return -0.0;
85 } else {85 } else {
...@@ -106,7 +106,7 @@ fn ceil128(x: f128) f128 {...@@ -106,7 +106,7 @@ fn ceil128(x: f128) f128 {
106 }106 }
107107
108 if (e <= 0x3FFF - 1) {108 if (e <= 0x3FFF - 1) {
109 math.forceEval(y);109 math.doNotOptimizeAway(y);
110 if (u >> 127 != 0) {110 if (u >> 127 != 0) {
111 return -0.0;111 return -0.0;
112 } else {112 } else {
lib/std/math/exp.zig+4-4
...@@ -56,7 +56,7 @@ fn exp32(x_: f32) f32 {...@@ -56,7 +56,7 @@ fn exp32(x_: f32) f32 {
56 return x * 0x1.0p127;56 return x * 0x1.0p127;
57 }57 }
58 if (sign != 0) {58 if (sign != 0) {
59 math.forceEval(-0x1.0p-149 / x); // overflow59 math.doNotOptimizeAway(-0x1.0p-149 / x); // overflow
60 // x <= -103.97208460 // x <= -103.972084
61 if (hx >= 0x42CFF1B5) {61 if (hx >= 0x42CFF1B5) {
62 return 0;62 return 0;
...@@ -88,7 +88,7 @@ fn exp32(x_: f32) f32 {...@@ -88,7 +88,7 @@ fn exp32(x_: f32) f32 {
88 hi = x;88 hi = x;
89 lo = 0;89 lo = 0;
90 } else {90 } else {
91 math.forceEval(0x1.0p127 + x); // inexact91 math.doNotOptimizeAway(0x1.0p127 + x); // inexact
92 return 1 + x;92 return 1 + x;
93 }93 }
9494
...@@ -139,7 +139,7 @@ fn exp64(x_: f64) f64 {...@@ -139,7 +139,7 @@ fn exp64(x_: f64) f64 {
139 }139 }
140 if (x < -708.39641853226410622) {140 if (x < -708.39641853226410622) {
141 // underflow if x != -inf141 // underflow if x != -inf
142 // math.forceEval(@as(f32, -0x1.0p-149 / x));142 // math.doNotOptimizeAway(@as(f32, -0x1.0p-149 / x));
143 if (x < -745.13321910194110842) {143 if (x < -745.13321910194110842) {
144 return 0;144 return 0;
145 }145 }
...@@ -172,7 +172,7 @@ fn exp64(x_: f64) f64 {...@@ -172,7 +172,7 @@ fn exp64(x_: f64) f64 {
172 lo = 0;172 lo = 0;
173 } else {173 } else {
174 // inexact if x != 0174 // inexact if x != 0
175 // math.forceEval(0x1.0p1023 + x);175 // math.doNotOptimizeAway(0x1.0p1023 + x);
176 return 1 + x;176 return 1 + x;
177 }177 }
178178
lib/std/math/exp2.zig+2-2
...@@ -70,7 +70,7 @@ fn exp2_32(x: f32) f32 {...@@ -70,7 +70,7 @@ fn exp2_32(x: f32) f32 {
70 // x < -12670 // x < -126
71 if (u >= 0x80000000) {71 if (u >= 0x80000000) {
72 if (u >= 0xC3160000 or u & 0x000FFFF != 0) {72 if (u >= 0xC3160000 or u & 0x000FFFF != 0) {
73 math.forceEval(-0x1.0p-149 / x);73 math.doNotOptimizeAway(-0x1.0p-149 / x);
74 }74 }
75 // x <= -15075 // x <= -150
76 if (u >= 0x3160000) {76 if (u >= 0x3160000) {
...@@ -393,7 +393,7 @@ fn exp2_64(x: f64) f64 {...@@ -393,7 +393,7 @@ fn exp2_64(x: f64) f64 {
393 if (ux >> 63 != 0) {393 if (ux >> 63 != 0) {
394 // underflow394 // underflow
395 if (x <= -1075 or x - 0x1.0p52 + 0x1.0p52 != x) {395 if (x <= -1075 or x - 0x1.0p52 + 0x1.0p52 != x) {
396 math.forceEval(@floatCast(f32, -0x1.0p-149 / x));396 math.doNotOptimizeAway(@floatCast(f32, -0x1.0p-149 / x));
397 }397 }
398 if (x <= -1075) {398 if (x <= -1075) {
399 return 0;399 return 0;
lib/std/math/expm1.zig+2-2
...@@ -106,7 +106,7 @@ fn expm1_32(x_: f32) f32 {...@@ -106,7 +106,7 @@ fn expm1_32(x_: f32) f32 {
106 // |x| < 2^(-25)106 // |x| < 2^(-25)
107 else if (hx < 0x33000000) {107 else if (hx < 0x33000000) {
108 if (hx < 0x00800000) {108 if (hx < 0x00800000) {
109 math.forceEval(x * x);109 math.doNotOptimizeAway(x * x);
110 }110 }
111 return x;111 return x;
112 } else {112 } else {
...@@ -237,7 +237,7 @@ fn expm1_64(x_: f64) f64 {...@@ -237,7 +237,7 @@ fn expm1_64(x_: f64) f64 {
237 // |x| < 2^(-54)237 // |x| < 2^(-54)
238 else if (hx < 0x3C900000) {238 else if (hx < 0x3C900000) {
239 if (hx < 0x00100000) {239 if (hx < 0x00100000) {
240 math.forceEval(@floatCast(f32, x));240 math.doNotOptimizeAway(@floatCast(f32, x));
241 }241 }
242 return x;242 return x;
243 } else {243 } else {
lib/std/math/floor.zig+6-6
...@@ -50,13 +50,13 @@ fn floor16(x: f16) f16 {...@@ -50,13 +50,13 @@ fn floor16(x: f16) f16 {
50 if (u & m == 0) {50 if (u & m == 0) {
51 return x;51 return x;
52 }52 }
53 math.forceEval(x + 0x1.0p120);53 math.doNotOptimizeAway(x + 0x1.0p120);
54 if (u >> 15 != 0) {54 if (u >> 15 != 0) {
55 u += m;55 u += m;
56 }56 }
57 return @bitCast(f16, u & ~m);57 return @bitCast(f16, u & ~m);
58 } else {58 } else {
59 math.forceEval(x + 0x1.0p120);59 math.doNotOptimizeAway(x + 0x1.0p120);
60 if (u >> 15 == 0) {60 if (u >> 15 == 0) {
61 return 0.0;61 return 0.0;
62 } else {62 } else {
...@@ -84,13 +84,13 @@ fn floor32(x: f32) f32 {...@@ -84,13 +84,13 @@ fn floor32(x: f32) f32 {
84 if (u & m == 0) {84 if (u & m == 0) {
85 return x;85 return x;
86 }86 }
87 math.forceEval(x + 0x1.0p120);87 math.doNotOptimizeAway(x + 0x1.0p120);
88 if (u >> 31 != 0) {88 if (u >> 31 != 0) {
89 u += m;89 u += m;
90 }90 }
91 return @bitCast(f32, u & ~m);91 return @bitCast(f32, u & ~m);
92 } else {92 } else {
93 math.forceEval(x + 0x1.0p120);93 math.doNotOptimizeAway(x + 0x1.0p120);
94 if (u >> 31 == 0) {94 if (u >> 31 == 0) {
95 return 0.0;95 return 0.0;
96 } else {96 } else {
...@@ -115,7 +115,7 @@ fn floor64(x: f64) f64 {...@@ -115,7 +115,7 @@ fn floor64(x: f64) f64 {
115 }115 }
116116
117 if (e <= 0x3FF - 1) {117 if (e <= 0x3FF - 1) {
118 math.forceEval(y);118 math.doNotOptimizeAway(y);
119 if (u >> 63 != 0) {119 if (u >> 63 != 0) {
120 return -1.0;120 return -1.0;
121 } else {121 } else {
...@@ -142,7 +142,7 @@ fn floor128(x: f128) f128 {...@@ -142,7 +142,7 @@ fn floor128(x: f128) f128 {
142 }142 }
143143
144 if (e <= 0x3FFF - 1) {144 if (e <= 0x3FFF - 1) {
145 math.forceEval(y);145 math.doNotOptimizeAway(y);
146 if (u >> 127 != 0) {146 if (u >> 127 != 0) {
147 return -1.0;147 return -1.0;
148 } else {148 } else {
lib/std/math/log1p.zig+1-1
...@@ -62,7 +62,7 @@ fn log1p_32(x: f32) f32 {...@@ -62,7 +62,7 @@ fn log1p_32(x: f32) f32 {
62 if ((ix << 1) < (0x33800000 << 1)) {62 if ((ix << 1) < (0x33800000 << 1)) {
63 // underflow if subnormal63 // underflow if subnormal
64 if (ix & 0x7F800000 == 0) {64 if (ix & 0x7F800000 == 0) {
65 math.forceEval(x * x);65 math.doNotOptimizeAway(x * x);
66 }66 }
67 return x;67 return x;
68 }68 }
lib/std/math/round.zig+3-3
...@@ -43,7 +43,7 @@ fn round32(x_: f32) f32 {...@@ -43,7 +43,7 @@ fn round32(x_: f32) f32 {
43 x = -x;43 x = -x;
44 }44 }
45 if (e < 0x7F - 1) {45 if (e < 0x7F - 1) {
46 math.forceEval(x + math.f32_toint);46 math.doNotOptimizeAway(x + math.f32_toint);
47 return 0 * @bitCast(f32, u);47 return 0 * @bitCast(f32, u);
48 }48 }
4949
...@@ -76,7 +76,7 @@ fn round64(x_: f64) f64 {...@@ -76,7 +76,7 @@ fn round64(x_: f64) f64 {
76 x = -x;76 x = -x;
77 }77 }
78 if (e < 0x3ff - 1) {78 if (e < 0x3ff - 1) {
79 math.forceEval(x + math.f64_toint);79 math.doNotOptimizeAway(x + math.f64_toint);
80 return 0 * @bitCast(f64, u);80 return 0 * @bitCast(f64, u);
81 }81 }
8282
...@@ -109,7 +109,7 @@ fn round128(x_: f128) f128 {...@@ -109,7 +109,7 @@ fn round128(x_: f128) f128 {
109 x = -x;109 x = -x;
110 }110 }
111 if (e < 0x3FFF - 1) {111 if (e < 0x3FFF - 1) {
112 math.forceEval(x + math.f64_toint);112 math.doNotOptimizeAway(x + math.f64_toint);
113 return 0 * @bitCast(f128, u);113 return 0 * @bitCast(f128, u);
114 }114 }
115115
lib/std/math/tanh.zig+2-2
...@@ -67,7 +67,7 @@ fn tanh32(x: f32) f32 {...@@ -67,7 +67,7 @@ fn tanh32(x: f32) f32 {
67 }67 }
68 // |x| is subnormal68 // |x| is subnormal
69 else {69 else {
70 math.forceEval(x * x);70 math.doNotOptimizeAway(x * x);
71 t = x;71 t = x;
72 }72 }
7373
...@@ -112,7 +112,7 @@ fn tanh64(x: f64) f64 {...@@ -112,7 +112,7 @@ fn tanh64(x: f64) f64 {
112 }112 }
113 // |x| is subnormal113 // |x| is subnormal
114 else {114 else {
115 math.forceEval(@floatCast(f32, x));115 math.doNotOptimizeAway(@floatCast(f32, x));
116 t = x;116 t = x;
117 }117 }
118118
lib/std/math/trunc.zig+3-3
...@@ -46,7 +46,7 @@ fn trunc32(x: f32) f32 {...@@ -46,7 +46,7 @@ fn trunc32(x: f32) f32 {
46 if (u & m == 0) {46 if (u & m == 0) {
47 return x;47 return x;
48 } else {48 } else {
49 math.forceEval(x + 0x1p120);49 math.doNotOptimizeAway(x + 0x1p120);
50 return @bitCast(f32, u & ~m);50 return @bitCast(f32, u & ~m);
51 }51 }
52}52}
...@@ -67,7 +67,7 @@ fn trunc64(x: f64) f64 {...@@ -67,7 +67,7 @@ fn trunc64(x: f64) f64 {
67 if (u & m == 0) {67 if (u & m == 0) {
68 return x;68 return x;
69 } else {69 } else {
70 math.forceEval(x + 0x1p120);70 math.doNotOptimizeAway(x + 0x1p120);
71 return @bitCast(f64, u & ~m);71 return @bitCast(f64, u & ~m);
72 }72 }
73}73}
...@@ -88,7 +88,7 @@ fn trunc128(x: f128) f128 {...@@ -88,7 +88,7 @@ fn trunc128(x: f128) f128 {
88 if (u & m == 0) {88 if (u & m == 0) {
89 return x;89 return x;
90 } else {90 } else {
91 math.forceEval(x + 0x1p120);91 math.doNotOptimizeAway(x + 0x1p120);
92 return @bitCast(f128, u & ~m);92 return @bitCast(f128, u & ~m);
93 }93 }
94}94}
lib/std/mem.zig+41
...@@ -893,6 +893,36 @@ test "mem.indexOf" {...@@ -893,6 +893,36 @@ test "mem.indexOf" {
893 testing.expect(lastIndexOfScalar(u8, "boo", 'o').? == 2);893 testing.expect(lastIndexOfScalar(u8, "boo", 'o').? == 2);
894}894}
895895
896/// Returns the number of needles inside the haystack
897/// needle.len must be > 0
898/// does not count overlapping needles
899pub fn count(comptime T: type, haystack: []const T, needle: []const T) usize {
900 assert(needle.len > 0);
901 var i: usize = 0;
902 var found: usize = 0;
903
904 while (indexOfPos(T, haystack, i, needle)) |idx| {
905 i = idx + needle.len;
906 found += 1;
907 }
908
909 return found;
910}
911
912test "mem.count" {
913 testing.expect(count(u8, "", "h") == 0);
914 testing.expect(count(u8, "h", "h") == 1);
915 testing.expect(count(u8, "hh", "h") == 2);
916 testing.expect(count(u8, "world!", "hello") == 0);
917 testing.expect(count(u8, "hello world!", "hello") == 1);
918 testing.expect(count(u8, " abcabc abc", "abc") == 3);
919 testing.expect(count(u8, "udexdcbvbruhasdrw", "bruh") == 1);
920 testing.expect(count(u8, "foo bar", "o bar") == 1);
921 testing.expect(count(u8, "foofoofoo", "foo") == 3);
922 testing.expect(count(u8, "fffffff", "ff") == 3);
923 testing.expect(count(u8, "owowowu", "owowu") == 1);
924}
925
896/// Reads an integer from memory with size equal to bytes.len.926/// Reads an integer from memory with size equal to bytes.len.
897/// T specifies the return type, which must be large enough to store927/// T specifies the return type, which must be large enough to store
898/// the result.928/// the result.
...@@ -2158,6 +2188,17 @@ pub fn alignForwardGeneric(comptime T: type, addr: T, alignment: T) T {...@@ -2158,6 +2188,17 @@ pub fn alignForwardGeneric(comptime T: type, addr: T, alignment: T) T {
2158 return alignBackwardGeneric(T, addr + (alignment - 1), alignment);2188 return alignBackwardGeneric(T, addr + (alignment - 1), alignment);
2159}2189}
21602190
2191/// Force an evaluation of the expression; this tries to prevent
2192/// the compiler from optimizing the computation away even if the
2193/// result eventually gets discarded.
2194pub fn doNotOptimizeAway(val: anytype) void {
2195 asm volatile (""
2196 :
2197 : [val] "rm" (val)
2198 : "memory"
2199 );
2200}
2201
2161test "alignForward" {2202test "alignForward" {
2162 testing.expect(alignForward(1, 1) == 1);2203 testing.expect(alignForward(1, 1) == 1);
2163 testing.expect(alignForward(2, 1) == 2);2204 testing.expect(alignForward(2, 1) == 2);
lib/std/meta/trailer_flags.zig+86-49
...@@ -8,6 +8,7 @@ const meta = std.meta;...@@ -8,6 +8,7 @@ const meta = std.meta;
8const testing = std.testing;8const testing = std.testing;
9const mem = std.mem;9const mem = std.mem;
10const assert = std.debug.assert;10const assert = std.debug.assert;
11const TypeInfo = std.builtin.TypeInfo;
1112
12/// This is useful for saving memory when allocating an object that has many13/// This is useful for saving memory when allocating an object that has many
13/// optional components. The optional objects are allocated sequentially in14/// optional components. The optional objects are allocated sequentially in
...@@ -17,91 +18,125 @@ pub fn TrailerFlags(comptime Fields: type) type {...@@ -17,91 +18,125 @@ pub fn TrailerFlags(comptime Fields: type) type {
17 return struct {18 return struct {
18 bits: Int,19 bits: Int,
1920
20 pub const Int = @Type(.{ .Int = .{ .bits = bit_count, .is_signed = false } });21 pub const Int = meta.Int(false, bit_count);
21 pub const bit_count = @typeInfo(Fields).Struct.fields.len;22 pub const bit_count = @typeInfo(Fields).Struct.fields.len;
2223
24 pub const FieldEnum = blk: {
25 comptime var fields: [bit_count]TypeInfo.EnumField = undefined;
26 inline for (@typeInfo(Fields).Struct.fields) |struct_field, i|
27 fields[i] = .{ .name = struct_field.name, .value = i };
28 break :blk @Type(.{
29 .Enum = .{
30 .layout = .Auto,
31 .tag_type = std.math.IntFittingRange(0, bit_count - 1),
32 .fields = &fields,
33 .decls = &[_]TypeInfo.Declaration{},
34 .is_exhaustive = true,
35 },
36 });
37 };
38
39 pub const InitStruct = blk: {
40 comptime var fields: [bit_count]TypeInfo.StructField = undefined;
41 inline for (@typeInfo(Fields).Struct.fields) |struct_field, i| {
42 fields[i] = TypeInfo.StructField{
43 .name = struct_field.name,
44 .field_type = ?struct_field.field_type,
45 .default_value = @as(
46 ??struct_field.field_type,
47 @as(?struct_field.field_type, null),
48 ),
49 };
50 }
51 break :blk @Type(.{
52 .Struct = .{
53 .layout = .Auto,
54 .fields = &fields,
55 .decls = &[_]TypeInfo.Declaration{},
56 .is_tuple = false,
57 },
58 });
59 };
60
23 pub const Self = @This();61 pub const Self = @This();
2462
25 pub fn has(self: Self, comptime name: []const u8) bool {63 pub fn has(self: Self, comptime field: FieldEnum) bool {
26 const field_index = meta.fieldIndex(Fields, name).?;64 const field_index = @enumToInt(field);
27 return (self.bits & (1 << field_index)) != 0;65 return (self.bits & (1 << field_index)) != 0;
28 }66 }
2967
30 pub fn get(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime name: []const u8) ?Field(name) {68 pub fn get(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime field: FieldEnum) ?Field(field) {
31 if (!self.has(name))69 if (!self.has(field))
32 return null;70 return null;
33 return self.ptrConst(p, name).*;71 return self.ptrConst(p, field).*;
34 }72 }
3573
36 pub fn setFlag(self: *Self, comptime name: []const u8) void {74 pub fn setFlag(self: *Self, comptime field: FieldEnum) void {
37 const field_index = meta.fieldIndex(Fields, name).?;75 const field_index = @enumToInt(field);
38 self.bits |= 1 << field_index;76 self.bits |= 1 << field_index;
39 }77 }
4078
41 /// `fields` is a struct with each field set to an optional value.79 /// `fields` is a struct with each field set to an optional value.
42 /// Missing fields are assumed to be `null`.
43 /// Only the non-null bits are observed and are used to set the flag bits.80 /// Only the non-null bits are observed and are used to set the flag bits.
44 pub fn init(fields: anytype) Self {81 pub fn init(fields: InitStruct) Self {
45 var self: Self = .{ .bits = 0 };82 var self: Self = .{ .bits = 0 };
46 inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {83 inline for (@typeInfo(Fields).Struct.fields) |field, i| {
47 const opt: ?Field(field.name) = @field(fields, field.name);84 if (@field(fields, field.name)) |_|
48 const field_index = meta.fieldIndex(Fields, field.name).?;85 self.bits |= 1 << i;
49 self.bits |= @as(Int, @boolToInt(opt != null)) << field_index;
50 }86 }
51 return self;87 return self;
52 }88 }
5389
54 /// `fields` is a struct with each field set to an optional value (same as `init`).90 /// `fields` is a struct with each field set to an optional value (same as `init`).
55 /// Missing fields are assumed to be `null`.91 pub fn setMany(self: Self, p: [*]align(@alignOf(Fields)) u8, fields: InitStruct) void {
56 pub fn setMany(self: Self, p: [*]align(@alignOf(Fields)) u8, fields: anytype) void {92 inline for (@typeInfo(Fields).Struct.fields) |field, i| {
57 inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {93 if (@field(fields, field.name)) |value|
58 const opt: ?Field(field.name) = @field(fields, field.name);94 self.set(p, @intToEnum(FieldEnum, i), value);
59 if (opt) |value| {
60 self.set(p, field.name, value);
61 }
62 }95 }
63 }96 }
6497
65 pub fn set(98 pub fn set(
66 self: Self,99 self: Self,
67 p: [*]align(@alignOf(Fields)) u8,100 p: [*]align(@alignOf(Fields)) u8,
68 comptime name: []const u8,101 comptime field: FieldEnum,
69 value: Field(name),102 value: Field(field),
70 ) void {103 ) void {
71 self.ptr(p, name).* = value;104 self.ptr(p, field).* = value;
72 }105 }
73106
74 pub fn ptr(self: Self, p: [*]align(@alignOf(Fields)) u8, comptime name: []const u8) *Field(name) {107 pub fn ptr(self: Self, p: [*]align(@alignOf(Fields)) u8, comptime field: FieldEnum) *Field(field) {
75 if (@sizeOf(Field(name)) == 0)108 if (@sizeOf(Field(field)) == 0)
76 return undefined;109 return undefined;
77 const off = self.offset(p, name);110 const off = self.offset(p, field);
78 return @ptrCast(*Field(name), @alignCast(@alignOf(Field(name)), p + off));111 return @ptrCast(*Field(field), @alignCast(@alignOf(Field(field)), p + off));
79 }112 }
80113
81 pub fn ptrConst(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime name: []const u8) *const Field(name) {114 pub fn ptrConst(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime field: FieldEnum) *const Field(field) {
82 if (@sizeOf(Field(name)) == 0)115 if (@sizeOf(Field(field)) == 0)
83 return undefined;116 return undefined;
84 const off = self.offset(p, name);117 const off = self.offset(p, field);
85 return @ptrCast(*const Field(name), @alignCast(@alignOf(Field(name)), p + off));118 return @ptrCast(*const Field(field), @alignCast(@alignOf(Field(field)), p + off));
86 }119 }
87120
88 pub fn offset(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime name: []const u8) usize {121 pub fn offset(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime field: FieldEnum) usize {
89 var off: usize = 0;122 var off: usize = 0;
90 inline for (@typeInfo(Fields).Struct.fields) |field, i| {123 inline for (@typeInfo(Fields).Struct.fields) |field_info, i| {
91 const active = (self.bits & (1 << i)) != 0;124 const active = (self.bits & (1 << i)) != 0;
92 if (comptime mem.eql(u8, field.name, name)) {125 if (i == @enumToInt(field)) {
93 assert(active);126 assert(active);
94 return mem.alignForwardGeneric(usize, off, @alignOf(field.field_type));127 return mem.alignForwardGeneric(usize, off, @alignOf(field_info.field_type));
95 } else if (active) {128 } else if (active) {
96 off = mem.alignForwardGeneric(usize, off, @alignOf(field.field_type));129 off = mem.alignForwardGeneric(usize, off, @alignOf(field_info.field_type));
97 off += @sizeOf(field.field_type);130 off += @sizeOf(field_info.field_type);
98 }131 }
99 }132 }
100 @compileError("no field named " ++ name ++ " in type " ++ @typeName(Fields));
101 }133 }
102134
103 pub fn Field(comptime name: []const u8) type {135 pub fn Field(comptime field: FieldEnum) type {
104 return meta.fieldInfo(Fields, name).field_type;136 inline for (@typeInfo(Fields).Struct.fields) |field_info, i| {
137 if (i == @enumToInt(field))
138 return field_info.field_type;
139 }
105 }140 }
106141
107 pub fn sizeInBytes(self: Self) usize {142 pub fn sizeInBytes(self: Self) usize {
...@@ -125,6 +160,8 @@ test "TrailerFlags" {...@@ -125,6 +160,8 @@ test "TrailerFlags" {
125 b: bool,160 b: bool,
126 c: u64,161 c: u64,
127 });162 });
163 testing.expectEqual(u2, @TagType(Flags.FieldEnum));
164
128 var flags = Flags.init(.{165 var flags = Flags.init(.{
129 .b = true,166 .b = true,
130 .c = 1234,167 .c = 1234,
...@@ -132,19 +169,19 @@ test "TrailerFlags" {...@@ -132,19 +169,19 @@ test "TrailerFlags" {
132 const slice = try testing.allocator.allocAdvanced(u8, 8, flags.sizeInBytes(), .exact);169 const slice = try testing.allocator.allocAdvanced(u8, 8, flags.sizeInBytes(), .exact);
133 defer testing.allocator.free(slice);170 defer testing.allocator.free(slice);
134171
135 flags.set(slice.ptr, "b", false);172 flags.set(slice.ptr, .b, false);
136 flags.set(slice.ptr, "c", 12345678);173 flags.set(slice.ptr, .c, 12345678);
137174
138 testing.expect(flags.get(slice.ptr, "a") == null);175 testing.expect(flags.get(slice.ptr, .a) == null);
139 testing.expect(!flags.get(slice.ptr, "b").?);176 testing.expect(!flags.get(slice.ptr, .b).?);
140 testing.expect(flags.get(slice.ptr, "c").? == 12345678);177 testing.expect(flags.get(slice.ptr, .c).? == 12345678);
141178
142 flags.setMany(slice.ptr, .{179 flags.setMany(slice.ptr, .{
143 .b = true,180 .b = true,
144 .c = 5678,181 .c = 5678,
145 });182 });
146183
147 testing.expect(flags.get(slice.ptr, "a") == null);184 testing.expect(flags.get(slice.ptr, .a) == null);
148 testing.expect(flags.get(slice.ptr, "b").?);185 testing.expect(flags.get(slice.ptr, .b).?);
149 testing.expect(flags.get(slice.ptr, "c").? == 5678);186 testing.expect(flags.get(slice.ptr, .c).? == 5678);
150}187}
lib/std/os/test.zig+24-2
...@@ -125,7 +125,20 @@ test "symlink with relative paths" {...@@ -125,7 +125,20 @@ test "symlink with relative paths" {
125 try cwd.writeFile("file.txt", "nonsense");125 try cwd.writeFile("file.txt", "nonsense");
126126
127 if (builtin.os.tag == .windows) {127 if (builtin.os.tag == .windows) {
128 try os.windows.CreateSymbolicLink(cwd.fd, &[_]u16{ 's', 'y', 'm', 'l', 'i', 'n', 'k', 'e', 'd' }, &[_]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' }, false);128 os.windows.CreateSymbolicLink(
129 cwd.fd,
130 &[_]u16{ 's', 'y', 'm', 'l', 'i', 'n', 'k', 'e', 'd' },
131 &[_]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' },
132 false,
133 ) catch |err| switch (err) {
134 // Symlink requires admin privileges on windows, so this test can legitimately fail.
135 error.AccessDenied => {
136 try cwd.deleteFile("file.txt");
137 try cwd.deleteFile("symlinked");
138 return error.SkipZigTest;
139 },
140 else => return err,
141 };
129 } else {142 } else {
130 try os.symlink("file.txt", "symlinked");143 try os.symlink("file.txt", "symlinked");
131 }144 }
...@@ -183,7 +196,16 @@ test "readlinkat" {...@@ -183,7 +196,16 @@ test "readlinkat" {
183196
184 // create a symbolic link197 // create a symbolic link
185 if (builtin.os.tag == .windows) {198 if (builtin.os.tag == .windows) {
186 try os.windows.CreateSymbolicLink(tmp.dir.fd, &[_]u16{ 'l', 'i', 'n', 'k' }, &[_]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' }, false);199 os.windows.CreateSymbolicLink(
200 tmp.dir.fd,
201 &[_]u16{ 'l', 'i', 'n', 'k' },
202 &[_]u16{ 'f', 'i', 'l', 'e', '.', 't', 'x', 't' },
203 false,
204 ) catch |err| switch (err) {
205 // Symlink requires admin privileges on windows, so this test can legitimately fail.
206 error.AccessDenied => return error.SkipZigTest,
207 else => return err,
208 };
187 } else {209 } else {
188 try os.symlinkat("file.txt", tmp.dir.fd, "link");210 try os.symlinkat("file.txt", tmp.dir.fd, "link");
189 }211 }
lib/std/os/uefi/protocols/simple_text_input_protocol.zig+1-1
...@@ -11,7 +11,7 @@ const Status = uefi.Status;...@@ -11,7 +11,7 @@ const Status = uefi.Status;
1111
12/// Character input devices, e.g. Keyboard12/// Character input devices, e.g. Keyboard
13pub const SimpleTextInputProtocol = extern struct {13pub const SimpleTextInputProtocol = extern struct {
14 _reset: fn (*const SimpleTextInputProtocol, bool) callconv(.C) usize,14 _reset: fn (*const SimpleTextInputProtocol, bool) callconv(.C) Status,
15 _read_key_stroke: fn (*const SimpleTextInputProtocol, *InputKey) callconv(.C) Status,15 _read_key_stroke: fn (*const SimpleTextInputProtocol, *InputKey) callconv(.C) Status,
16 wait_for_key: Event,16 wait_for_key: Event,
1717
lib/std/os/windows.zig+16-3
...@@ -164,7 +164,7 @@ pub fn CreateEventExW(attributes: ?*SECURITY_ATTRIBUTES, nameW: [*:0]const u16,...@@ -164,7 +164,7 @@ pub fn CreateEventExW(attributes: ?*SECURITY_ATTRIBUTES, nameW: [*:0]const u16,
164 }164 }
165}165}
166166
167pub const DeviceIoControlError = error{Unexpected};167pub const DeviceIoControlError = error{ AccessDenied, Unexpected };
168168
169/// A Zig wrapper around `NtDeviceIoControlFile` and `NtFsControlFile` syscalls.169/// A Zig wrapper around `NtDeviceIoControlFile` and `NtFsControlFile` syscalls.
170/// It implements similar behavior to `DeviceIoControl` and is meant to serve170/// It implements similar behavior to `DeviceIoControl` and is meant to serve
...@@ -216,6 +216,7 @@ pub fn DeviceIoControl(...@@ -216,6 +216,7 @@ pub fn DeviceIoControl(
216 };216 };
217 switch (rc) {217 switch (rc) {
218 .SUCCESS => {},218 .SUCCESS => {},
219 .PRIVILEGE_NOT_HELD => return error.AccessDenied,
219 .INVALID_PARAMETER => unreachable,220 .INVALID_PARAMETER => unreachable,
220 else => return unexpectedStatus(rc),221 else => return unexpectedStatus(rc),
221 }222 }
...@@ -593,6 +594,12 @@ pub const CreateSymbolicLinkError = error{...@@ -593,6 +594,12 @@ pub const CreateSymbolicLinkError = error{
593 Unexpected,594 Unexpected,
594};595};
595596
597/// Needs either:
598/// - `SeCreateSymbolicLinkPrivilege` privilege
599/// or
600/// - Developper mode on Windows 10
601/// otherwise fails with `error.AccessDenied`. In which case `sym_link_path` may still
602/// be created on the file system but will lack reparse processing data applied to it.
596pub fn CreateSymbolicLink(603pub fn CreateSymbolicLink(
597 dir: ?HANDLE,604 dir: ?HANDLE,
598 sym_link_path: []const u16,605 sym_link_path: []const u16,
...@@ -710,7 +717,10 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin...@@ -710,7 +717,10 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin
710 defer CloseHandle(result_handle);717 defer CloseHandle(result_handle);
711718
712 var reparse_buf: [MAXIMUM_REPARSE_DATA_BUFFER_SIZE]u8 = undefined;719 var reparse_buf: [MAXIMUM_REPARSE_DATA_BUFFER_SIZE]u8 = undefined;
713 _ = try DeviceIoControl(result_handle, FSCTL_GET_REPARSE_POINT, null, reparse_buf[0..]);720 _ = DeviceIoControl(result_handle, FSCTL_GET_REPARSE_POINT, null, reparse_buf[0..]) catch |err| switch (err) {
721 error.AccessDenied => unreachable,
722 else => |e| return e,
723 };
714724
715 const reparse_struct = @ptrCast(*const REPARSE_DATA_BUFFER, @alignCast(@alignOf(REPARSE_DATA_BUFFER), &reparse_buf[0]));725 const reparse_struct = @ptrCast(*const REPARSE_DATA_BUFFER, @alignCast(@alignOf(REPARSE_DATA_BUFFER), &reparse_buf[0]));
716 switch (reparse_struct.ReparseTag) {726 switch (reparse_struct.ReparseTag) {
...@@ -992,7 +1002,10 @@ pub fn GetFinalPathNameByHandle(...@@ -992,7 +1002,10 @@ pub fn GetFinalPathNameByHandle(
992 input_struct.DeviceNameLength = @intCast(USHORT, volume_name.FileNameLength);1002 input_struct.DeviceNameLength = @intCast(USHORT, volume_name.FileNameLength);
993 @memcpy(input_buf[@sizeOf(MOUNTMGR_MOUNT_POINT)..], @ptrCast([*]const u8, &volume_name.FileName[0]), volume_name.FileNameLength);1003 @memcpy(input_buf[@sizeOf(MOUNTMGR_MOUNT_POINT)..], @ptrCast([*]const u8, &volume_name.FileName[0]), volume_name.FileNameLength);
9941004
995 try DeviceIoControl(mgmt_handle, IOCTL_MOUNTMGR_QUERY_POINTS, input_buf[0..], output_buf[0..]);1005 DeviceIoControl(mgmt_handle, IOCTL_MOUNTMGR_QUERY_POINTS, input_buf[0..], output_buf[0..]) catch |err| switch (err) {
1006 error.AccessDenied => unreachable,
1007 else => |e| return e,
1008 };
996 const mount_points_struct = @ptrCast(*const MOUNTMGR_MOUNT_POINTS, &output_buf[0]);1009 const mount_points_struct = @ptrCast(*const MOUNTMGR_MOUNT_POINTS, &output_buf[0]);
9971010
998 const mount_points = @ptrCast(1011 const mount_points = @ptrCast(
lib/std/special/compiler_rt.zig+3-1
...@@ -100,7 +100,8 @@ comptime {...@@ -100,7 +100,8 @@ comptime {
100 @export(@import("compiler_rt/floatditf.zig").__floatditf, .{ .name = "__floatditf", .linkage = linkage });100 @export(@import("compiler_rt/floatditf.zig").__floatditf, .{ .name = "__floatditf", .linkage = linkage });
101 @export(@import("compiler_rt/floattitf.zig").__floattitf, .{ .name = "__floattitf", .linkage = linkage });101 @export(@import("compiler_rt/floattitf.zig").__floattitf, .{ .name = "__floattitf", .linkage = linkage });
102 @export(@import("compiler_rt/floattidf.zig").__floattidf, .{ .name = "__floattidf", .linkage = linkage });102 @export(@import("compiler_rt/floattidf.zig").__floattidf, .{ .name = "__floattidf", .linkage = linkage });
103 @export(@import("compiler_rt/floattisf.zig").__floattisf, .{ .name = "__floattisf", .linkage = linkage });103 @export(@import("compiler_rt/floatXisf.zig").__floattisf, .{ .name = "__floattisf", .linkage = linkage });
104 @export(@import("compiler_rt/floatXisf.zig").__floatdisf, .{ .name = "__floatdisf", .linkage = linkage });
104105
105 @export(@import("compiler_rt/floatunditf.zig").__floatunditf, .{ .name = "__floatunditf", .linkage = linkage });106 @export(@import("compiler_rt/floatunditf.zig").__floatunditf, .{ .name = "__floatunditf", .linkage = linkage });
106 @export(@import("compiler_rt/floatunsitf.zig").__floatunsitf, .{ .name = "__floatunsitf", .linkage = linkage });107 @export(@import("compiler_rt/floatunsitf.zig").__floatunsitf, .{ .name = "__floatunsitf", .linkage = linkage });
...@@ -204,6 +205,7 @@ comptime {...@@ -204,6 +205,7 @@ comptime {
204 @export(@import("compiler_rt/extendXfYf2.zig").__aeabi_f2d, .{ .name = "__aeabi_f2d", .linkage = linkage });205 @export(@import("compiler_rt/extendXfYf2.zig").__aeabi_f2d, .{ .name = "__aeabi_f2d", .linkage = linkage });
205 @export(@import("compiler_rt/floatsiXf.zig").__aeabi_i2d, .{ .name = "__aeabi_i2d", .linkage = linkage });206 @export(@import("compiler_rt/floatsiXf.zig").__aeabi_i2d, .{ .name = "__aeabi_i2d", .linkage = linkage });
206 @export(@import("compiler_rt/floatdidf.zig").__aeabi_l2d, .{ .name = "__aeabi_l2d", .linkage = linkage });207 @export(@import("compiler_rt/floatdidf.zig").__aeabi_l2d, .{ .name = "__aeabi_l2d", .linkage = linkage });
208 @export(@import("compiler_rt/floatXisf.zig").__aeabi_l2f, .{ .name = "__aeabi_l2f", .linkage = linkage });
207 @export(@import("compiler_rt/floatunsidf.zig").__aeabi_ui2d, .{ .name = "__aeabi_ui2d", .linkage = linkage });209 @export(@import("compiler_rt/floatunsidf.zig").__aeabi_ui2d, .{ .name = "__aeabi_ui2d", .linkage = linkage });
208 @export(@import("compiler_rt/floatundidf.zig").__aeabi_ul2d, .{ .name = "__aeabi_ul2d", .linkage = linkage });210 @export(@import("compiler_rt/floatundidf.zig").__aeabi_ul2d, .{ .name = "__aeabi_ul2d", .linkage = linkage });
209 @export(@import("compiler_rt/floatunsisf.zig").__aeabi_ui2f, .{ .name = "__aeabi_ui2f", .linkage = linkage });211 @export(@import("compiler_rt/floatunsisf.zig").__aeabi_ui2f, .{ .name = "__aeabi_ui2f", .linkage = linkage });
lib/std/special/compiler_rt/floatXisf.zig created+97
...@@ -0,0 +1,97 @@
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2015-2020 Zig Contributors
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.
6const builtin = @import("builtin");
7const std = @import("std");
8const maxInt = std.math.maxInt;
9
10const FLT_MANT_DIG = 24;
11
12fn __floatXisf(comptime T: type, arg: T) f32 {
13 @setRuntimeSafety(builtin.is_test);
14
15 const Z = std.meta.Int(false, T.bit_count);
16 const S = std.meta.Int(false, T.bit_count - @clz(Z, @as(Z, T.bit_count) - 1));
17
18 if (arg == 0) {
19 return @as(f32, 0.0);
20 }
21
22 var ai = arg;
23 const N: u32 = T.bit_count;
24 const si = ai >> @intCast(S, (N - 1));
25 ai = ((ai ^ si) -% si);
26 var a = @bitCast(Z, ai);
27
28 const sd = @bitCast(i32, N - @clz(Z, a)); // number of significant digits
29 var e: i32 = sd - 1; // exponent
30
31 if (sd > FLT_MANT_DIG) {
32 // start: 0000000000000000000001xxxxxxxxxxxxxxxxxxxxxxPQxxxxxxxxxxxxxxxxxx
33 // finish: 000000000000000000000000000000000000001xxxxxxxxxxxxxxxxxxxxxxPQR
34 // 12345678901234567890123456
35 // 1 = msb 1 bit
36 // P = bit FLT_MANT_DIG-1 bits to the right of 1
37 // Q = bit FLT_MANT_DIG bits to the right of 1
38 // R = "or" of all bits to the right of Q
39 switch (sd) {
40 FLT_MANT_DIG + 1 => {
41 a <<= 1;
42 },
43 FLT_MANT_DIG + 2 => {},
44 else => {
45 const shift1_amt = @intCast(i32, sd - (FLT_MANT_DIG + 2));
46 const shift1_amt_u7 = @intCast(S, shift1_amt);
47
48 const shift2_amt = @intCast(i32, N + (FLT_MANT_DIG + 2)) - sd;
49 const shift2_amt_u7 = @intCast(S, shift2_amt);
50
51 a = (a >> shift1_amt_u7) | @boolToInt((a & (@intCast(Z, maxInt(Z)) >> shift2_amt_u7)) != 0);
52 },
53 }
54 // finish
55 a |= @boolToInt((a & 4) != 0); // Or P into R
56 a += 1; // round - this step may add a significant bit
57 a >>= 2; // dump Q and R
58 // a is now rounded to FLT_MANT_DIG or FLT_MANT_DIG+1 bits
59 if ((a & (@as(Z, 1) << FLT_MANT_DIG)) != 0) {
60 a >>= 1;
61 e += 1;
62 }
63 // a is now rounded to FLT_MANT_DIG bits
64 } else {
65 a <<= @intCast(S, FLT_MANT_DIG - sd);
66 // a is now rounded to FLT_MANT_DIG bits
67 }
68
69 const s = @bitCast(Z, arg) >> (T.bit_count - 32);
70 const r = (@intCast(u32, s) & 0x80000000) | // sign
71 (@intCast(u32, (e + 127)) << 23) | // exponent
72 (@truncate(u32, a) & 0x007fffff); // mantissa-high
73
74 return @bitCast(f32, r);
75}
76
77pub fn __floatdisf(arg: i64) callconv(.C) f32 {
78 @setRuntimeSafety(builtin.is_test);
79 return @call(.{ .modifier = .always_inline }, __floatXisf, .{ i64, arg });
80}
81
82pub fn __floattisf(arg: i128) callconv(.C) f32 {
83 @setRuntimeSafety(builtin.is_test);
84 return @call(.{ .modifier = .always_inline }, __floatXisf, .{ i128, arg });
85}
86
87pub fn __aeabi_l2f(arg: i64) callconv(.AAPCS) f32 {
88 @setRuntimeSafety(false);
89 return @call(.{ .modifier = .always_inline }, __floatdisf, .{arg});
90}
91
92test "import floattisf" {
93 _ = @import("floattisf_test.zig");
94}
95test "import floatdisf" {
96 _ = @import("floattisf_test.zig");
97}
lib/std/special/compiler_rt/floatdisf_test.zig created+37
...@@ -0,0 +1,37 @@
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2015-2020 Zig Contributors
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.
6const __floatdisf = @import("floatXisf.zig").__floatdisf;
7const testing = @import("std").testing;
8
9fn test__floatdisf(a: i64, expected: f32) void {
10 const x = __floatdisf(a);
11 testing.expect(x == expected);
12}
13
14test "floatdisf" {
15 test__floatdisf(0, 0.0);
16 test__floatdisf(1, 1.0);
17 test__floatdisf(2, 2.0);
18 test__floatdisf(-1, -1.0);
19 test__floatdisf(-2, -2.0);
20 test__floatdisf(0x7FFFFF8000000000, 0x1.FFFFFEp+62);
21 test__floatdisf(0x7FFFFF0000000000, 0x1.FFFFFCp+62);
22 test__floatdisf(0x8000008000000000, -0x1.FFFFFEp+62);
23 test__floatdisf(0x8000010000000000, -0x1.FFFFFCp+62);
24 test__floatdisf(0x8000000000000000, -0x1.000000p+63);
25 test__floatdisf(0x8000000000000001, -0x1.000000p+63);
26 test__floatdisf(0x0007FB72E8000000, 0x1.FEDCBAp+50);
27 test__floatdisf(0x0007FB72EA000000, 0x1.FEDCBAp+50);
28 test__floatdisf(0x0007FB72EB000000, 0x1.FEDCBAp+50);
29 test__floatdisf(0x0007FB72EBFFFFFF, 0x1.FEDCBAp+50);
30 test__floatdisf(0x0007FB72EC000000, 0x1.FEDCBCp+50);
31 test__floatdisf(0x0007FB72E8000001, 0x1.FEDCBAp+50);
32 test__floatdisf(0x0007FB72E6000000, 0x1.FEDCBAp+50);
33 test__floatdisf(0x0007FB72E7000000, 0x1.FEDCBAp+50);
34 test__floatdisf(0x0007FB72E7FFFFFF, 0x1.FEDCBAp+50);
35 test__floatdisf(0x0007FB72E4000001, 0x1.FEDCBAp+50);
36 test__floatdisf(0x0007FB72E4000000, 0x1.FEDCB8p+50);
37}
lib/std/special/compiler_rt/floattisf.zig deleted-76
...@@ -1,76 +0,0 @@
1// SPDX-License-Identifier: MIT
2// Copyright (c) 2015-2020 Zig Contributors
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.
6const builtin = @import("builtin");
7const is_test = builtin.is_test;
8const std = @import("std");
9const maxInt = std.math.maxInt;
10
11const FLT_MANT_DIG = 24;
12
13pub fn __floattisf(arg: i128) callconv(.C) f32 {
14 @setRuntimeSafety(is_test);
15
16 if (arg == 0)
17 return 0.0;
18
19 var ai = arg;
20 const N: u32 = 128;
21 const si = ai >> @intCast(u7, (N - 1));
22 ai = ((ai ^ si) -% si);
23 var a = @bitCast(u128, ai);
24
25 const sd = @bitCast(i32, N - @clz(u128, a)); // number of significant digits
26 var e: i32 = sd - 1; // exponent
27
28 if (sd > FLT_MANT_DIG) {
29 // start: 0000000000000000000001xxxxxxxxxxxxxxxxxxxxxxPQxxxxxxxxxxxxxxxxxx
30 // finish: 000000000000000000000000000000000000001xxxxxxxxxxxxxxxxxxxxxxPQR
31 // 12345678901234567890123456
32 // 1 = msb 1 bit
33 // P = bit FLT_MANT_DIG-1 bits to the right of 1
34 // Q = bit FLT_MANT_DIG bits to the right of 1
35 // R = "or" of all bits to the right of Q
36 switch (sd) {
37 FLT_MANT_DIG + 1 => {
38 a <<= 1;
39 },
40 FLT_MANT_DIG + 2 => {},
41 else => {
42 const shift1_amt = @intCast(i32, sd - (FLT_MANT_DIG + 2));
43 const shift1_amt_u7 = @intCast(u7, shift1_amt);
44
45 const shift2_amt = @intCast(i32, N + (FLT_MANT_DIG + 2)) - sd;
46 const shift2_amt_u7 = @intCast(u7, shift2_amt);
47
48 a = (a >> shift1_amt_u7) | @boolToInt((a & (@intCast(u128, maxInt(u128)) >> shift2_amt_u7)) != 0);
49 },
50 }
51 // finish
52 a |= @boolToInt((a & 4) != 0); // Or P into R
53 a += 1; // round - this step may add a significant bit
54 a >>= 2; // dump Q and R
55 // a is now rounded to FLT_MANT_DIG or FLT_MANT_DIG+1 bits
56 if ((a & (@as(u128, 1) << FLT_MANT_DIG)) != 0) {
57 a >>= 1;
58 e += 1;
59 }
60 // a is now rounded to FLT_MANT_DIG bits
61 } else {
62 a <<= @intCast(u7, FLT_MANT_DIG - sd);
63 // a is now rounded to FLT_MANT_DIG bits
64 }
65
66 const s = @bitCast(u128, arg) >> (128 - 32);
67 const r = (@intCast(u32, s) & 0x80000000) | // sign
68 (@intCast(u32, (e + 127)) << 23) | // exponent
69 (@truncate(u32, a) & 0x007fffff); // mantissa-high
70
71 return @bitCast(f32, r);
72}
73
74test "import floattisf" {
75 _ = @import("floattisf_test.zig");
76}
lib/std/special/compiler_rt/floattisf_test.zig+1-1
...@@ -3,7 +3,7 @@...@@ -3,7 +3,7 @@
3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.3// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
4// The MIT license requires this copyright notice to be included in all copies4// The MIT license requires this copyright notice to be included in all copies
5// and substantial portions of the software.5// and substantial portions of the software.
6const __floattisf = @import("floattisf.zig").__floattisf;6const __floattisf = @import("floatXisf.zig").__floattisf;
7const testing = @import("std").testing;7const testing = @import("std").testing;
88
9fn test__floattisf(a: i128, expected: f32) void {9fn test__floattisf(a: i128, expected: f32) void {
lib/std/start.zig+2-2
...@@ -248,7 +248,7 @@ pub fn callMain() u8 {...@@ -248,7 +248,7 @@ pub fn callMain() u8 {
248 return 0;248 return 0;
249 },249 },
250 .Int => |info| {250 .Int => |info| {
251 if (info.bits != 8) {251 if (info.bits != 8 or info.is_signed) {
252 @compileError(bad_main_ret);252 @compileError(bad_main_ret);
253 }253 }
254 return root.main();254 return root.main();
...@@ -264,7 +264,7 @@ pub fn callMain() u8 {...@@ -264,7 +264,7 @@ pub fn callMain() u8 {
264 switch (@typeInfo(@TypeOf(result))) {264 switch (@typeInfo(@TypeOf(result))) {
265 .Void => return 0,265 .Void => return 0,
266 .Int => |info| {266 .Int => |info| {
267 if (info.bits != 8) {267 if (info.bits != 8 or info.is_signed) {
268 @compileError(bad_main_ret);268 @compileError(bad_main_ret);
269 }269 }
270 return result;270 return result;
lib/std/zig/ast.zig+226-38
...@@ -915,23 +915,111 @@ pub const Node = struct {...@@ -915,23 +915,111 @@ pub const Node = struct {
915 init_node: *Node,915 init_node: *Node,
916 });916 });
917917
918 pub fn getDocComments(self: *const VarDecl) ?*DocComment {
919 return self.getTrailer(.doc_comments);
920 }
921
922 pub fn setDocComments(self: *VarDecl, value: *DocComment) void {
923 self.setTrailer(.doc_comments, value);
924 }
925
926 pub fn getVisibToken(self: *const VarDecl) ?TokenIndex {
927 return self.getTrailer(.visib_token);
928 }
929
930 pub fn setVisibToken(self: *VarDecl, value: TokenIndex) void {
931 self.setTrailer(.visib_token, value);
932 }
933
934 pub fn getThreadLocalToken(self: *const VarDecl) ?TokenIndex {
935 return self.getTrailer(.thread_local_token);
936 }
937
938 pub fn setThreadLocalToken(self: *VarDecl, value: TokenIndex) void {
939 self.setTrailer(.thread_local_token, value);
940 }
941
942 pub fn getEqToken(self: *const VarDecl) ?TokenIndex {
943 return self.getTrailer(.eq_token);
944 }
945
946 pub fn setEqToken(self: *VarDecl, value: TokenIndex) void {
947 self.setTrailer(.eq_token, value);
948 }
949
950 pub fn getComptimeToken(self: *const VarDecl) ?TokenIndex {
951 return self.getTrailer(.comptime_token);
952 }
953
954 pub fn setComptimeToken(self: *VarDecl, value: TokenIndex) void {
955 self.setTrailer(.comptime_token, value);
956 }
957
958 pub fn getExternExportToken(self: *const VarDecl) ?TokenIndex {
959 return self.getTrailer(.extern_export_token);
960 }
961
962 pub fn setExternExportToken(self: *VarDecl, value: TokenIndex) void {
963 self.setTrailer(.extern_export_token, value);
964 }
965
966 pub fn getLibName(self: *const VarDecl) ?*Node {
967 return self.getTrailer(.lib_name);
968 }
969
970 pub fn setLibName(self: *VarDecl, value: *Node) void {
971 self.setTrailer(.lib_name, value);
972 }
973
974 pub fn getTypeNode(self: *const VarDecl) ?*Node {
975 return self.getTrailer(.type_node);
976 }
977
978 pub fn setTypeNode(self: *VarDecl, value: *Node) void {
979 self.setTrailer(.type_node, value);
980 }
981
982 pub fn getAlignNode(self: *const VarDecl) ?*Node {
983 return self.getTrailer(.align_node);
984 }
985
986 pub fn setAlignNode(self: *VarDecl, value: *Node) void {
987 self.setTrailer(.align_node, value);
988 }
989
990 pub fn getSectionNode(self: *const VarDecl) ?*Node {
991 return self.getTrailer(.section_node);
992 }
993
994 pub fn setSectionNode(self: *VarDecl, value: *Node) void {
995 self.setTrailer(.section_node, value);
996 }
997
998 pub fn getInitNode(self: *const VarDecl) ?*Node {
999 return self.getTrailer(.init_node);
1000 }
1001
1002 pub fn setInitNode(self: *VarDecl, value: *Node) void {
1003 self.setTrailer(.init_node, value);
1004 }
1005
918 pub const RequiredFields = struct {1006 pub const RequiredFields = struct {
919 mut_token: TokenIndex,1007 mut_token: TokenIndex,
920 name_token: TokenIndex,1008 name_token: TokenIndex,
921 semicolon_token: TokenIndex,1009 semicolon_token: TokenIndex,
922 };1010 };
9231011
924 pub fn getTrailer(self: *const VarDecl, comptime name: []const u8) ?TrailerFlags.Field(name) {1012 fn getTrailer(self: *const VarDecl, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
925 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(VarDecl);1013 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(VarDecl);
926 return self.trailer_flags.get(trailers_start, name);1014 return self.trailer_flags.get(trailers_start, field);
927 }1015 }
9281016
929 pub fn setTrailer(self: *VarDecl, comptime name: []const u8, value: TrailerFlags.Field(name)) void {1017 fn setTrailer(self: *VarDecl, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
930 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(VarDecl);1018 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(VarDecl);
931 self.trailer_flags.set(trailers_start, name, value);1019 self.trailer_flags.set(trailers_start, field, value);
932 }1020 }
9331021
934 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*VarDecl {1022 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*VarDecl {
935 const trailer_flags = TrailerFlags.init(trailers);1023 const trailer_flags = TrailerFlags.init(trailers);
936 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));1024 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));
937 const var_decl = @ptrCast(*VarDecl, bytes.ptr);1025 const var_decl = @ptrCast(*VarDecl, bytes.ptr);
...@@ -954,22 +1042,22 @@ pub const Node = struct {...@@ -954,22 +1042,22 @@ pub const Node = struct {
954 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {1042 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {
955 var i = index;1043 var i = index;
9561044
957 if (self.getTrailer("type_node")) |type_node| {1045 if (self.getTypeNode()) |type_node| {
958 if (i < 1) return type_node;1046 if (i < 1) return type_node;
959 i -= 1;1047 i -= 1;
960 }1048 }
9611049
962 if (self.getTrailer("align_node")) |align_node| {1050 if (self.getAlignNode()) |align_node| {
963 if (i < 1) return align_node;1051 if (i < 1) return align_node;
964 i -= 1;1052 i -= 1;
965 }1053 }
9661054
967 if (self.getTrailer("section_node")) |section_node| {1055 if (self.getSectionNode()) |section_node| {
968 if (i < 1) return section_node;1056 if (i < 1) return section_node;
969 i -= 1;1057 i -= 1;
970 }1058 }
9711059
972 if (self.getTrailer("init_node")) |init_node| {1060 if (self.getInitNode()) |init_node| {
973 if (i < 1) return init_node;1061 if (i < 1) return init_node;
974 i -= 1;1062 i -= 1;
975 }1063 }
...@@ -978,11 +1066,11 @@ pub const Node = struct {...@@ -978,11 +1066,11 @@ pub const Node = struct {
978 }1066 }
9791067
980 pub fn firstToken(self: *const VarDecl) TokenIndex {1068 pub fn firstToken(self: *const VarDecl) TokenIndex {
981 if (self.getTrailer("visib_token")) |visib_token| return visib_token;1069 if (self.getVisibToken()) |visib_token| return visib_token;
982 if (self.getTrailer("thread_local_token")) |thread_local_token| return thread_local_token;1070 if (self.getThreadLocalToken()) |thread_local_token| return thread_local_token;
983 if (self.getTrailer("comptime_token")) |comptime_token| return comptime_token;1071 if (self.getComptimeToken()) |comptime_token| return comptime_token;
984 if (self.getTrailer("extern_export_token")) |extern_export_token| return extern_export_token;1072 if (self.getExternExportToken()) |extern_export_token| return extern_export_token;
985 assert(self.getTrailer("lib_name") == null);1073 assert(self.getLibName() == null);
986 return self.mut_token;1074 return self.mut_token;
987 }1075 }
9881076
...@@ -1320,34 +1408,126 @@ pub const Node = struct {...@@ -1320,34 +1408,126 @@ pub const Node = struct {
1320 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{1408 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{
1321 self,1409 self,
1322 self.trailer_flags.bits,1410 self.trailer_flags.bits,
1323 self.getTrailer("name_token"),1411 self.getNameToken(),
1324 self.trailer_flags.ptrConst(trailers_start, "name_token"),1412 self.trailer_flags.ptrConst(trailers_start, .name_token),
1325 self.params_len,1413 self.params_len,
1326 });1414 });
1327 }1415 }
13281416
1329 pub fn body(self: *const FnProto) ?*Node {1417 pub fn getDocComments(self: *const FnProto) ?*DocComment {
1330 return self.getTrailer("body_node");1418 return self.getTrailer(.doc_comments);
1419 }
1420
1421 pub fn setDocComments(self: *FnProto, value: *DocComment) void {
1422 self.setTrailer(.doc_comments, value);
1423 }
1424
1425 pub fn getBodyNode(self: *const FnProto) ?*Node {
1426 return self.getTrailer(.body_node);
1427 }
1428
1429 pub fn setBodyNode(self: *FnProto, value: *Node) void {
1430 self.setTrailer(.body_node, value);
1431 }
1432
1433 pub fn getLibName(self: *const FnProto) ?*Node {
1434 return self.getTrailer(.lib_name);
1435 }
1436
1437 pub fn setLibName(self: *FnProto, value: *Node) void {
1438 self.setTrailer(.lib_name, value);
1439 }
1440
1441 pub fn getAlignExpr(self: *const FnProto) ?*Node {
1442 return self.getTrailer(.align_expr);
1443 }
1444
1445 pub fn setAlignExpr(self: *FnProto, value: *Node) void {
1446 self.setTrailer(.align_expr, value);
1447 }
1448
1449 pub fn getSectionExpr(self: *const FnProto) ?*Node {
1450 return self.getTrailer(.section_expr);
1451 }
1452
1453 pub fn setSectionExpr(self: *FnProto, value: *Node) void {
1454 self.setTrailer(.section_expr, value);
1455 }
1456
1457 pub fn getCallconvExpr(self: *const FnProto) ?*Node {
1458 return self.getTrailer(.callconv_expr);
1459 }
1460
1461 pub fn setCallconvExpr(self: *FnProto, value: *Node) void {
1462 self.setTrailer(.callconv_expr, value);
1463 }
1464
1465 pub fn getVisibToken(self: *const FnProto) ?TokenIndex {
1466 return self.getTrailer(.visib_token);
1331 }1467 }
13321468
1333 pub fn getTrailer(self: *const FnProto, comptime name: []const u8) ?TrailerFlags.Field(name) {1469 pub fn setVisibToken(self: *FnProto, value: TokenIndex) void {
1470 self.setTrailer(.visib_token, value);
1471 }
1472
1473 pub fn getNameToken(self: *const FnProto) ?TokenIndex {
1474 return self.getTrailer(.name_token);
1475 }
1476
1477 pub fn setNameToken(self: *FnProto, value: TokenIndex) void {
1478 self.setTrailer(.name_token, value);
1479 }
1480
1481 pub fn getVarArgsToken(self: *const FnProto) ?TokenIndex {
1482 return self.getTrailer(.var_args_token);
1483 }
1484
1485 pub fn setVarArgsToken(self: *FnProto, value: TokenIndex) void {
1486 self.setTrailer(.var_args_token, value);
1487 }
1488
1489 pub fn getExternExportInlineToken(self: *const FnProto) ?TokenIndex {
1490 return self.getTrailer(.extern_export_inline_token);
1491 }
1492
1493 pub fn setExternExportInlineToken(self: *FnProto, value: TokenIndex) void {
1494 self.setTrailer(.extern_export_inline_token, value);
1495 }
1496
1497 pub fn getIsExternPrototype(self: *const FnProto) ?void {
1498 return self.getTrailer(.is_extern_prototype);
1499 }
1500
1501 pub fn setIsExternPrototype(self: *FnProto, value: void) void {
1502 self.setTrailer(.is_extern_prototype, value);
1503 }
1504
1505 pub fn getIsAsync(self: *const FnProto) ?void {
1506 return self.getTrailer(.is_async);
1507 }
1508
1509 pub fn setIsAsync(self: *FnProto, value: void) void {
1510 self.setTrailer(.is_async, value);
1511 }
1512
1513 fn getTrailer(self: *const FnProto, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
1334 const trailers_start = @alignCast(1514 const trailers_start = @alignCast(
1335 @alignOf(ParamDecl),1515 @alignOf(ParamDecl),
1336 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,1516 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
1337 );1517 );
1338 return self.trailer_flags.get(trailers_start, name);1518 return self.trailer_flags.get(trailers_start, field);
1339 }1519 }
13401520
1341 pub fn setTrailer(self: *FnProto, comptime name: []const u8, value: TrailerFlags.Field(name)) void {1521 fn setTrailer(self: *FnProto, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
1342 const trailers_start = @alignCast(1522 const trailers_start = @alignCast(
1343 @alignOf(ParamDecl),1523 @alignOf(ParamDecl),
1344 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,1524 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
1345 );1525 );
1346 self.trailer_flags.set(trailers_start, name, value);1526 self.trailer_flags.set(trailers_start, field, value);
1347 }1527 }
13481528
1349 /// After this the caller must initialize the params list.1529 /// After this the caller must initialize the params list.
1350 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*FnProto {1530 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*FnProto {
1351 const trailer_flags = TrailerFlags.init(trailers);1531 const trailer_flags = TrailerFlags.init(trailers);
1352 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(1532 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(
1353 required.params_len,1533 required.params_len,
...@@ -1376,7 +1556,7 @@ pub const Node = struct {...@@ -1376,7 +1556,7 @@ pub const Node = struct {
1376 pub fn iterate(self: *const FnProto, index: usize) ?*Node {1556 pub fn iterate(self: *const FnProto, index: usize) ?*Node {
1377 var i = index;1557 var i = index;
13781558
1379 if (self.getTrailer("lib_name")) |lib_name| {1559 if (self.getLibName()) |lib_name| {
1380 if (i < 1) return lib_name;1560 if (i < 1) return lib_name;
1381 i -= 1;1561 i -= 1;
1382 }1562 }
...@@ -1394,12 +1574,12 @@ pub const Node = struct {...@@ -1394,12 +1574,12 @@ pub const Node = struct {
1394 }1574 }
1395 i -= params_len;1575 i -= params_len;
13961576
1397 if (self.getTrailer("align_expr")) |align_expr| {1577 if (self.getAlignExpr()) |align_expr| {
1398 if (i < 1) return align_expr;1578 if (i < 1) return align_expr;
1399 i -= 1;1579 i -= 1;
1400 }1580 }
14011581
1402 if (self.getTrailer("section_expr")) |section_expr| {1582 if (self.getSectionExpr()) |section_expr| {
1403 if (i < 1) return section_expr;1583 if (i < 1) return section_expr;
1404 i -= 1;1584 i -= 1;
1405 }1585 }
...@@ -1412,7 +1592,7 @@ pub const Node = struct {...@@ -1412,7 +1592,7 @@ pub const Node = struct {
1412 .Invalid => {},1592 .Invalid => {},
1413 }1593 }
14141594
1415 if (self.body()) |body_node| {1595 if (self.getBodyNode()) |body_node| {
1416 if (i < 1) return body_node;1596 if (i < 1) return body_node;
1417 i -= 1;1597 i -= 1;
1418 }1598 }
...@@ -1421,14 +1601,14 @@ pub const Node = struct {...@@ -1421,14 +1601,14 @@ pub const Node = struct {
1421 }1601 }
14221602
1423 pub fn firstToken(self: *const FnProto) TokenIndex {1603 pub fn firstToken(self: *const FnProto) TokenIndex {
1424 if (self.getTrailer("visib_token")) |visib_token| return visib_token;1604 if (self.getVisibToken()) |visib_token| return visib_token;
1425 if (self.getTrailer("extern_export_inline_token")) |extern_export_inline_token| return extern_export_inline_token;1605 if (self.getExternExportInlineToken()) |extern_export_inline_token| return extern_export_inline_token;
1426 assert(self.getTrailer("lib_name") == null);1606 assert(self.getLibName() == null);
1427 return self.fn_token;1607 return self.fn_token;
1428 }1608 }
14291609
1430 pub fn lastToken(self: *const FnProto) TokenIndex {1610 pub fn lastToken(self: *const FnProto) TokenIndex {
1431 if (self.body()) |body_node| return body_node.lastToken();1611 if (self.getBodyNode()) |body_node| return body_node.lastToken();
1432 switch (self.return_type) {1612 switch (self.return_type) {
1433 .Explicit, .InferErrorSet => |node| return node.lastToken(),1613 .Explicit, .InferErrorSet => |node| return node.lastToken(),
1434 .Invalid => |tok| return tok,1614 .Invalid => |tok| return tok,
...@@ -2673,24 +2853,32 @@ pub const Node = struct {...@@ -2673,24 +2853,32 @@ pub const Node = struct {
2673 };2853 };
26742854
2675 pub fn getRHS(self: *const ControlFlowExpression) ?*Node {2855 pub fn getRHS(self: *const ControlFlowExpression) ?*Node {
2676 return self.getTrailer("rhs");2856 return self.getTrailer(.rhs);
2857 }
2858
2859 pub fn setRHS(self: *ControlFlowExpression, value: *Node) void {
2860 self.setTrailer(.rhs, value);
2677 }2861 }
26782862
2679 pub fn getLabel(self: *const ControlFlowExpression) ?TokenIndex {2863 pub fn getLabel(self: *const ControlFlowExpression) ?TokenIndex {
2680 return self.getTrailer("label");2864 return self.getTrailer(.label);
2865 }
2866
2867 pub fn setLabel(self: *ControlFlowExpression, value: TokenIndex) void {
2868 self.setTrailer(.label, value);
2681 }2869 }
26822870
2683 pub fn getTrailer(self: *const ControlFlowExpression, comptime name: []const u8) ?TrailerFlags.Field(name) {2871 fn getTrailer(self: *const ControlFlowExpression, comptime field: TrailerFlags.FieldEnum) ?TrailerFlags.Field(field) {
2684 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(ControlFlowExpression);2872 const trailers_start = @ptrCast([*]const u8, self) + @sizeOf(ControlFlowExpression);
2685 return self.trailer_flags.get(trailers_start, name);2873 return self.trailer_flags.get(trailers_start, field);
2686 }2874 }
26872875
2688 pub fn setTrailer(self: *ControlFlowExpression, comptime name: []const u8, value: TrailerFlags.Field(name)) void {2876 fn setTrailer(self: *ControlFlowExpression, comptime field: TrailerFlags.FieldEnum, value: TrailerFlags.Field(field)) void {
2689 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(ControlFlowExpression);2877 const trailers_start = @ptrCast([*]u8, self) + @sizeOf(ControlFlowExpression);
2690 self.trailer_flags.set(trailers_start, name, value);2878 self.trailer_flags.set(trailers_start, field, value);
2691 }2879 }
26922880
2693 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: anytype) !*ControlFlowExpression {2881 pub fn create(allocator: *mem.Allocator, required: RequiredFields, trailers: TrailerFlags.InitStruct) !*ControlFlowExpression {
2694 const trailer_flags = TrailerFlags.init(trailers);2882 const trailer_flags = TrailerFlags.init(trailers);
2695 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));2883 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));
2696 const ctrl_flow_expr = @ptrCast(*ControlFlowExpression, bytes.ptr);2884 const ctrl_flow_expr = @ptrCast(*ControlFlowExpression, bytes.ptr);
lib/std/zig/render.zig+42-38
...@@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr...@@ -232,9 +232,9 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
232 .FnProto => {232 .FnProto => {
233 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);233 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", decl);
234234
235 try renderDocComments(tree, stream, fn_proto, fn_proto.getTrailer("doc_comments"), indent, start_col);235 try renderDocComments(tree, stream, fn_proto, fn_proto.getDocComments(), indent, start_col);
236236
237 if (fn_proto.getTrailer("body_node")) |body_node| {237 if (fn_proto.getBodyNode()) |body_node| {
238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);
239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);
240 } else {240 } else {
...@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr...@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
257 .VarDecl => {257 .VarDecl => {
258 const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);258 const var_decl = @fieldParentPtr(ast.Node.VarDecl, "base", decl);
259259
260 try renderDocComments(tree, stream, var_decl, var_decl.getTrailer("doc_comments"), indent, start_col);260 try renderDocComments(tree, stream, var_decl, var_decl.getDocComments(), indent, start_col);
261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);
262 },262 },
263263
...@@ -1478,6 +1478,10 @@ fn renderExpression(...@@ -1478,6 +1478,10 @@ fn renderExpression(
1478 .BuiltinCall => {1478 .BuiltinCall => {
1479 const builtin_call = @fieldParentPtr(ast.Node.BuiltinCall, "base", base);1479 const builtin_call = @fieldParentPtr(ast.Node.BuiltinCall, "base", base);
14801480
1481 // TODO remove after 0.7.0 release
1482 if (mem.eql(u8, tree.tokenSlice(builtin_call.builtin_token), "@OpaqueType"))
1483 return stream.writeAll("@Type(.Opaque)");
1484
1481 try renderToken(tree, stream, builtin_call.builtin_token, indent, start_col, Space.None); // @name1485 try renderToken(tree, stream, builtin_call.builtin_token, indent, start_col, Space.None); // @name
14821486
1483 const src_params_trailing_comma = blk: {1487 const src_params_trailing_comma = blk: {
...@@ -1520,23 +1524,23 @@ fn renderExpression(...@@ -1520,23 +1524,23 @@ fn renderExpression(
1520 .FnProto => {1524 .FnProto => {
1521 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base);1525 const fn_proto = @fieldParentPtr(ast.Node.FnProto, "base", base);
15221526
1523 if (fn_proto.getTrailer("visib_token")) |visib_token_index| {1527 if (fn_proto.getVisibToken()) |visib_token_index| {
1524 const visib_token = tree.token_ids[visib_token_index];1528 const visib_token = tree.token_ids[visib_token_index];
1525 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);1529 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);
15261530
1527 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub1531 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub
1528 }1532 }
15291533
1530 if (fn_proto.getTrailer("extern_export_inline_token")) |extern_export_inline_token| {1534 if (fn_proto.getExternExportInlineToken()) |extern_export_inline_token| {
1531 if (fn_proto.getTrailer("is_extern_prototype") == null)1535 if (fn_proto.getIsExternPrototype() == null)
1532 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline1536 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline
1533 }1537 }
15341538
1535 if (fn_proto.getTrailer("lib_name")) |lib_name| {1539 if (fn_proto.getLibName()) |lib_name| {
1536 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);1540 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);
1537 }1541 }
15381542
1539 const lparen = if (fn_proto.getTrailer("name_token")) |name_token| blk: {1543 const lparen = if (fn_proto.getNameToken()) |name_token| blk: {
1540 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn1544 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn
1541 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name1545 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name
1542 break :blk tree.nextToken(name_token);1546 break :blk tree.nextToken(name_token);
...@@ -1549,11 +1553,11 @@ fn renderExpression(...@@ -1549,11 +1553,11 @@ fn renderExpression(
1549 const rparen = tree.prevToken(1553 const rparen = tree.prevToken(
1550 // the first token for the annotation expressions is the left1554 // the first token for the annotation expressions is the left
1551 // parenthesis, hence the need for two prevToken1555 // parenthesis, hence the need for two prevToken
1552 if (fn_proto.getTrailer("align_expr")) |align_expr|1556 if (fn_proto.getAlignExpr()) |align_expr|
1553 tree.prevToken(tree.prevToken(align_expr.firstToken()))1557 tree.prevToken(tree.prevToken(align_expr.firstToken()))
1554 else if (fn_proto.getTrailer("section_expr")) |section_expr|1558 else if (fn_proto.getSectionExpr()) |section_expr|
1555 tree.prevToken(tree.prevToken(section_expr.firstToken()))1559 tree.prevToken(tree.prevToken(section_expr.firstToken()))
1556 else if (fn_proto.getTrailer("callconv_expr")) |callconv_expr|1560 else if (fn_proto.getCallconvExpr()) |callconv_expr|
1557 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))1561 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))
1558 else switch (fn_proto.return_type) {1562 else switch (fn_proto.return_type) {
1559 .Explicit => |node| node.firstToken(),1563 .Explicit => |node| node.firstToken(),
...@@ -1574,12 +1578,12 @@ fn renderExpression(...@@ -1574,12 +1578,12 @@ fn renderExpression(
1574 for (fn_proto.params()) |param_decl, i| {1578 for (fn_proto.params()) |param_decl, i| {
1575 try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None);1579 try renderParamDecl(allocator, stream, tree, indent, start_col, param_decl, Space.None);
15761580
1577 if (i + 1 < fn_proto.params_len or fn_proto.getTrailer("var_args_token") != null) {1581 if (i + 1 < fn_proto.params_len or fn_proto.getVarArgsToken() != null) {
1578 const comma = tree.nextToken(param_decl.lastToken());1582 const comma = tree.nextToken(param_decl.lastToken());
1579 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,1583 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,
1580 }1584 }
1581 }1585 }
1582 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {1586 if (fn_proto.getVarArgsToken()) |var_args_token| {
1583 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);1587 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);
1584 }1588 }
1585 } else {1589 } else {
...@@ -1591,7 +1595,7 @@ fn renderExpression(...@@ -1591,7 +1595,7 @@ fn renderExpression(
1591 try stream.writeByteNTimes(' ', new_indent);1595 try stream.writeByteNTimes(' ', new_indent);
1592 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);1596 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);
1593 }1597 }
1594 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {1598 if (fn_proto.getVarArgsToken()) |var_args_token| {
1595 try stream.writeByteNTimes(' ', new_indent);1599 try stream.writeByteNTimes(' ', new_indent);
1596 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);1600 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);
1597 }1601 }
...@@ -1600,7 +1604,7 @@ fn renderExpression(...@@ -1600,7 +1604,7 @@ fn renderExpression(
16001604
1601 try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // )1605 try renderToken(tree, stream, rparen, indent, start_col, Space.Space); // )
16021606
1603 if (fn_proto.getTrailer("align_expr")) |align_expr| {1607 if (fn_proto.getAlignExpr()) |align_expr| {
1604 const align_rparen = tree.nextToken(align_expr.lastToken());1608 const align_rparen = tree.nextToken(align_expr.lastToken());
1605 const align_lparen = tree.prevToken(align_expr.firstToken());1609 const align_lparen = tree.prevToken(align_expr.firstToken());
1606 const align_kw = tree.prevToken(align_lparen);1610 const align_kw = tree.prevToken(align_lparen);
...@@ -1611,7 +1615,7 @@ fn renderExpression(...@@ -1611,7 +1615,7 @@ fn renderExpression(
1611 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )1615 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )
1612 }1616 }
16131617
1614 if (fn_proto.getTrailer("section_expr")) |section_expr| {1618 if (fn_proto.getSectionExpr()) |section_expr| {
1615 const section_rparen = tree.nextToken(section_expr.lastToken());1619 const section_rparen = tree.nextToken(section_expr.lastToken());
1616 const section_lparen = tree.prevToken(section_expr.firstToken());1620 const section_lparen = tree.prevToken(section_expr.firstToken());
1617 const section_kw = tree.prevToken(section_lparen);1621 const section_kw = tree.prevToken(section_lparen);
...@@ -1622,7 +1626,7 @@ fn renderExpression(...@@ -1622,7 +1626,7 @@ fn renderExpression(
1622 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )1626 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )
1623 }1627 }
16241628
1625 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {1629 if (fn_proto.getCallconvExpr()) |callconv_expr| {
1626 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());1630 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());
1627 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());1631 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());
1628 const callconv_kw = tree.prevToken(callconv_lparen);1632 const callconv_kw = tree.prevToken(callconv_lparen);
...@@ -1631,9 +1635,9 @@ fn renderExpression(...@@ -1631,9 +1635,9 @@ fn renderExpression(
1631 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (1635 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (
1632 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);1636 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);
1633 try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // )1637 try renderToken(tree, stream, callconv_rparen, indent, start_col, Space.Space); // )
1634 } else if (fn_proto.getTrailer("is_extern_prototype") != null) {1638 } else if (fn_proto.getIsExternPrototype() != null) {
1635 try stream.writeAll("callconv(.C) ");1639 try stream.writeAll("callconv(.C) ");
1636 } else if (fn_proto.getTrailer("is_async") != null) {1640 } else if (fn_proto.getIsAsync() != null) {
1637 try stream.writeAll("callconv(.Async) ");1641 try stream.writeAll("callconv(.Async) ");
1638 }1642 }
16391643
...@@ -2221,69 +2225,69 @@ fn renderVarDecl(...@@ -2221,69 +2225,69 @@ fn renderVarDecl(
2221 start_col: *usize,2225 start_col: *usize,
2222 var_decl: *ast.Node.VarDecl,2226 var_decl: *ast.Node.VarDecl,
2223) (@TypeOf(stream).Error || Error)!void {2227) (@TypeOf(stream).Error || Error)!void {
2224 if (var_decl.getTrailer("visib_token")) |visib_token| {2228 if (var_decl.getVisibToken()) |visib_token| {
2225 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub2229 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub
2226 }2230 }
22272231
2228 if (var_decl.getTrailer("extern_export_token")) |extern_export_token| {2232 if (var_decl.getExternExportToken()) |extern_export_token| {
2229 try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern2233 try renderToken(tree, stream, extern_export_token, indent, start_col, Space.Space); // extern
22302234
2231 if (var_decl.getTrailer("lib_name")) |lib_name| {2235 if (var_decl.getLibName()) |lib_name| {
2232 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"2236 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"
2233 }2237 }
2234 }2238 }
22352239
2236 if (var_decl.getTrailer("comptime_token")) |comptime_token| {2240 if (var_decl.getComptimeToken()) |comptime_token| {
2237 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime2241 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime
2238 }2242 }
22392243
2240 if (var_decl.getTrailer("thread_local_token")) |thread_local_token| {2244 if (var_decl.getThreadLocalToken()) |thread_local_token| {
2241 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal2245 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal
2242 }2246 }
2243 try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var2247 try renderToken(tree, stream, var_decl.mut_token, indent, start_col, Space.Space); // var
22442248
2245 const name_space = if (var_decl.getTrailer("type_node") == null and2249 const name_space = if (var_decl.getTypeNode() == null and
2246 (var_decl.getTrailer("align_node") != null or2250 (var_decl.getAlignNode() != null or
2247 var_decl.getTrailer("section_node") != null or2251 var_decl.getSectionNode() != null or
2248 var_decl.getTrailer("init_node") != null))2252 var_decl.getInitNode() != null))
2249 Space.Space2253 Space.Space
2250 else2254 else
2251 Space.None;2255 Space.None;
2252 try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space);2256 try renderToken(tree, stream, var_decl.name_token, indent, start_col, name_space);
22532257
2254 if (var_decl.getTrailer("type_node")) |type_node| {2258 if (var_decl.getTypeNode()) |type_node| {
2255 try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space);2259 try renderToken(tree, stream, tree.nextToken(var_decl.name_token), indent, start_col, Space.Space);
2256 const s = if (var_decl.getTrailer("align_node") != null or2260 const s = if (var_decl.getAlignNode() != null or
2257 var_decl.getTrailer("section_node") != null or2261 var_decl.getSectionNode() != null or
2258 var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2262 var_decl.getInitNode() != null) Space.Space else Space.None;
2259 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);2263 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);
2260 }2264 }
22612265
2262 if (var_decl.getTrailer("align_node")) |align_node| {2266 if (var_decl.getAlignNode()) |align_node| {
2263 const lparen = tree.prevToken(align_node.firstToken());2267 const lparen = tree.prevToken(align_node.firstToken());
2264 const align_kw = tree.prevToken(lparen);2268 const align_kw = tree.prevToken(lparen);
2265 const rparen = tree.nextToken(align_node.lastToken());2269 const rparen = tree.nextToken(align_node.lastToken());
2266 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align2270 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
2267 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (2271 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
2268 try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None);2272 try renderExpression(allocator, stream, tree, indent, start_col, align_node, Space.None);
2269 const s = if (var_decl.getTrailer("section_node") != null or var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2273 const s = if (var_decl.getSectionNode() != null or var_decl.getInitNode() != null) Space.Space else Space.None;
2270 try renderToken(tree, stream, rparen, indent, start_col, s); // )2274 try renderToken(tree, stream, rparen, indent, start_col, s); // )
2271 }2275 }
22722276
2273 if (var_decl.getTrailer("section_node")) |section_node| {2277 if (var_decl.getSectionNode()) |section_node| {
2274 const lparen = tree.prevToken(section_node.firstToken());2278 const lparen = tree.prevToken(section_node.firstToken());
2275 const section_kw = tree.prevToken(lparen);2279 const section_kw = tree.prevToken(lparen);
2276 const rparen = tree.nextToken(section_node.lastToken());2280 const rparen = tree.nextToken(section_node.lastToken());
2277 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection2281 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection
2278 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (2282 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
2279 try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None);2283 try renderExpression(allocator, stream, tree, indent, start_col, section_node, Space.None);
2280 const s = if (var_decl.getTrailer("init_node") != null) Space.Space else Space.None;2284 const s = if (var_decl.getInitNode() != null) Space.Space else Space.None;
2281 try renderToken(tree, stream, rparen, indent, start_col, s); // )2285 try renderToken(tree, stream, rparen, indent, start_col, s); // )
2282 }2286 }
22832287
2284 if (var_decl.getTrailer("init_node")) |init_node| {2288 if (var_decl.getInitNode()) |init_node| {
2285 const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space;2289 const s = if (init_node.tag == .MultilineStringLiteral) Space.None else Space.Space;
2286 try renderToken(tree, stream, var_decl.getTrailer("eq_token").?, indent, start_col, s); // =2290 try renderToken(tree, stream, var_decl.getEqToken().?, indent, start_col, s); // =
2287 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);2291 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);
2288 }2292 }
22892293
lib/std/zig/system.zig+4-3
...@@ -88,6 +88,7 @@ pub const NativePaths = struct {...@@ -88,6 +88,7 @@ pub const NativePaths = struct {
8888
89 if (!is_windows) {89 if (!is_windows) {
90 const triple = try Target.current.linuxTriple(allocator);90 const triple = try Target.current.linuxTriple(allocator);
91 const qual = Target.current.cpu.arch.ptrBitWidth();
9192
92 // TODO: $ ld --verbose | grep SEARCH_DIR93 // TODO: $ ld --verbose | grep SEARCH_DIR
93 // the output contains some paths that end with lib64, maybe include them too?94 // the output contains some paths that end with lib64, maybe include them too?
...@@ -95,17 +96,17 @@ pub const NativePaths = struct {...@@ -95,17 +96,17 @@ pub const NativePaths = struct {
95 // TODO: some of these are suspect and should only be added on some systems. audit needed.96 // TODO: some of these are suspect and should only be added on some systems. audit needed.
9697
97 try self.addIncludeDir("/usr/local/include");98 try self.addIncludeDir("/usr/local/include");
99 try self.addLibDirFmt("/usr/local/lib{}", .{qual});
98 try self.addLibDir("/usr/local/lib");100 try self.addLibDir("/usr/local/lib");
99 try self.addLibDir("/usr/local/lib64");
100101
101 try self.addIncludeDirFmt("/usr/include/{}", .{triple});102 try self.addIncludeDirFmt("/usr/include/{}", .{triple});
102 try self.addLibDirFmt("/usr/lib/{}", .{triple});103 try self.addLibDirFmt("/usr/lib/{}", .{triple});
103104
104 try self.addIncludeDir("/usr/include");105 try self.addIncludeDir("/usr/include");
106 try self.addLibDirFmt("/lib{}", .{qual});
105 try self.addLibDir("/lib");107 try self.addLibDir("/lib");
106 try self.addLibDir("/lib64");108 try self.addLibDirFmt("/usr/lib{}", .{qual});
107 try self.addLibDir("/usr/lib");109 try self.addLibDir("/usr/lib");
108 try self.addLibDir("/usr/lib64");
109110
110 // example: on a 64-bit debian-based linux distro, with zlib installed from apt:111 // example: on a 64-bit debian-based linux distro, with zlib installed from apt:
111 // zlib.h is in /usr/include (added above)112 // zlib.h is in /usr/include (added above)
src-self-hosted/Module.zig+35-24
...@@ -1256,8 +1256,8 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1256,8 +1256,8 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1256 };1256 };
1257 defer fn_type_scope.instructions.deinit(self.gpa);1257 defer fn_type_scope.instructions.deinit(self.gpa);
12581258
1259 decl.is_pub = fn_proto.getTrailer("visib_token") != null;1259 decl.is_pub = fn_proto.getVisibToken() != null;
1260 const body_node = fn_proto.getTrailer("body_node") orelse1260 const body_node = fn_proto.getBodyNode() orelse
1261 return self.failTok(&fn_type_scope.base, fn_proto.fn_token, "TODO implement extern functions", .{});1261 return self.failTok(&fn_type_scope.base, fn_proto.fn_token, "TODO implement extern functions", .{});
12621262
1263 const param_decls = fn_proto.params();1263 const param_decls = fn_proto.params();
...@@ -1276,19 +1276,19 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1276,19 +1276,19 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1276 };1276 };
1277 param_types[i] = try astgen.expr(self, &fn_type_scope.base, type_type_rl, param_type_node);1277 param_types[i] = try astgen.expr(self, &fn_type_scope.base, type_type_rl, param_type_node);
1278 }1278 }
1279 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {1279 if (fn_proto.getVarArgsToken()) |var_args_token| {
1280 return self.failTok(&fn_type_scope.base, var_args_token, "TODO implement var args", .{});1280 return self.failTok(&fn_type_scope.base, var_args_token, "TODO implement var args", .{});
1281 }1281 }
1282 if (fn_proto.getTrailer("lib_name")) |lib_name| {1282 if (fn_proto.getLibName()) |lib_name| {
1283 return self.failNode(&fn_type_scope.base, lib_name, "TODO implement function library name", .{});1283 return self.failNode(&fn_type_scope.base, lib_name, "TODO implement function library name", .{});
1284 }1284 }
1285 if (fn_proto.getTrailer("align_expr")) |align_expr| {1285 if (fn_proto.getAlignExpr()) |align_expr| {
1286 return self.failNode(&fn_type_scope.base, align_expr, "TODO implement function align expression", .{});1286 return self.failNode(&fn_type_scope.base, align_expr, "TODO implement function align expression", .{});
1287 }1287 }
1288 if (fn_proto.getTrailer("section_expr")) |sect_expr| {1288 if (fn_proto.getSectionExpr()) |sect_expr| {
1289 return self.failNode(&fn_type_scope.base, sect_expr, "TODO implement function section expression", .{});1289 return self.failNode(&fn_type_scope.base, sect_expr, "TODO implement function section expression", .{});
1290 }1290 }
1291 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {1291 if (fn_proto.getCallconvExpr()) |callconv_expr| {
1292 return self.failNode(1292 return self.failNode(
1293 &fn_type_scope.base,1293 &fn_type_scope.base,
1294 callconv_expr,1294 callconv_expr,
...@@ -1430,10 +1430,10 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1430,10 +1430,10 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1430 self.bin_file.freeDecl(decl);1430 self.bin_file.freeDecl(decl);
1431 }1431 }
14321432
1433 if (fn_proto.getTrailer("extern_export_inline_token")) |maybe_export_token| {1433 if (fn_proto.getExternExportInlineToken()) |maybe_export_token| {
1434 if (tree.token_ids[maybe_export_token] == .Keyword_export) {1434 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
1435 const export_src = tree.token_locs[maybe_export_token].start;1435 const export_src = tree.token_locs[maybe_export_token].start;
1436 const name_loc = tree.token_locs[fn_proto.getTrailer("name_token").?];1436 const name_loc = tree.token_locs[fn_proto.getNameToken().?];
1437 const name = tree.tokenSliceLoc(name_loc);1437 const name = tree.tokenSliceLoc(name_loc);
1438 // The scope needs to have the decl in it.1438 // The scope needs to have the decl in it.
1439 try self.analyzeExport(&block_scope.base, export_src, name, decl);1439 try self.analyzeExport(&block_scope.base, export_src, name, decl);
...@@ -1460,37 +1460,37 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1460,37 +1460,37 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1460 };1460 };
1461 defer block_scope.instructions.deinit(self.gpa);1461 defer block_scope.instructions.deinit(self.gpa);
14621462
1463 decl.is_pub = var_decl.getTrailer("visib_token") != null;1463 decl.is_pub = var_decl.getVisibToken() != null;
1464 const is_extern = blk: {1464 const is_extern = blk: {
1465 const maybe_extern_token = var_decl.getTrailer("extern_export_token") orelse1465 const maybe_extern_token = var_decl.getExternExportToken() orelse
1466 break :blk false;1466 break :blk false;
1467 if (tree.token_ids[maybe_extern_token] != .Keyword_extern) break :blk false;1467 if (tree.token_ids[maybe_extern_token] != .Keyword_extern) break :blk false;
1468 if (var_decl.getTrailer("init_node")) |some| {1468 if (var_decl.getInitNode()) |some| {
1469 return self.failNode(&block_scope.base, some, "extern variables have no initializers", .{});1469 return self.failNode(&block_scope.base, some, "extern variables have no initializers", .{});
1470 }1470 }
1471 break :blk true;1471 break :blk true;
1472 };1472 };
1473 if (var_decl.getTrailer("lib_name")) |lib_name| {1473 if (var_decl.getLibName()) |lib_name| {
1474 assert(is_extern);1474 assert(is_extern);
1475 return self.failNode(&block_scope.base, lib_name, "TODO implement function library name", .{});1475 return self.failNode(&block_scope.base, lib_name, "TODO implement function library name", .{});
1476 }1476 }
1477 const is_mutable = tree.token_ids[var_decl.mut_token] == .Keyword_var;1477 const is_mutable = tree.token_ids[var_decl.mut_token] == .Keyword_var;
1478 const is_threadlocal = if (var_decl.getTrailer("thread_local_token")) |some| blk: {1478 const is_threadlocal = if (var_decl.getThreadLocalToken()) |some| blk: {
1479 if (!is_mutable) {1479 if (!is_mutable) {
1480 return self.failTok(&block_scope.base, some, "threadlocal variable cannot be constant", .{});1480 return self.failTok(&block_scope.base, some, "threadlocal variable cannot be constant", .{});
1481 }1481 }
1482 break :blk true;1482 break :blk true;
1483 } else false;1483 } else false;
1484 assert(var_decl.getTrailer("comptime_token") == null);1484 assert(var_decl.getComptimeToken() == null);
1485 if (var_decl.getTrailer("align_node")) |align_expr| {1485 if (var_decl.getAlignNode()) |align_expr| {
1486 return self.failNode(&block_scope.base, align_expr, "TODO implement function align expression", .{});1486 return self.failNode(&block_scope.base, align_expr, "TODO implement function align expression", .{});
1487 }1487 }
1488 if (var_decl.getTrailer("section_node")) |sect_expr| {1488 if (var_decl.getSectionNode()) |sect_expr| {
1489 return self.failNode(&block_scope.base, sect_expr, "TODO implement function section expression", .{});1489 return self.failNode(&block_scope.base, sect_expr, "TODO implement function section expression", .{});
1490 }1490 }
14911491
1492 const explicit_type = blk: {1492 const explicit_type = blk: {
1493 const type_node = var_decl.getTrailer("type_node") orelse1493 const type_node = var_decl.getTypeNode() orelse
1494 break :blk null;1494 break :blk null;
14951495
1496 // Temporary arena for the zir instructions.1496 // Temporary arena for the zir instructions.
...@@ -1517,7 +1517,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1517,7 +1517,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1517 };1517 };
15181518
1519 var var_type: Type = undefined;1519 var var_type: Type = undefined;
1520 const value: ?Value = if (var_decl.getTrailer("init_node")) |init_node| blk: {1520 const value: ?Value = if (var_decl.getInitNode()) |init_node| blk: {
1521 var gen_scope_arena = std.heap.ArenaAllocator.init(self.gpa);1521 var gen_scope_arena = std.heap.ArenaAllocator.init(self.gpa);
1522 defer gen_scope_arena.deinit();1522 defer gen_scope_arena.deinit();
1523 var gen_scope: Scope.GenZIR = .{1523 var gen_scope: Scope.GenZIR = .{
...@@ -1602,7 +1602,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {...@@ -1602,7 +1602,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
1602 decl.analysis = .complete;1602 decl.analysis = .complete;
1603 decl.generation = self.generation;1603 decl.generation = self.generation;
16041604
1605 if (var_decl.getTrailer("extern_export_token")) |maybe_export_token| {1605 if (var_decl.getExternExportToken()) |maybe_export_token| {
1606 if (tree.token_ids[maybe_export_token] == .Keyword_export) {1606 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
1607 const export_src = tree.token_locs[maybe_export_token].start;1607 const export_src = tree.token_locs[maybe_export_token].start;
1608 const name_loc = tree.token_locs[var_decl.name_token];1608 const name_loc = tree.token_locs[var_decl.name_token];
...@@ -1768,7 +1768,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {...@@ -1768,7 +1768,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
1768 for (decls) |src_decl, decl_i| {1768 for (decls) |src_decl, decl_i| {
1769 if (src_decl.cast(ast.Node.FnProto)) |fn_proto| {1769 if (src_decl.cast(ast.Node.FnProto)) |fn_proto| {
1770 // We will create a Decl for it regardless of analysis status.1770 // We will create a Decl for it regardless of analysis status.
1771 const name_tok = fn_proto.getTrailer("name_token") orelse {1771 const name_tok = fn_proto.getNameToken() orelse {
1772 @panic("TODO missing function name");1772 @panic("TODO missing function name");
1773 };1773 };
17741774
...@@ -1804,7 +1804,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {...@@ -1804,7 +1804,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
1804 } else {1804 } else {
1805 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);1805 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);
1806 root_scope.decls.appendAssumeCapacity(new_decl);1806 root_scope.decls.appendAssumeCapacity(new_decl);
1807 if (fn_proto.getTrailer("extern_export_inline_token")) |maybe_export_token| {1807 if (fn_proto.getExternExportInlineToken()) |maybe_export_token| {
1808 if (tree.token_ids[maybe_export_token] == .Keyword_export) {1808 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
1809 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });1809 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });
1810 }1810 }
...@@ -1831,7 +1831,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {...@@ -1831,7 +1831,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
1831 } else {1831 } else {
1832 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);1832 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);
1833 root_scope.decls.appendAssumeCapacity(new_decl);1833 root_scope.decls.appendAssumeCapacity(new_decl);
1834 if (var_decl.getTrailer("extern_export_token")) |maybe_export_token| {1834 if (var_decl.getExternExportToken()) |maybe_export_token| {
1835 if (tree.token_ids[maybe_export_token] == .Keyword_export) {1835 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
1836 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });1836 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });
1837 }1837 }
...@@ -2570,7 +2570,18 @@ pub fn analyzeIsNull(...@@ -2570,7 +2570,18 @@ pub fn analyzeIsNull(
2570 operand: *Inst,2570 operand: *Inst,
2571 invert_logic: bool,2571 invert_logic: bool,
2572) InnerError!*Inst {2572) InnerError!*Inst {
2573 return self.fail(scope, src, "TODO implement analysis of isnull and isnotnull", .{});2573 if (operand.value()) |opt_val| {
2574 const is_null = opt_val.isNull();
2575 const bool_value = if (invert_logic) !is_null else is_null;
2576 return self.constBool(scope, src, bool_value);
2577 }
2578 const b = try self.requireRuntimeBlock(scope, src);
2579 const inst_tag: Inst.Tag = if (invert_logic) .isnonnull else .isnull;
2580 return self.addUnOp(b, src, Type.initTag(.bool), inst_tag, operand);
2581}
2582
2583pub fn analyzeIsErr(self: *Module, scope: *Scope, src: usize, operand: *Inst) InnerError!*Inst {
2584 return self.fail(scope, src, "TODO implement analysis of iserr", .{});
2574}2585}
25752586
2576/// Asserts that lhs and rhs types are both numeric.2587/// Asserts that lhs and rhs types are both numeric.
src-self-hosted/astgen.zig+292-15
...@@ -13,7 +13,8 @@ const Scope = Module.Scope;...@@ -13,7 +13,8 @@ const Scope = Module.Scope;
13const InnerError = Module.InnerError;13const InnerError = Module.InnerError;
1414
15pub const ResultLoc = union(enum) {15pub const ResultLoc = union(enum) {
16 /// The expression is the right-hand side of assignment to `_`.16 /// The expression is the right-hand side of assignment to `_`. Only the side-effects of the
17 /// expression should be generated.
17 discard,18 discard,
18 /// The expression has an inferred type, and it will be evaluated as an rvalue.19 /// The expression has an inferred type, and it will be evaluated as an rvalue.
19 none,20 none,
...@@ -272,22 +273,22 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr...@@ -272,22 +273,22 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
272 .AnyFrameType => return rlWrap(mod, scope, rl, try anyFrameType(mod, scope, node.castTag(.AnyFrameType).?)),273 .AnyFrameType => return rlWrap(mod, scope, rl, try anyFrameType(mod, scope, node.castTag(.AnyFrameType).?)),
273 .ErrorSetDecl => return errorSetDecl(mod, scope, rl, node.castTag(.ErrorSetDecl).?),274 .ErrorSetDecl => return errorSetDecl(mod, scope, rl, node.castTag(.ErrorSetDecl).?),
274 .ErrorType => return rlWrap(mod, scope, rl, try errorType(mod, scope, node.castTag(.ErrorType).?)),275 .ErrorType => return rlWrap(mod, scope, rl, try errorType(mod, scope, node.castTag(.ErrorType).?)),
276 .For => return forExpr(mod, scope, rl, node.castTag(.For).?),
277 .ArrayAccess => return arrayAccess(mod, scope, rl, node.castTag(.ArrayAccess).?),
278 .Catch => return catchExpr(mod, scope, rl, node.castTag(.Catch).?),
275279
276 .Defer => return mod.failNode(scope, node, "TODO implement astgen.expr for .Defer", .{}),280 .Defer => return mod.failNode(scope, node, "TODO implement astgen.expr for .Defer", .{}),
277 .Catch => return mod.failNode(scope, node, "TODO implement astgen.expr for .Catch", .{}),
278 .Range => return mod.failNode(scope, node, "TODO implement astgen.expr for .Range", .{}),281 .Range => return mod.failNode(scope, node, "TODO implement astgen.expr for .Range", .{}),
279 .OrElse => return mod.failNode(scope, node, "TODO implement astgen.expr for .OrElse", .{}),282 .OrElse => return mod.failNode(scope, node, "TODO implement astgen.expr for .OrElse", .{}),
280 .Await => return mod.failNode(scope, node, "TODO implement astgen.expr for .Await", .{}),283 .Await => return mod.failNode(scope, node, "TODO implement astgen.expr for .Await", .{}),
281 .Resume => return mod.failNode(scope, node, "TODO implement astgen.expr for .Resume", .{}),284 .Resume => return mod.failNode(scope, node, "TODO implement astgen.expr for .Resume", .{}),
282 .Try => return mod.failNode(scope, node, "TODO implement astgen.expr for .Try", .{}),285 .Try => return mod.failNode(scope, node, "TODO implement astgen.expr for .Try", .{}),
283 .Slice => return mod.failNode(scope, node, "TODO implement astgen.expr for .Slice", .{}),286 .Slice => return mod.failNode(scope, node, "TODO implement astgen.expr for .Slice", .{}),
284 .ArrayAccess => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayAccess", .{}),
285 .ArrayInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializer", .{}),287 .ArrayInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializer", .{}),
286 .ArrayInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializerDot", .{}),288 .ArrayInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializerDot", .{}),
287 .StructInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializer", .{}),289 .StructInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializer", .{}),
288 .StructInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializerDot", .{}),290 .StructInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializerDot", .{}),
289 .Switch => return mod.failNode(scope, node, "TODO implement astgen.expr for .Switch", .{}),291 .Switch => return mod.failNode(scope, node, "TODO implement astgen.expr for .Switch", .{}),
290 .For => return mod.failNode(scope, node, "TODO implement astgen.expr for .For", .{}),
291 .Suspend => return mod.failNode(scope, node, "TODO implement astgen.expr for .Suspend", .{}),292 .Suspend => return mod.failNode(scope, node, "TODO implement astgen.expr for .Suspend", .{}),
292 .Continue => return mod.failNode(scope, node, "TODO implement astgen.expr for .Continue", .{}),293 .Continue => return mod.failNode(scope, node, "TODO implement astgen.expr for .Continue", .{}),
293 .AnyType => return mod.failNode(scope, node, "TODO implement astgen.expr for .AnyType", .{}),294 .AnyType => return mod.failNode(scope, node, "TODO implement astgen.expr for .AnyType", .{}),
...@@ -450,16 +451,16 @@ fn varDecl(...@@ -450,16 +451,16 @@ fn varDecl(
450 block_arena: *Allocator,451 block_arena: *Allocator,
451) InnerError!*Scope {452) InnerError!*Scope {
452 // TODO implement detection of shadowing453 // TODO implement detection of shadowing
453 if (node.getTrailer("comptime_token")) |comptime_token| {454 if (node.getComptimeToken()) |comptime_token| {
454 return mod.failTok(scope, comptime_token, "TODO implement comptime locals", .{});455 return mod.failTok(scope, comptime_token, "TODO implement comptime locals", .{});
455 }456 }
456 if (node.getTrailer("align_node")) |align_node| {457 if (node.getAlignNode()) |align_node| {
457 return mod.failNode(scope, align_node, "TODO implement alignment on locals", .{});458 return mod.failNode(scope, align_node, "TODO implement alignment on locals", .{});
458 }459 }
459 const tree = scope.tree();460 const tree = scope.tree();
460 const name_src = tree.token_locs[node.name_token].start;461 const name_src = tree.token_locs[node.name_token].start;
461 const ident_name = try identifierTokenString(mod, scope, node.name_token);462 const ident_name = try identifierTokenString(mod, scope, node.name_token);
462 const init_node = node.getTrailer("init_node") orelse463 const init_node = node.getInitNode() orelse
463 return mod.fail(scope, name_src, "variables must be initialized", .{});464 return mod.fail(scope, name_src, "variables must be initialized", .{});
464465
465 switch (tree.token_ids[node.mut_token]) {466 switch (tree.token_ids[node.mut_token]) {
...@@ -468,7 +469,7 @@ fn varDecl(...@@ -468,7 +469,7 @@ fn varDecl(
468 // or an rvalue as a result location. If it is an rvalue, we can use the instruction as469 // or an rvalue as a result location. If it is an rvalue, we can use the instruction as
469 // the variable, no memory location needed.470 // the variable, no memory location needed.
470 const result_loc = if (nodeMayNeedMemoryLocation(init_node)) r: {471 const result_loc = if (nodeMayNeedMemoryLocation(init_node)) r: {
471 if (node.getTrailer("type_node")) |type_node| {472 if (node.getTypeNode()) |type_node| {
472 const type_inst = try typeExpr(mod, scope, type_node);473 const type_inst = try typeExpr(mod, scope, type_node);
473 const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);474 const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);
474 break :r ResultLoc{ .ptr = alloc };475 break :r ResultLoc{ .ptr = alloc };
...@@ -477,7 +478,7 @@ fn varDecl(...@@ -477,7 +478,7 @@ fn varDecl(
477 break :r ResultLoc{ .inferred_ptr = alloc };478 break :r ResultLoc{ .inferred_ptr = alloc };
478 }479 }
479 } else r: {480 } else r: {
480 if (node.getTrailer("type_node")) |type_node|481 if (node.getTypeNode()) |type_node|
481 break :r ResultLoc{ .ty = try typeExpr(mod, scope, type_node) }482 break :r ResultLoc{ .ty = try typeExpr(mod, scope, type_node) }
482 else483 else
483 break :r .none;484 break :r .none;
...@@ -493,10 +494,10 @@ fn varDecl(...@@ -493,10 +494,10 @@ fn varDecl(
493 return &sub_scope.base;494 return &sub_scope.base;
494 },495 },
495 .Keyword_var => {496 .Keyword_var => {
496 const var_data: struct { result_loc: ResultLoc, alloc: *zir.Inst } = if (node.getTrailer("type_node")) |type_node| a: {497 const var_data: struct { result_loc: ResultLoc, alloc: *zir.Inst } = if (node.getTypeNode()) |type_node| a: {
497 const type_inst = try typeExpr(mod, scope, type_node);498 const type_inst = try typeExpr(mod, scope, type_node);
498 const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);499 const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);
499 break :a .{ .alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst), .result_loc = .{ .ptr = alloc } };500 break :a .{ .alloc = alloc, .result_loc = .{ .ptr = alloc } };
500 } else a: {501 } else a: {
501 const alloc = try addZIRNoOp(mod, scope, name_src, .alloc_inferred);502 const alloc = try addZIRNoOp(mod, scope, name_src, .alloc_inferred);
502 break :a .{ .alloc = alloc, .result_loc = .{ .inferred_ptr = alloc.castTag(.alloc_inferred).? } };503 break :a .{ .alloc = alloc, .result_loc = .{ .inferred_ptr = alloc.castTag(.alloc_inferred).? } };
...@@ -623,7 +624,7 @@ fn ptrSliceType(mod: *Module, scope: *Scope, src: usize, ptr_info: *ast.PtrInfo,...@@ -623,7 +624,7 @@ fn ptrSliceType(mod: *Module, scope: *Scope, src: usize, ptr_info: *ast.PtrInfo,
623 .One => if (mutable) T.single_mut_ptr_type else T.single_const_ptr_type,624 .One => if (mutable) T.single_mut_ptr_type else T.single_const_ptr_type,
624 .Many => if (mutable) T.many_mut_ptr_type else T.many_const_ptr_type,625 .Many => if (mutable) T.many_mut_ptr_type else T.many_const_ptr_type,
625 .C => if (mutable) T.c_mut_ptr_type else T.c_const_ptr_type,626 .C => if (mutable) T.c_mut_ptr_type else T.c_const_ptr_type,
626 .Slice => if (mutable) T.mut_slice_type else T.mut_slice_type,627 .Slice => if (mutable) T.mut_slice_type else T.const_slice_type,
627 }, child_type);628 }, child_type);
628 }629 }
629630
...@@ -749,6 +750,93 @@ fn errorType(mod: *Module, scope: *Scope, node: *ast.Node.OneToken) InnerError!*...@@ -749,6 +750,93 @@ fn errorType(mod: *Module, scope: *Scope, node: *ast.Node.OneToken) InnerError!*
749 });750 });
750}751}
751752
753fn catchExpr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.Catch) InnerError!*zir.Inst {
754 const tree = scope.tree();
755 const src = tree.token_locs[node.op_token].start;
756
757 const err_union_ptr = try expr(mod, scope, .ref, node.lhs);
758 // TODO we could avoid an unnecessary copy if .iserr took a pointer
759 const err_union = try addZIRUnOp(mod, scope, src, .deref, err_union_ptr);
760 const cond = try addZIRUnOp(mod, scope, src, .iserr, err_union);
761
762 var block_scope: Scope.GenZIR = .{
763 .parent = scope,
764 .decl = scope.decl().?,
765 .arena = scope.arena(),
766 .instructions = .{},
767 };
768 defer block_scope.instructions.deinit(mod.gpa);
769
770 const condbr = try addZIRInstSpecial(mod, &block_scope.base, src, zir.Inst.CondBr, .{
771 .condition = cond,
772 .then_body = undefined, // populated below
773 .else_body = undefined, // populated below
774 }, .{});
775
776 const block = try addZIRInstBlock(mod, scope, src, .{
777 .instructions = try block_scope.arena.dupe(*zir.Inst, block_scope.instructions.items),
778 });
779
780 // Most result location types can be forwarded directly; however
781 // if we need to write to a pointer which has an inferred type,
782 // proper type inference requires peer type resolution on the if's
783 // branches.
784 const branch_rl: ResultLoc = switch (rl) {
785 .discard, .none, .ty, .ptr, .ref => rl,
786 .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = block },
787 };
788
789 var err_scope: Scope.GenZIR = .{
790 .parent = scope,
791 .decl = block_scope.decl,
792 .arena = block_scope.arena,
793 .instructions = .{},
794 };
795 defer err_scope.instructions.deinit(mod.gpa);
796
797 var err_val_scope: Scope.LocalVal = undefined;
798 const err_sub_scope = blk: {
799 const payload = node.payload orelse
800 break :blk &err_scope.base;
801
802 const err_name = tree.tokenSlice(payload.castTag(.Payload).?.error_symbol.firstToken());
803 if (mem.eql(u8, err_name, "_"))
804 break :blk &err_scope.base;
805
806 const unwrapped_err_ptr = try addZIRUnOp(mod, &err_scope.base, src, .unwrap_err_code, err_union_ptr);
807 err_val_scope = .{
808 .parent = &err_scope.base,
809 .gen_zir = &err_scope,
810 .name = err_name,
811 .inst = try addZIRUnOp(mod, &err_scope.base, src, .deref, unwrapped_err_ptr),
812 };
813 break :blk &err_val_scope.base;
814 };
815
816 _ = try addZIRInst(mod, &err_scope.base, src, zir.Inst.Break, .{
817 .block = block,
818 .operand = try expr(mod, err_sub_scope, branch_rl, node.rhs),
819 }, .{});
820
821 var not_err_scope: Scope.GenZIR = .{
822 .parent = scope,
823 .decl = block_scope.decl,
824 .arena = block_scope.arena,
825 .instructions = .{},
826 };
827 defer not_err_scope.instructions.deinit(mod.gpa);
828
829 const unwrapped_payload = try addZIRUnOp(mod, &not_err_scope.base, src, .unwrap_err_unsafe, err_union_ptr);
830 _ = try addZIRInst(mod, &not_err_scope.base, src, zir.Inst.Break, .{
831 .block = block,
832 .operand = unwrapped_payload,
833 }, .{});
834
835 condbr.positionals.then_body = .{ .instructions = try err_scope.arena.dupe(*zir.Inst, err_scope.instructions.items) };
836 condbr.positionals.else_body = .{ .instructions = try not_err_scope.arena.dupe(*zir.Inst, not_err_scope.instructions.items) };
837 return rlWrap(mod, scope, rl, &block.base);
838}
839
752/// Return whether the identifier names of two tokens are equal. Resolves @"" tokens without allocating.840/// Return whether the identifier names of two tokens are equal. Resolves @"" tokens without allocating.
753/// OK in theory it could do it without allocating. This implementation allocates when the @"" form is used.841/// OK in theory it could do it without allocating. This implementation allocates when the @"" form is used.
754fn tokenIdentEql(mod: *Module, scope: *Scope, token1: ast.TokenIndex, token2: ast.TokenIndex) !bool {842fn tokenIdentEql(mod: *Module, scope: *Scope, token1: ast.TokenIndex, token2: ast.TokenIndex) !bool {
...@@ -793,9 +881,17 @@ fn field(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.SimpleInfix...@@ -793,9 +881,17 @@ fn field(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.SimpleInfix
793 const lhs = try expr(mod, scope, .ref, node.lhs);881 const lhs = try expr(mod, scope, .ref, node.lhs);
794 const field_name = try identifierStringInst(mod, scope, node.rhs.castTag(.Identifier).?);882 const field_name = try identifierStringInst(mod, scope, node.rhs.castTag(.Identifier).?);
795883
796 const pointer = try addZIRInst(mod, scope, src, zir.Inst.FieldPtr, .{ .object_ptr = lhs, .field_name = field_name }, .{});884 return rlWrapPtr(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.FieldPtr, .{ .object_ptr = lhs, .field_name = field_name }, .{}));
797 if (rl == .ref) return pointer;885}
798 return rlWrap(mod, scope, rl, try addZIRUnOp(mod, scope, src, .deref, pointer));886
887fn arrayAccess(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node.ArrayAccess) InnerError!*zir.Inst {
888 const tree = scope.tree();
889 const src = tree.token_locs[node.rtoken].start;
890
891 const array_ptr = try expr(mod, scope, .ref, node.lhs);
892 const index = try expr(mod, scope, .none, node.index_expr);
893
894 return rlWrapPtr(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.ElemPtr, .{ .array_ptr = array_ptr, .index = index }, .{}));
799}895}
800896
801fn deref(mod: *Module, scope: *Scope, node: *ast.Node.SimpleSuffixOp) InnerError!*zir.Inst {897fn deref(mod: *Module, scope: *Scope, node: *ast.Node.SimpleSuffixOp) InnerError!*zir.Inst {
...@@ -1079,6 +1175,12 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W...@@ -1079,6 +1175,12 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
1079 }1175 }
1080 }1176 }
10811177
1178 if (while_node.label) |tok|
1179 return mod.failTok(scope, tok, "TODO labeled while", .{});
1180
1181 if (while_node.inline_token) |tok|
1182 return mod.failTok(scope, tok, "TODO inline while", .{});
1183
1082 var expr_scope: Scope.GenZIR = .{1184 var expr_scope: Scope.GenZIR = .{
1083 .parent = scope,1185 .parent = scope,
1084 .decl = scope.decl().?,1186 .decl = scope.decl().?,
...@@ -1197,6 +1299,181 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W...@@ -1197,6 +1299,181 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
1197 return &while_block.base;1299 return &while_block.base;
1198}1300}
11991301
1302fn forExpr(mod: *Module, scope: *Scope, rl: ResultLoc, for_node: *ast.Node.For) InnerError!*zir.Inst {
1303 if (for_node.label) |tok|
1304 return mod.failTok(scope, tok, "TODO labeled for", .{});
1305
1306 if (for_node.inline_token) |tok|
1307 return mod.failTok(scope, tok, "TODO inline for", .{});
1308
1309 var for_scope: Scope.GenZIR = .{
1310 .parent = scope,
1311 .decl = scope.decl().?,
1312 .arena = scope.arena(),
1313 .instructions = .{},
1314 };
1315 defer for_scope.instructions.deinit(mod.gpa);
1316
1317 // setup variables and constants
1318 const tree = scope.tree();
1319 const for_src = tree.token_locs[for_node.for_token].start;
1320 const index_ptr = blk: {
1321 const usize_type = try addZIRInstConst(mod, &for_scope.base, for_src, .{
1322 .ty = Type.initTag(.type),
1323 .val = Value.initTag(.usize_type),
1324 });
1325 const index_ptr = try addZIRUnOp(mod, &for_scope.base, for_src, .alloc, usize_type);
1326 // initialize to zero
1327 const zero = try addZIRInstConst(mod, &for_scope.base, for_src, .{
1328 .ty = Type.initTag(.usize),
1329 .val = Value.initTag(.zero),
1330 });
1331 _ = try addZIRBinOp(mod, &for_scope.base, for_src, .store, index_ptr, zero);
1332 break :blk index_ptr;
1333 };
1334 const array_ptr = try expr(mod, &for_scope.base, .ref, for_node.array_expr);
1335 _ = try addZIRUnOp(mod, &for_scope.base, for_node.array_expr.firstToken(), .ensure_indexable, array_ptr);
1336 const cond_src = tree.token_locs[for_node.array_expr.firstToken()].start;
1337 const len_ptr = try addZIRInst(mod, &for_scope.base, cond_src, zir.Inst.FieldPtr, .{
1338 .object_ptr = array_ptr,
1339 .field_name = try addZIRInst(mod, &for_scope.base, cond_src, zir.Inst.Str, .{ .bytes = "len" }, .{}),
1340 }, .{});
1341
1342 var loop_scope: Scope.GenZIR = .{
1343 .parent = &for_scope.base,
1344 .decl = for_scope.decl,
1345 .arena = for_scope.arena,
1346 .instructions = .{},
1347 };
1348 defer loop_scope.instructions.deinit(mod.gpa);
1349
1350 var cond_scope: Scope.GenZIR = .{
1351 .parent = &loop_scope.base,
1352 .decl = loop_scope.decl,
1353 .arena = loop_scope.arena,
1354 .instructions = .{},
1355 };
1356 defer cond_scope.instructions.deinit(mod.gpa);
1357
1358 // check condition i < array_expr.len
1359 const index = try addZIRUnOp(mod, &cond_scope.base, cond_src, .deref, index_ptr);
1360 const len = try addZIRUnOp(mod, &cond_scope.base, cond_src, .deref, len_ptr);
1361 const cond = try addZIRBinOp(mod, &cond_scope.base, cond_src, .cmp_lt, index, len);
1362
1363 const condbr = try addZIRInstSpecial(mod, &cond_scope.base, for_src, zir.Inst.CondBr, .{
1364 .condition = cond,
1365 .then_body = undefined, // populated below
1366 .else_body = undefined, // populated below
1367 }, .{});
1368 const cond_block = try addZIRInstBlock(mod, &loop_scope.base, for_src, .{
1369 .instructions = try loop_scope.arena.dupe(*zir.Inst, cond_scope.instructions.items),
1370 });
1371
1372 // increment index variable
1373 const one = try addZIRInstConst(mod, &loop_scope.base, for_src, .{
1374 .ty = Type.initTag(.usize),
1375 .val = Value.initTag(.one),
1376 });
1377 const index_2 = try addZIRUnOp(mod, &loop_scope.base, cond_src, .deref, index_ptr);
1378 const index_plus_one = try addZIRBinOp(mod, &loop_scope.base, for_src, .add, index_2, one);
1379 _ = try addZIRBinOp(mod, &loop_scope.base, for_src, .store, index_ptr, index_plus_one);
1380
1381 // looping stuff
1382 const loop = try addZIRInstLoop(mod, &for_scope.base, for_src, .{
1383 .instructions = try for_scope.arena.dupe(*zir.Inst, loop_scope.instructions.items),
1384 });
1385 const for_block = try addZIRInstBlock(mod, scope, for_src, .{
1386 .instructions = try for_scope.arena.dupe(*zir.Inst, for_scope.instructions.items),
1387 });
1388
1389 // while body
1390 const then_src = tree.token_locs[for_node.body.lastToken()].start;
1391 var then_scope: Scope.GenZIR = .{
1392 .parent = &cond_scope.base,
1393 .decl = cond_scope.decl,
1394 .arena = cond_scope.arena,
1395 .instructions = .{},
1396 };
1397 defer then_scope.instructions.deinit(mod.gpa);
1398
1399 // Most result location types can be forwarded directly; however
1400 // if we need to write to a pointer which has an inferred type,
1401 // proper type inference requires peer type resolution on the while's
1402 // branches.
1403 const branch_rl: ResultLoc = switch (rl) {
1404 .discard, .none, .ty, .ptr, .ref => rl,
1405 .inferred_ptr, .bitcasted_ptr, .block_ptr => .{ .block_ptr = for_block },
1406 };
1407
1408 var index_scope: Scope.LocalPtr = undefined;
1409 const then_sub_scope = blk: {
1410 const payload = for_node.payload.castTag(.PointerIndexPayload).?;
1411 const is_ptr = payload.ptr_token != null;
1412 const value_name = tree.tokenSlice(payload.value_symbol.firstToken());
1413 if (!mem.eql(u8, value_name, "_")) {
1414 return mod.failNode(&then_scope.base, payload.value_symbol, "TODO implement for value payload", .{});
1415 } else if (is_ptr) {
1416 return mod.failTok(&then_scope.base, payload.ptr_token.?, "pointer modifier invalid on discard", .{});
1417 }
1418
1419 const index_symbol_node = payload.index_symbol orelse
1420 break :blk &then_scope.base;
1421
1422 const index_name = tree.tokenSlice(index_symbol_node.firstToken());
1423 if (mem.eql(u8, index_name, "_")) {
1424 break :blk &then_scope.base;
1425 }
1426 // TODO make this const without an extra copy?
1427 index_scope = .{
1428 .parent = &then_scope.base,
1429 .gen_zir = &then_scope,
1430 .name = index_name,
1431 .ptr = index_ptr,
1432 };
1433 break :blk &index_scope.base;
1434 };
1435
1436 const then_result = try expr(mod, then_sub_scope, branch_rl, for_node.body);
1437 if (!then_result.tag.isNoReturn()) {
1438 _ = try addZIRInst(mod, then_sub_scope, then_src, zir.Inst.Break, .{
1439 .block = cond_block,
1440 .operand = then_result,
1441 }, .{});
1442 }
1443 condbr.positionals.then_body = .{
1444 .instructions = try then_scope.arena.dupe(*zir.Inst, then_scope.instructions.items),
1445 };
1446
1447 // else branch
1448 var else_scope: Scope.GenZIR = .{
1449 .parent = &cond_scope.base,
1450 .decl = cond_scope.decl,
1451 .arena = cond_scope.arena,
1452 .instructions = .{},
1453 };
1454 defer else_scope.instructions.deinit(mod.gpa);
1455
1456 if (for_node.@"else") |else_node| {
1457 const else_src = tree.token_locs[else_node.body.lastToken()].start;
1458 const else_result = try expr(mod, &else_scope.base, branch_rl, else_node.body);
1459 if (!else_result.tag.isNoReturn()) {
1460 _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.Break, .{
1461 .block = for_block,
1462 .operand = else_result,
1463 }, .{});
1464 }
1465 } else {
1466 const else_src = tree.token_locs[for_node.lastToken()].start;
1467 _ = try addZIRInst(mod, &else_scope.base, else_src, zir.Inst.BreakVoid, .{
1468 .block = for_block,
1469 }, .{});
1470 }
1471 condbr.positionals.else_body = .{
1472 .instructions = try else_scope.arena.dupe(*zir.Inst, else_scope.instructions.items),
1473 };
1474 return &for_block.base;
1475}
1476
1200fn ret(mod: *Module, scope: *Scope, cfe: *ast.Node.ControlFlowExpression) InnerError!*zir.Inst {1477fn ret(mod: *Module, scope: *Scope, cfe: *ast.Node.ControlFlowExpression) InnerError!*zir.Inst {
1201 const tree = scope.tree();1478 const tree = scope.tree();
1202 const src = tree.token_locs[cfe.ltoken].start;1479 const src = tree.token_locs[cfe.ltoken].start;
src-self-hosted/codegen.zig+278-134
...@@ -273,8 +273,22 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -273,8 +273,22 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
273 /// across each runtime branch upon joining.273 /// across each runtime branch upon joining.
274 branch_stack: *std.ArrayList(Branch),274 branch_stack: *std.ArrayList(Branch),
275275
276 /// The key must be canonical register.
277 registers: std.AutoHashMapUnmanaged(Register, *ir.Inst) = .{},
278 free_registers: FreeRegInt = math.maxInt(FreeRegInt),
279 /// Maps offset to what is stored there.
280 stack: std.AutoHashMapUnmanaged(u32, StackAllocation) = .{},
281
282 /// Offset from the stack base, representing the end of the stack frame.
283 max_end_stack: u32 = 0,
284 /// Represents the current end stack offset. If there is no existing slot
285 /// to place a new stack allocation, it goes here, and then bumps `max_end_stack`.
286 next_stack_offset: u32 = 0,
287
276 const MCValue = union(enum) {288 const MCValue = union(enum) {
277 /// No runtime bits. `void` types, empty structs, u0, enums with 1 tag, etc.289 /// No runtime bits. `void` types, empty structs, u0, enums with 1 tag, etc.
290 /// TODO Look into deleting this tag and using `dead` instead, since every use
291 /// of MCValue.none should be instead looking at the type and noticing it is 0 bits.
278 none,292 none,
279 /// Control flow will not allow this value to be observed.293 /// Control flow will not allow this value to be observed.
280 unreach,294 unreach,
...@@ -346,71 +360,55 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -346,71 +360,55 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
346360
347 const Branch = struct {361 const Branch = struct {
348 inst_table: std.AutoHashMapUnmanaged(*ir.Inst, MCValue) = .{},362 inst_table: std.AutoHashMapUnmanaged(*ir.Inst, MCValue) = .{},
349 /// The key must be canonical register.
350 registers: std.AutoHashMapUnmanaged(Register, RegisterAllocation) = .{},
351 free_registers: FreeRegInt = math.maxInt(FreeRegInt),
352
353 /// Maps offset to what is stored there.
354 stack: std.AutoHashMapUnmanaged(u32, StackAllocation) = .{},
355 /// Offset from the stack base, representing the end of the stack frame.
356 max_end_stack: u32 = 0,
357 /// Represents the current end stack offset. If there is no existing slot
358 /// to place a new stack allocation, it goes here, and then bumps `max_end_stack`.
359 next_stack_offset: u32 = 0,
360
361 fn markRegUsed(self: *Branch, reg: Register) void {
362 if (FreeRegInt == u0) return;
363 const index = reg.allocIndex() orelse return;
364 const ShiftInt = math.Log2Int(FreeRegInt);
365 const shift = @intCast(ShiftInt, index);
366 self.free_registers &= ~(@as(FreeRegInt, 1) << shift);
367 }
368
369 fn markRegFree(self: *Branch, reg: Register) void {
370 if (FreeRegInt == u0) return;
371 const index = reg.allocIndex() orelse return;
372 const ShiftInt = math.Log2Int(FreeRegInt);
373 const shift = @intCast(ShiftInt, index);
374 self.free_registers |= @as(FreeRegInt, 1) << shift;
375 }
376
377 /// Before calling, must ensureCapacity + 1 on branch.registers.
378 /// Returns `null` if all registers are allocated.
379 fn allocReg(self: *Branch, inst: *ir.Inst) ?Register {
380 const free_index = @ctz(FreeRegInt, self.free_registers);
381 if (free_index >= callee_preserved_regs.len) {
382 return null;
383 }
384 self.free_registers &= ~(@as(FreeRegInt, 1) << free_index);
385 const reg = callee_preserved_regs[free_index];
386 self.registers.putAssumeCapacityNoClobber(reg, .{ .inst = inst });
387 log.debug("alloc {} => {*}", .{reg, inst});
388 return reg;
389 }
390
391 /// Does not track the register.
392 fn findUnusedReg(self: *Branch) ?Register {
393 const free_index = @ctz(FreeRegInt, self.free_registers);
394 if (free_index >= callee_preserved_regs.len) {
395 return null;
396 }
397 return callee_preserved_regs[free_index];
398 }
399363
400 fn deinit(self: *Branch, gpa: *Allocator) void {364 fn deinit(self: *Branch, gpa: *Allocator) void {
401 self.inst_table.deinit(gpa);365 self.inst_table.deinit(gpa);
402 self.registers.deinit(gpa);
403 self.stack.deinit(gpa);
404 self.* = undefined;366 self.* = undefined;
405 }367 }
406 };368 };
407369
408 const RegisterAllocation = struct {370 fn markRegUsed(self: *Self, reg: Register) void {
409 inst: *ir.Inst,371 if (FreeRegInt == u0) return;
410 };372 const index = reg.allocIndex() orelse return;
373 const ShiftInt = math.Log2Int(FreeRegInt);
374 const shift = @intCast(ShiftInt, index);
375 self.free_registers &= ~(@as(FreeRegInt, 1) << shift);
376 }
377
378 fn markRegFree(self: *Self, reg: Register) void {
379 if (FreeRegInt == u0) return;
380 const index = reg.allocIndex() orelse return;
381 const ShiftInt = math.Log2Int(FreeRegInt);
382 const shift = @intCast(ShiftInt, index);
383 self.free_registers |= @as(FreeRegInt, 1) << shift;
384 }
385
386 /// Before calling, must ensureCapacity + 1 on self.registers.
387 /// Returns `null` if all registers are allocated.
388 fn allocReg(self: *Self, inst: *ir.Inst) ?Register {
389 const free_index = @ctz(FreeRegInt, self.free_registers);
390 if (free_index >= callee_preserved_regs.len) {
391 return null;
392 }
393 self.free_registers &= ~(@as(FreeRegInt, 1) << free_index);
394 const reg = callee_preserved_regs[free_index];
395 self.registers.putAssumeCapacityNoClobber(reg, inst);
396 log.debug("alloc {} => {*}", .{reg, inst});
397 return reg;
398 }
399
400 /// Does not track the register.
401 fn findUnusedReg(self: *Self) ?Register {
402 const free_index = @ctz(FreeRegInt, self.free_registers);
403 if (free_index >= callee_preserved_regs.len) {
404 return null;
405 }
406 return callee_preserved_regs[free_index];
407 }
411408
412 const StackAllocation = struct {409 const StackAllocation = struct {
413 inst: *ir.Inst,410 inst: *ir.Inst,
411 /// TODO do we need size? should be determined by inst.ty.abiSize()
414 size: u32,412 size: u32,
415 };413 };
416414
...@@ -435,14 +433,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -435,14 +433,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
435 branch_stack.items[0].deinit(bin_file.allocator);433 branch_stack.items[0].deinit(bin_file.allocator);
436 branch_stack.deinit();434 branch_stack.deinit();
437 }435 }
438 const branch = try branch_stack.addOne();436 try branch_stack.append(.{});
439 branch.* = .{};
440437
441 const src_data: struct {lbrace_src: usize, rbrace_src: usize, source: []const u8} = blk: {438 const src_data: struct {lbrace_src: usize, rbrace_src: usize, source: []const u8} = blk: {
442 if (module_fn.owner_decl.scope.cast(Module.Scope.File)) |scope_file| {439 if (module_fn.owner_decl.scope.cast(Module.Scope.File)) |scope_file| {
443 const tree = scope_file.contents.tree;440 const tree = scope_file.contents.tree;
444 const fn_proto = tree.root_node.decls()[module_fn.owner_decl.src_index].castTag(.FnProto).?;441 const fn_proto = tree.root_node.decls()[module_fn.owner_decl.src_index].castTag(.FnProto).?;
445 const block = fn_proto.body().?.castTag(.Block).?;442 const block = fn_proto.getBodyNode().?.castTag(.Block).?;
446 const lbrace_src = tree.token_locs[block.lbrace].start;443 const lbrace_src = tree.token_locs[block.lbrace].start;
447 const rbrace_src = tree.token_locs[block.rbrace].start;444 const rbrace_src = tree.token_locs[block.rbrace].start;
448 break :blk .{ .lbrace_src = lbrace_src, .rbrace_src = rbrace_src, .source = tree.source };445 break :blk .{ .lbrace_src = lbrace_src, .rbrace_src = rbrace_src, .source = tree.source };
...@@ -476,6 +473,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -476,6 +473,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
476 .rbrace_src = src_data.rbrace_src,473 .rbrace_src = src_data.rbrace_src,
477 .source = src_data.source,474 .source = src_data.source,
478 };475 };
476 defer function.registers.deinit(bin_file.allocator);
477 defer function.stack.deinit(bin_file.allocator);
479 defer function.exitlude_jump_relocs.deinit(bin_file.allocator);478 defer function.exitlude_jump_relocs.deinit(bin_file.allocator);
480479
481 var call_info = function.resolveCallingConventionValues(src, fn_type) catch |err| switch (err) {480 var call_info = function.resolveCallingConventionValues(src, fn_type) catch |err| switch (err) {
...@@ -487,7 +486,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -487,7 +486,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
487 function.args = call_info.args;486 function.args = call_info.args;
488 function.ret_mcv = call_info.return_value;487 function.ret_mcv = call_info.return_value;
489 function.stack_align = call_info.stack_align;488 function.stack_align = call_info.stack_align;
490 branch.max_end_stack = call_info.stack_byte_count;489 function.max_end_stack = call_info.stack_byte_count;
491490
492 function.gen() catch |err| switch (err) {491 function.gen() catch |err| switch (err) {
493 error.CodegenFail => return Result{ .fail = function.err_msg.? },492 error.CodegenFail => return Result{ .fail = function.err_msg.? },
...@@ -523,7 +522,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -523,7 +522,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
523 try self.dbgSetPrologueEnd();522 try self.dbgSetPrologueEnd();
524 try self.genBody(self.mod_fn.analysis.success);523 try self.genBody(self.mod_fn.analysis.success);
525524
526 const stack_end = self.branch_stack.items[0].max_end_stack;525 const stack_end = self.max_end_stack;
527 if (stack_end > math.maxInt(i32))526 if (stack_end > math.maxInt(i32))
528 return self.fail(self.src, "too much stack used in call parameters", .{});527 return self.fail(self.src, "too much stack used in call parameters", .{});
529 const aligned_stack_end = mem.alignForward(stack_end, self.stack_align);528 const aligned_stack_end = mem.alignForward(stack_end, self.stack_align);
...@@ -580,13 +579,15 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -580,13 +579,15 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
580 }579 }
581580
582 fn genBody(self: *Self, body: ir.Body) InnerError!void {581 fn genBody(self: *Self, body: ir.Body) InnerError!void {
583 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
584 const inst_table = &branch.inst_table;
585 for (body.instructions) |inst| {582 for (body.instructions) |inst| {
583 try self.ensureProcessDeathCapacity(@popCount(@TypeOf(inst.deaths), inst.deaths));
584
586 const mcv = try self.genFuncInst(inst);585 const mcv = try self.genFuncInst(inst);
587 log.debug("{*} => {}", .{inst, mcv});586 if (!inst.isUnused()) {
588 // TODO don't put void or dead things in here587 log.debug("{*} => {}", .{inst, mcv});
589 try inst_table.putNoClobber(self.gpa, inst, mcv);588 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
589 try branch.inst_table.putNoClobber(self.gpa, inst, mcv);
590 }
590591
591 var i: ir.Inst.DeathsBitIndex = 0;592 var i: ir.Inst.DeathsBitIndex = 0;
592 while (inst.getOperand(i)) |operand| : (i += 1) {593 while (inst.getOperand(i)) |operand| : (i += 1) {
...@@ -628,21 +629,28 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -628,21 +629,28 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
628 self.dbg_line.appendAssumeCapacity(DW.LNS_copy);629 self.dbg_line.appendAssumeCapacity(DW.LNS_copy);
629 }630 }
630631
632 /// Asserts there is already capacity to insert into top branch inst_table.
631 fn processDeath(self: *Self, inst: *ir.Inst) void {633 fn processDeath(self: *Self, inst: *ir.Inst) void {
634 if (inst.tag == .constant) return; // Constants are immortal.
635 // When editing this function, note that the logic must synchronize with `reuseOperand`.
636 const prev_value = self.getResolvedInstValue(inst);
632 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];637 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
633 const entry = branch.inst_table.getEntry(inst) orelse return;638 branch.inst_table.putAssumeCapacity(inst, .dead);
634 const prev_value = entry.value;
635 entry.value = .dead;
636 switch (prev_value) {639 switch (prev_value) {
637 .register => |reg| {640 .register => |reg| {
638 const canon_reg = toCanonicalReg(reg);641 const canon_reg = toCanonicalReg(reg);
639 _ = branch.registers.remove(canon_reg);642 _ = self.registers.remove(canon_reg);
640 branch.markRegFree(canon_reg);643 self.markRegFree(canon_reg);
641 },644 },
642 else => {}, // TODO process stack allocation death645 else => {}, // TODO process stack allocation death
643 }646 }
644 }647 }
645648
649 fn ensureProcessDeathCapacity(self: *Self, additional_count: usize) !void {
650 const table = &self.branch_stack.items[self.branch_stack.items.len - 1].inst_table;
651 try table.ensureCapacity(self.gpa, table.items().len + additional_count);
652 }
653
646 /// Adds a Type to the .debug_info at the current position. The bytes will be populated later,654 /// Adds a Type to the .debug_info at the current position. The bytes will be populated later,
647 /// after codegen for this symbol is done.655 /// after codegen for this symbol is done.
648 fn addDbgInfoTypeReloc(self: *Self, ty: Type) !void {656 fn addDbgInfoTypeReloc(self: *Self, ty: Type) !void {
...@@ -705,13 +713,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -705,13 +713,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
705 fn allocMem(self: *Self, inst: *ir.Inst, abi_size: u32, abi_align: u32) !u32 {713 fn allocMem(self: *Self, inst: *ir.Inst, abi_size: u32, abi_align: u32) !u32 {
706 if (abi_align > self.stack_align)714 if (abi_align > self.stack_align)
707 self.stack_align = abi_align;715 self.stack_align = abi_align;
708 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
709 // TODO find a free slot instead of always appending716 // TODO find a free slot instead of always appending
710 const offset = mem.alignForwardGeneric(u32, branch.next_stack_offset, abi_align);717 const offset = mem.alignForwardGeneric(u32, self.next_stack_offset, abi_align);
711 branch.next_stack_offset = offset + abi_size;718 self.next_stack_offset = offset + abi_size;
712 if (branch.next_stack_offset > branch.max_end_stack)719 if (self.next_stack_offset > self.max_end_stack)
713 branch.max_end_stack = branch.next_stack_offset;720 self.max_end_stack = self.next_stack_offset;
714 try branch.stack.putNoClobber(self.gpa, offset, .{721 try self.stack.putNoClobber(self.gpa, offset, .{
715 .inst = inst,722 .inst = inst,
716 .size = abi_size,723 .size = abi_size,
717 });724 });
...@@ -737,15 +744,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -737,15 +744,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
737 const abi_align = elem_ty.abiAlignment(self.target.*);744 const abi_align = elem_ty.abiAlignment(self.target.*);
738 if (abi_align > self.stack_align)745 if (abi_align > self.stack_align)
739 self.stack_align = abi_align;746 self.stack_align = abi_align;
740 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
741747
742 if (reg_ok) {748 if (reg_ok) {
743 // Make sure the type can fit in a register before we try to allocate one.749 // Make sure the type can fit in a register before we try to allocate one.
744 const ptr_bits = arch.ptrBitWidth();750 const ptr_bits = arch.ptrBitWidth();
745 const ptr_bytes: u64 = @divExact(ptr_bits, 8);751 const ptr_bytes: u64 = @divExact(ptr_bits, 8);
746 if (abi_size <= ptr_bytes) {752 if (abi_size <= ptr_bytes) {
747 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);753 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
748 if (branch.allocReg(inst)) |reg| {754 if (self.allocReg(inst)) |reg| {
749 return MCValue{ .register = registerAlias(reg, abi_size) };755 return MCValue{ .register = registerAlias(reg, abi_size) };
750 }756 }
751 }757 }
...@@ -758,20 +764,18 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -758,20 +764,18 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
758 /// allocated. A second call to `copyToTmpRegister` may return the same register.764 /// allocated. A second call to `copyToTmpRegister` may return the same register.
759 /// This can have a side effect of spilling instructions to the stack to free up a register.765 /// This can have a side effect of spilling instructions to the stack to free up a register.
760 fn copyToTmpRegister(self: *Self, src: usize, mcv: MCValue) !Register {766 fn copyToTmpRegister(self: *Self, src: usize, mcv: MCValue) !Register {
761 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];767 const reg = self.findUnusedReg() orelse b: {
762
763 const reg = branch.findUnusedReg() orelse b: {
764 // We'll take over the first register. Move the instruction that was previously768 // We'll take over the first register. Move the instruction that was previously
765 // there to a stack allocation.769 // there to a stack allocation.
766 const reg = callee_preserved_regs[0];770 const reg = callee_preserved_regs[0];
767 const regs_entry = branch.registers.remove(reg).?;771 const regs_entry = self.registers.remove(reg).?;
768 const spilled_inst = regs_entry.value.inst;772 const spilled_inst = regs_entry.value;
769773
770 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);774 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);
771 const inst_entry = branch.inst_table.getEntry(spilled_inst).?;775 const reg_mcv = self.getResolvedInstValue(spilled_inst);
772 const reg_mcv = inst_entry.value;
773 assert(reg == toCanonicalReg(reg_mcv.register));776 assert(reg == toCanonicalReg(reg_mcv.register));
774 inst_entry.value = stack_mcv;777 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
778 try branch.inst_table.put(self.gpa, spilled_inst, stack_mcv);
775 try self.genSetStack(src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);779 try self.genSetStack(src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);
776780
777 break :b reg;781 break :b reg;
...@@ -784,22 +788,21 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -784,22 +788,21 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
784 /// `reg_owner` is the instruction that gets associated with the register in the register table.788 /// `reg_owner` is the instruction that gets associated with the register in the register table.
785 /// This can have a side effect of spilling instructions to the stack to free up a register.789 /// This can have a side effect of spilling instructions to the stack to free up a register.
786 fn copyToNewRegister(self: *Self, reg_owner: *ir.Inst, mcv: MCValue) !MCValue {790 fn copyToNewRegister(self: *Self, reg_owner: *ir.Inst, mcv: MCValue) !MCValue {
787 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];791 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
788 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);
789792
790 const reg = branch.allocReg(reg_owner) orelse b: {793 const reg = self.allocReg(reg_owner) orelse b: {
791 // We'll take over the first register. Move the instruction that was previously794 // We'll take over the first register. Move the instruction that was previously
792 // there to a stack allocation.795 // there to a stack allocation.
793 const reg = callee_preserved_regs[0];796 const reg = callee_preserved_regs[0];
794 const regs_entry = branch.registers.getEntry(reg).?;797 const regs_entry = self.registers.getEntry(reg).?;
795 const spilled_inst = regs_entry.value.inst;798 const spilled_inst = regs_entry.value;
796 regs_entry.value = .{ .inst = reg_owner };799 regs_entry.value = reg_owner;
797800
798 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);801 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);
799 const inst_entry = branch.inst_table.getEntry(spilled_inst).?;802 const reg_mcv = self.getResolvedInstValue(spilled_inst);
800 const reg_mcv = inst_entry.value;
801 assert(reg == toCanonicalReg(reg_mcv.register));803 assert(reg == toCanonicalReg(reg_mcv.register));
802 inst_entry.value = stack_mcv;804 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
805 try branch.inst_table.put(self.gpa, spilled_inst, stack_mcv);
803 try self.genSetStack(reg_owner.src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);806 try self.genSetStack(reg_owner.src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);
804807
805 break :b reg;808 break :b reg;
...@@ -826,6 +829,16 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -826,6 +829,16 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
826 // No side effects, so if it's unreferenced, do nothing.829 // No side effects, so if it's unreferenced, do nothing.
827 if (inst.base.isUnused())830 if (inst.base.isUnused())
828 return MCValue.dead;831 return MCValue.dead;
832
833 const operand = try self.resolveInst(inst.operand);
834 const info_a = inst.operand.ty.intInfo(self.target.*);
835 const info_b = inst.base.ty.intInfo(self.target.*);
836 if (info_a.signed != info_b.signed)
837 return self.fail(inst.base.src, "TODO gen intcast sign safety in semantic analysis", .{});
838
839 if (info_a.bits == info_b.bits)
840 return operand;
841
829 switch (arch) {842 switch (arch) {
830 else => return self.fail(inst.base.src, "TODO implement intCast for {}", .{self.target.cpu.arch}),843 else => return self.fail(inst.base.src, "TODO implement intCast for {}", .{self.target.cpu.arch}),
831 }844 }
...@@ -934,9 +947,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -934,9 +947,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
934 .register => |reg| {947 .register => |reg| {
935 // If it's in the registers table, need to associate the register with the948 // If it's in the registers table, need to associate the register with the
936 // new instruction.949 // new instruction.
937 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];950 if (self.registers.getEntry(toCanonicalReg(reg))) |entry| {
938 if (branch.registers.getEntry(toCanonicalReg(reg))) |entry| {951 entry.value = inst;
939 entry.value = .{ .inst = inst };
940 }952 }
941 log.debug("reusing {} => {*}", .{reg, inst});953 log.debug("reusing {} => {*}", .{reg, inst});
942 },954 },
...@@ -950,6 +962,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -950,6 +962,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
950 // Prevent the operand deaths processing code from deallocating it.962 // Prevent the operand deaths processing code from deallocating it.
951 inst.clearOperandDeath(op_index);963 inst.clearOperandDeath(op_index);
952964
965 // That makes us responsible for doing the rest of the stuff that processDeath would have done.
966 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
967 branch.inst_table.putAssumeCapacity(inst.getOperand(op_index).?, .dead);
968
953 return true;969 return true;
954 }970 }
955971
...@@ -1231,8 +1247,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1231,8 +1247,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1231 if (inst.base.isUnused())1247 if (inst.base.isUnused())
1232 return MCValue.dead;1248 return MCValue.dead;
12331249
1234 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];1250 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
1235 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);
12361251
1237 const result = self.args[self.arg_index];1252 const result = self.args[self.arg_index];
1238 self.arg_index += 1;1253 self.arg_index += 1;
...@@ -1240,8 +1255,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1240,8 +1255,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1240 const name_with_null = inst.name[0..mem.lenZ(inst.name) + 1];1255 const name_with_null = inst.name[0..mem.lenZ(inst.name) + 1];
1241 switch (result) {1256 switch (result) {
1242 .register => |reg| {1257 .register => |reg| {
1243 branch.registers.putAssumeCapacityNoClobber(toCanonicalReg(reg), .{ .inst = &inst.base });1258 self.registers.putAssumeCapacityNoClobber(toCanonicalReg(reg), &inst.base);
1244 branch.markRegUsed(reg);1259 self.markRegUsed(reg);
12451260
1246 try self.dbg_info.ensureCapacity(self.dbg_info.items.len + 8 + name_with_null.len);1261 try self.dbg_info.ensureCapacity(self.dbg_info.items.len + 8 + name_with_null.len);
1247 self.dbg_info.appendAssumeCapacity(link.File.Elf.abbrev_parameter);1262 self.dbg_info.appendAssumeCapacity(link.File.Elf.abbrev_parameter);
...@@ -1536,18 +1551,19 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1536,18 +1551,19 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
15361551
1537 fn genDbgStmt(self: *Self, inst: *ir.Inst.NoOp) !MCValue {1552 fn genDbgStmt(self: *Self, inst: *ir.Inst.NoOp) !MCValue {
1538 try self.dbgAdvancePCAndLine(inst.base.src);1553 try self.dbgAdvancePCAndLine(inst.base.src);
1539 return MCValue.none;1554 assert(inst.base.isUnused());
1555 return MCValue.dead;
1540 }1556 }
15411557
1542 fn genCondBr(self: *Self, inst: *ir.Inst.CondBr) !MCValue {1558 fn genCondBr(self: *Self, inst: *ir.Inst.CondBr) !MCValue {
1543 // TODO Rework this so that the arch-independent logic isn't buried and duplicated.1559 const cond = try self.resolveInst(inst.condition);
1544 switch (arch) {1560
1545 .x86_64 => {1561 const reloc: Reloc = switch (arch) {
1562 .i386, .x86_64 => reloc: {
1546 try self.code.ensureCapacity(self.code.items.len + 6);1563 try self.code.ensureCapacity(self.code.items.len + 6);
15471564
1548 const cond = try self.resolveInst(inst.condition);1565 const opcode: u8 = switch (cond) {
1549 switch (cond) {1566 .compare_flags_signed => |cmp_op| blk: {
1550 .compare_flags_signed => |cmp_op| {
1551 // Here we map to the opposite opcode because the jump is to the false branch.1567 // Here we map to the opposite opcode because the jump is to the false branch.
1552 const opcode: u8 = switch (cmp_op) {1568 const opcode: u8 = switch (cmp_op) {
1553 .gte => 0x8c,1569 .gte => 0x8c,
...@@ -1557,9 +1573,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1557,9 +1573,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1557 .lte => 0x8f,1573 .lte => 0x8f,
1558 .eq => 0x85,1574 .eq => 0x85,
1559 };1575 };
1560 return self.genX86CondBr(inst, opcode);1576 break :blk opcode;
1561 },1577 },
1562 .compare_flags_unsigned => |cmp_op| {1578 .compare_flags_unsigned => |cmp_op| blk: {
1563 // Here we map to the opposite opcode because the jump is to the false branch.1579 // Here we map to the opposite opcode because the jump is to the false branch.
1564 const opcode: u8 = switch (cmp_op) {1580 const opcode: u8 = switch (cmp_op) {
1565 .gte => 0x82,1581 .gte => 0x82,
...@@ -1569,9 +1585,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1569,9 +1585,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1569 .lte => 0x87,1585 .lte => 0x87,
1570 .eq => 0x85,1586 .eq => 0x85,
1571 };1587 };
1572 return self.genX86CondBr(inst, opcode);1588 break :blk opcode;
1573 },1589 },
1574 .register => |reg| {1590 .register => |reg| blk: {
1575 // test reg, 11591 // test reg, 1
1576 // TODO detect al, ax, eax1592 // TODO detect al, ax, eax
1577 try self.code.ensureCapacity(self.code.items.len + 4);1593 try self.code.ensureCapacity(self.code.items.len + 4);
...@@ -1583,23 +1599,128 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1583,23 +1599,128 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1583 @as(u8, 0xC0) | (0 << 3) | @truncate(u3, reg.id()),1599 @as(u8, 0xC0) | (0 << 3) | @truncate(u3, reg.id()),
1584 0x01,1600 0x01,
1585 });1601 });
1586 return self.genX86CondBr(inst, 0x84);1602 break :blk 0x84;
1587 },1603 },
1588 else => return self.fail(inst.base.src, "TODO implement condbr {} when condition is {}", .{ self.target.cpu.arch, @tagName(cond) }),1604 else => return self.fail(inst.base.src, "TODO implement condbr {} when condition is {}", .{ self.target.cpu.arch, @tagName(cond) }),
1589 }1605 };
1606 self.code.appendSliceAssumeCapacity(&[_]u8{ 0x0f, opcode });
1607 const reloc = Reloc{ .rel32 = self.code.items.len };
1608 self.code.items.len += 4;
1609 break :reloc reloc;
1590 },1610 },
1591 else => return self.fail(inst.base.src, "TODO implement condbr for {}", .{self.target.cpu.arch}),1611 else => return self.fail(inst.base.src, "TODO implement condbr {}", .{ self.target.cpu.arch }),
1592 }1612 };
1593 }
15941613
1595 fn genX86CondBr(self: *Self, inst: *ir.Inst.CondBr, opcode: u8) !MCValue {1614 // Capture the state of register and stack allocation state so that we can revert to it.
1596 // TODO deal with liveness / deaths condbr's then_entry_deaths and else_entry_deaths1615 const parent_next_stack_offset = self.next_stack_offset;
1597 self.code.appendSliceAssumeCapacity(&[_]u8{ 0x0f, opcode });1616 const parent_free_registers = self.free_registers;
1598 const reloc = Reloc{ .rel32 = self.code.items.len };1617 var parent_stack = try self.stack.clone(self.gpa);
1599 self.code.items.len += 4;1618 defer parent_stack.deinit(self.gpa);
1619 var parent_registers = try self.registers.clone(self.gpa);
1620 defer parent_registers.deinit(self.gpa);
1621
1622 try self.branch_stack.append(.{});
1623
1624 const then_deaths = inst.thenDeaths();
1625 try self.ensureProcessDeathCapacity(then_deaths.len);
1626 for (then_deaths) |operand| {
1627 self.processDeath(operand);
1628 }
1600 try self.genBody(inst.then_body);1629 try self.genBody(inst.then_body);
1630
1631 // Revert to the previous register and stack allocation state.
1632
1633 var saved_then_branch = self.branch_stack.pop();
1634 defer saved_then_branch.deinit(self.gpa);
1635
1636 self.registers.deinit(self.gpa);
1637 self.registers = parent_registers;
1638 parent_registers = .{};
1639
1640 self.stack.deinit(self.gpa);
1641 self.stack = parent_stack;
1642 parent_stack = .{};
1643
1644 self.next_stack_offset = parent_next_stack_offset;
1645 self.free_registers = parent_free_registers;
1646
1601 try self.performReloc(inst.base.src, reloc);1647 try self.performReloc(inst.base.src, reloc);
1648 const else_branch = self.branch_stack.addOneAssumeCapacity();
1649 else_branch.* = .{};
1650
1651 const else_deaths = inst.elseDeaths();
1652 try self.ensureProcessDeathCapacity(else_deaths.len);
1653 for (else_deaths) |operand| {
1654 self.processDeath(operand);
1655 }
1602 try self.genBody(inst.else_body);1656 try self.genBody(inst.else_body);
1657
1658 // At this point, each branch will possibly have conflicting values for where
1659 // each instruction is stored. They agree, however, on which instructions are alive/dead.
1660 // We use the first ("then") branch as canonical, and here emit
1661 // instructions into the second ("else") branch to make it conform.
1662 // We continue respect the data structure semantic guarantees of the else_branch so
1663 // that we can use all the code emitting abstractions. This is why at the bottom we
1664 // assert that parent_branch.free_registers equals the saved_then_branch.free_registers
1665 // rather than assigning it.
1666 const parent_branch = &self.branch_stack.items[self.branch_stack.items.len - 2];
1667 try parent_branch.inst_table.ensureCapacity(self.gpa, parent_branch.inst_table.items().len +
1668 else_branch.inst_table.items().len);
1669 for (else_branch.inst_table.items()) |else_entry| {
1670 const canon_mcv = if (saved_then_branch.inst_table.remove(else_entry.key)) |then_entry| blk: {
1671 // The instruction's MCValue is overridden in both branches.
1672 parent_branch.inst_table.putAssumeCapacity(else_entry.key, then_entry.value);
1673 if (else_entry.value == .dead) {
1674 assert(then_entry.value == .dead);
1675 continue;
1676 }
1677 break :blk then_entry.value;
1678 } else blk: {
1679 if (else_entry.value == .dead)
1680 continue;
1681 // The instruction is only overridden in the else branch.
1682 var i: usize = self.branch_stack.items.len - 2;
1683 while (true) {
1684 i -= 1; // If this overflows, the question is: why wasn't the instruction marked dead?
1685 if (self.branch_stack.items[i].inst_table.get(else_entry.key)) |mcv| {
1686 assert(mcv != .dead);
1687 break :blk mcv;
1688 }
1689 }
1690 };
1691 log.debug("consolidating else_entry {*} {}=>{}", .{else_entry.key, else_entry.value, canon_mcv});
1692 // TODO make sure the destination stack offset / register does not already have something
1693 // going on there.
1694 try self.setRegOrMem(inst.base.src, else_entry.key.ty, canon_mcv, else_entry.value);
1695 // TODO track the new register / stack allocation
1696 }
1697 try parent_branch.inst_table.ensureCapacity(self.gpa, parent_branch.inst_table.items().len +
1698 saved_then_branch.inst_table.items().len);
1699 for (saved_then_branch.inst_table.items()) |then_entry| {
1700 // We already deleted the items from this table that matched the else_branch.
1701 // So these are all instructions that are only overridden in the then branch.
1702 parent_branch.inst_table.putAssumeCapacity(then_entry.key, then_entry.value);
1703 if (then_entry.value == .dead)
1704 continue;
1705 const parent_mcv = blk: {
1706 var i: usize = self.branch_stack.items.len - 2;
1707 while (true) {
1708 i -= 1;
1709 if (self.branch_stack.items[i].inst_table.get(then_entry.key)) |mcv| {
1710 assert(mcv != .dead);
1711 break :blk mcv;
1712 }
1713 }
1714 };
1715 log.debug("consolidating then_entry {*} {}=>{}", .{then_entry.key, parent_mcv, then_entry.value});
1716 // TODO make sure the destination stack offset / register does not already have something
1717 // going on there.
1718 try self.setRegOrMem(inst.base.src, then_entry.key.ty, parent_mcv, then_entry.value);
1719 // TODO track the new register / stack allocation
1720 }
1721
1722 self.branch_stack.pop().deinit(self.gpa);
1723
1603 return MCValue.unreach;1724 return MCValue.unreach;
1604 }1725 }
16051726
...@@ -1673,11 +1794,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1673,11 +1794,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1673 switch (reloc) {1794 switch (reloc) {
1674 .rel32 => |pos| {1795 .rel32 => |pos| {
1675 const amt = self.code.items.len - (pos + 4);1796 const amt = self.code.items.len - (pos + 4);
1676 // If it wouldn't jump at all, elide it.1797 // Here it would be tempting to implement testing for amt == 0 and then elide the
1677 if (amt == 0) {1798 // jump. However, that will cause a problem because other jumps may assume that they
1678 self.code.items.len -= 5;1799 // can jump to this code. Or maybe I didn't understand something when I was debugging.
1679 return;1800 // It could be worth another look. Anyway, that's why that isn't done here. Probably the
1680 }1801 // best place to elide jumps will be in semantic analysis, by inlining blocks that only
1802 // only have 1 break instruction.
1681 const s32_amt = math.cast(i32, amt) catch1803 const s32_amt = math.cast(i32, amt) catch
1682 return self.fail(src, "unable to perform relocation: jump too far", .{});1804 return self.fail(src, "unable to perform relocation: jump too far", .{});
1683 mem.writeIntLittle(i32, self.code.items[pos..][0..4], s32_amt);1805 mem.writeIntLittle(i32, self.code.items[pos..][0..4], s32_amt);
...@@ -1927,15 +2049,29 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -1927,15 +2049,29 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
1927 mem.writeIntLittle(u32, self.code.addManyAsArrayAssumeCapacity(4), x);2049 mem.writeIntLittle(u32, self.code.addManyAsArrayAssumeCapacity(4), x);
1928 },2050 },
1929 8 => {2051 8 => {
1930 return self.fail(src, "TODO implement set abi_size=8 stack variable with immediate", .{});2052 // We have a positive stack offset value but we want a twos complement negative
2053 // offset from rbp, which is at the top of the stack frame.
2054 const negative_offset = @intCast(i8, -@intCast(i32, adj_off));
2055 const twos_comp = @bitCast(u8, negative_offset);
2056
2057 // 64 bit write to memory would take two mov's anyways so we
2058 // insted just use two 32 bit writes to avoid register allocation
2059 try self.code.ensureCapacity(self.code.items.len + 14);
2060 var buf: [8]u8 = undefined;
2061 mem.writeIntLittle(u64, &buf, x_big);
2062
2063 // mov DWORD PTR [rbp+offset+4], immediate
2064 self.code.appendSliceAssumeCapacity(&[_]u8{ 0xc7, 0x45, twos_comp + 4});
2065 self.code.appendSliceAssumeCapacity(buf[4..8]);
2066
2067 // mov DWORD PTR [rbp+offset], immediate
2068 self.code.appendSliceAssumeCapacity(&[_]u8{ 0xc7, 0x45, twos_comp });
2069 self.code.appendSliceAssumeCapacity(buf[0..4]);
1931 },2070 },
1932 else => {2071 else => {
1933 return self.fail(src, "TODO implement set abi_size=large stack variable with immediate", .{});2072 return self.fail(src, "TODO implement set abi_size=large stack variable with immediate", .{});
1934 },2073 },
1935 }2074 }
1936 if (x_big <= math.maxInt(u32)) {} else {
1937 return self.fail(src, "TODO implement set stack variable with large immediate", .{});
1938 }
1939 },2075 },
1940 .embedded_in_code => |code_offset| {2076 .embedded_in_code => |code_offset| {
1941 return self.fail(src, "TODO implement set stack variable from embedded_in_code", .{});2077 return self.fail(src, "TODO implement set stack variable from embedded_in_code", .{});
...@@ -2282,8 +2418,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -2282,8 +2418,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
2282 }2418 }
22832419
2284 fn resolveInst(self: *Self, inst: *ir.Inst) !MCValue {2420 fn resolveInst(self: *Self, inst: *ir.Inst) !MCValue {
2421 // If the type has no codegen bits, no need to store it.
2422 if (!inst.ty.hasCodeGenBits())
2423 return MCValue.none;
2424
2285 // Constants have static lifetimes, so they are always memoized in the outer most table.2425 // Constants have static lifetimes, so they are always memoized in the outer most table.
2286 if (inst.cast(ir.Inst.Constant)) |const_inst| {2426 if (inst.castTag(.constant)) |const_inst| {
2287 const branch = &self.branch_stack.items[0];2427 const branch = &self.branch_stack.items[0];
2288 const gop = try branch.inst_table.getOrPut(self.gpa, inst);2428 const gop = try branch.inst_table.getOrPut(self.gpa, inst);
2289 if (!gop.found_existing) {2429 if (!gop.found_existing) {
...@@ -2292,6 +2432,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {...@@ -2292,6 +2432,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
2292 return gop.entry.value;2432 return gop.entry.value;
2293 }2433 }
22942434
2435 return self.getResolvedInstValue(inst);
2436 }
2437
2438 fn getResolvedInstValue(self: *Self, inst: *ir.Inst) MCValue {
2295 // Treat each stack item as a "layer" on top of the previous one.2439 // Treat each stack item as a "layer" on top of the previous one.
2296 var i: usize = self.branch_stack.items.len;2440 var i: usize = self.branch_stack.items.len;
2297 while (true) {2441 while (true) {
src-self-hosted/link/Elf.zig+12-5
...@@ -17,6 +17,7 @@ const Type = @import("../type.zig").Type;...@@ -17,6 +17,7 @@ const Type = @import("../type.zig").Type;
17const link = @import("../link.zig");17const link = @import("../link.zig");
18const File = link.File;18const File = link.File;
19const Elf = @This();19const Elf = @This();
20const build_options = @import("build_options");
2021
21const default_entry_addr = 0x8000000;22const default_entry_addr = 0x8000000;
2223
...@@ -1640,9 +1641,15 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {...@@ -1640,9 +1641,15 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
1640 else => false,1641 else => false,
1641 };1642 };
1642 if (is_fn) {1643 if (is_fn) {
1643 //if (mem.eql(u8, mem.spanZ(decl.name), "add")) {1644 const zir_dumps = if (std.builtin.is_test) &[0][]const u8{} else build_options.zir_dumps;
1644 // typed_value.val.cast(Value.Payload.Function).?.func.dump(module.*);1645 if (zir_dumps.len != 0) {
1645 //}1646 for (zir_dumps) |fn_name| {
1647 if (mem.eql(u8, mem.spanZ(decl.name), fn_name)) {
1648 std.debug.print("\n{}\n", .{decl.name});
1649 typed_value.val.cast(Value.Payload.Function).?.func.dump(module.*);
1650 }
1651 }
1652 }
16461653
1647 // For functions we need to add a prologue to the debug line program.1654 // For functions we need to add a prologue to the debug line program.
1648 try dbg_line_buffer.ensureCapacity(26);1655 try dbg_line_buffer.ensureCapacity(26);
...@@ -1654,7 +1661,7 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {...@@ -1654,7 +1661,7 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
1654 // TODO Look into improving the performance here by adding a token-index-to-line1661 // TODO Look into improving the performance here by adding a token-index-to-line
1655 // lookup table. Currently this involves scanning over the source code for newlines.1662 // lookup table. Currently this involves scanning over the source code for newlines.
1656 const fn_proto = file_ast_decls[decl.src_index].castTag(.FnProto).?;1663 const fn_proto = file_ast_decls[decl.src_index].castTag(.FnProto).?;
1657 const block = fn_proto.body().?.castTag(.Block).?;1664 const block = fn_proto.getBodyNode().?.castTag(.Block).?;
1658 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);1665 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);
1659 break :blk @intCast(u28, line_delta);1666 break :blk @intCast(u28, line_delta);
1660 } else if (decl.scope.cast(Module.Scope.ZIRModule)) |zir_module| {1667 } else if (decl.scope.cast(Module.Scope.ZIRModule)) |zir_module| {
...@@ -2153,7 +2160,7 @@ pub fn updateDeclLineNumber(self: *Elf, module: *Module, decl: *const Module.Dec...@@ -2153,7 +2160,7 @@ pub fn updateDeclLineNumber(self: *Elf, module: *Module, decl: *const Module.Dec
2153 // TODO Look into improving the performance here by adding a token-index-to-line2160 // TODO Look into improving the performance here by adding a token-index-to-line
2154 // lookup table. Currently this involves scanning over the source code for newlines.2161 // lookup table. Currently this involves scanning over the source code for newlines.
2155 const fn_proto = file_ast_decls[decl.src_index].castTag(.FnProto).?;2162 const fn_proto = file_ast_decls[decl.src_index].castTag(.FnProto).?;
2156 const block = fn_proto.body().?.castTag(.Block).?;2163 const block = fn_proto.getBodyNode().?.castTag(.Block).?;
2157 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);2164 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);
2158 const casted_line_off = @intCast(u28, line_delta);2165 const casted_line_off = @intCast(u28, line_delta);
21592166
src-self-hosted/link/MachO.zig+104-77
...@@ -16,8 +16,6 @@ const Module = @import("../Module.zig");...@@ -16,8 +16,6 @@ const Module = @import("../Module.zig");
16const link = @import("../link.zig");16const link = @import("../link.zig");
17const File = link.File;17const File = link.File;
1818
19const is_darwin = std.Target.current.os.tag.isDarwin();
20
21pub const base_tag: File.Tag = File.Tag.macho;19pub const base_tag: File.Tag = File.Tag.macho;
2220
23base: File,21base: File,
...@@ -30,24 +28,26 @@ command_file_offset: ?u64 = null,...@@ -30,24 +28,26 @@ command_file_offset: ?u64 = null,
30/// Stored in native-endian format, depending on target endianness needs to be bswapped on read/write.28/// Stored in native-endian format, depending on target endianness needs to be bswapped on read/write.
31/// Same order as in the file.29/// Same order as in the file.
32segments: std.ArrayListUnmanaged(macho.segment_command_64) = std.ArrayListUnmanaged(macho.segment_command_64){},30segments: std.ArrayListUnmanaged(macho.segment_command_64) = std.ArrayListUnmanaged(macho.segment_command_64){},
31/// Section (headers) *always* follow segment (load commands) directly!
33sections: std.ArrayListUnmanaged(macho.section_64) = std.ArrayListUnmanaged(macho.section_64){},32sections: std.ArrayListUnmanaged(macho.section_64) = std.ArrayListUnmanaged(macho.section_64){},
34segment_table_offset: ?u64 = null,33
34/// Offset (index) into __TEXT segment load command.
35text_segment_offset: ?u64 = null,
36/// Offset (index) into __LINKEDIT segment load command.
37linkedit_segment_offset: ?u664 = null,
3538
36/// Entry point load command39/// Entry point load command
37entry_point_cmd: ?macho.entry_point_command = null,40entry_point_cmd: ?macho.entry_point_command = null,
38entry_addr: ?u64 = null,41entry_addr: ?u64 = null,
3942
40/// Default VM start address set at 4GB43/// The first 4GB of process' memory is reserved for the null (__PAGEZERO) segment.
44/// This is also the start address for our binary.
41vm_start_address: u64 = 0x100000000,45vm_start_address: u64 = 0x100000000,
4246
43seg_table_dirty: bool = false,47seg_table_dirty: bool = false,
4448
45error_flags: File.ErrorFlags = File.ErrorFlags{},49error_flags: File.ErrorFlags = File.ErrorFlags{},
4650
47/// TODO ultimately this will be propagated down from main() and set (in this form or another)
48/// when user links against system lib.
49link_against_system: bool = false,
50
51/// `alloc_num / alloc_den` is the factor of padding when allocating.51/// `alloc_num / alloc_den` is the factor of padding when allocating.
52const alloc_num = 4;52const alloc_num = 4;
53const alloc_den = 3;53const alloc_den = 3;
...@@ -138,8 +138,8 @@ fn createFile(allocator: *Allocator, file: fs.File, options: link.Options) !Mach...@@ -138,8 +138,8 @@ fn createFile(allocator: *Allocator, file: fs.File, options: link.Options) !Mach
138 .vmsize = self.vm_start_address,138 .vmsize = self.vm_start_address,
139 .fileoff = 0,139 .fileoff = 0,
140 .filesize = 0,140 .filesize = 0,
141 .maxprot = 0,141 .maxprot = macho.VM_PROT_NONE,
142 .initprot = 0,142 .initprot = macho.VM_PROT_NONE,
143 .nsects = 0,143 .nsects = 0,
144 .flags = 0,144 .flags = 0,
145 };145 };
...@@ -225,67 +225,61 @@ pub fn flush(self: *MachO, module: *Module) !void {...@@ -225,67 +225,61 @@ pub fn flush(self: *MachO, module: *Module) !void {
225225
226 switch (self.base.options.output_mode) {226 switch (self.base.options.output_mode) {
227 .Exe => {227 .Exe => {
228 if (self.link_against_system) {228 {
229 if (is_darwin) {229 // Specify path to dynamic linker dyld
230 {230 const cmdsize = commandSize(@sizeOf(macho.dylinker_command) + mem.lenZ(DEFAULT_DYLD_PATH));
231 // Specify path to dynamic linker dyld231 const load_dylinker = [1]macho.dylinker_command{
232 const cmdsize = commandSize(@intCast(u32, @sizeOf(macho.dylinker_command) + mem.lenZ(DEFAULT_DYLD_PATH)));232 .{
233 const load_dylinker = [1]macho.dylinker_command{233 .cmd = macho.LC_LOAD_DYLINKER,
234 .{234 .cmdsize = cmdsize,
235 .cmd = macho.LC_LOAD_DYLINKER,235 .name = @sizeOf(macho.dylinker_command),
236 .cmdsize = cmdsize,236 },
237 .name = @sizeOf(macho.dylinker_command),237 };
238 },238 try self.commands.append(self.base.allocator, .{
239 };239 .cmd = macho.LC_LOAD_DYLINKER,
240 try self.commands.append(self.base.allocator, .{240 .cmdsize = cmdsize,
241 .cmd = macho.LC_LOAD_DYLINKER,241 });
242 .cmdsize = cmdsize,242
243 });243 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylinker[0..1]), self.command_file_offset.?);
244244
245 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylinker[0..1]), self.command_file_offset.?);245 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylinker_command);
246246 try self.addPadding(cmdsize - @sizeOf(macho.dylinker_command), file_offset);
247 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylinker_command);247
248 try self.addPadding(cmdsize - @sizeOf(macho.dylinker_command), file_offset);248 try self.base.file.?.pwriteAll(mem.spanZ(DEFAULT_DYLD_PATH), file_offset);
249249 self.command_file_offset.? += cmdsize;
250 try self.base.file.?.pwriteAll(mem.spanZ(DEFAULT_DYLD_PATH), file_offset);250 }
251 self.command_file_offset.? += cmdsize;251
252 }252 {
253253 // Link against libSystem
254 {254 const cmdsize = commandSize(@sizeOf(macho.dylib_command) + mem.lenZ(LIB_SYSTEM_PATH));
255 // Link against libSystem255 // TODO Find a way to work out runtime version from the OS version triple stored in std.Target.
256 const cmdsize = commandSize(@intCast(u32, @sizeOf(macho.dylib_command) + mem.lenZ(LIB_SYSTEM_PATH)));256 // In the meantime, we're gonna hardcode to the minimum compatibility version of 1.0.0.
257 // According to Apple's manual, we should obtain current libSystem version using libc call257 const min_version = 0x10000;
258 // NSVersionOfRunTimeLibrary.258 const dylib = .{
259 const version = std.c.NSVersionOfRunTimeLibrary(LIB_SYSTEM_NAME);259 .name = @sizeOf(macho.dylib_command),
260 const dylib = .{260 .timestamp = 2, // not sure why not simply 0; this is reverse engineered from Mach-O files
261 .name = @sizeOf(macho.dylib_command),261 .current_version = min_version,
262 .timestamp = 2, // not sure why not simply 0; this is reverse engineered from Mach-O files262 .compatibility_version = min_version,
263 .current_version = version,263 };
264 .compatibility_version = 0x10000, // not sure why this either; value from reverse engineering264 const load_dylib = [1]macho.dylib_command{
265 };265 .{
266 const load_dylib = [1]macho.dylib_command{266 .cmd = macho.LC_LOAD_DYLIB,
267 .{267 .cmdsize = cmdsize,
268 .cmd = macho.LC_LOAD_DYLIB,268 .dylib = dylib,
269 .cmdsize = cmdsize,269 },
270 .dylib = dylib,270 };
271 },271 try self.commands.append(self.base.allocator, .{
272 };272 .cmd = macho.LC_LOAD_DYLIB,
273 try self.commands.append(self.base.allocator, .{273 .cmdsize = cmdsize,
274 .cmd = macho.LC_LOAD_DYLIB,274 });
275 .cmdsize = cmdsize,275
276 });276 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylib[0..1]), self.command_file_offset.?);
277277
278 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylib[0..1]), self.command_file_offset.?);278 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylib_command);
279279 try self.addPadding(cmdsize - @sizeOf(macho.dylib_command), file_offset);
280 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylib_command);280
281 try self.addPadding(cmdsize - @sizeOf(macho.dylib_command), file_offset);281 try self.base.file.?.pwriteAll(mem.spanZ(LIB_SYSTEM_PATH), file_offset);
282282 self.command_file_offset.? += cmdsize;
283 try self.base.file.?.pwriteAll(mem.spanZ(LIB_SYSTEM_PATH), file_offset);
284 self.command_file_offset.? += cmdsize;
285 }
286 } else {
287 @panic("linking against libSystem on non-native target is unsupported");
288 }
289 }283 }
290 },284 },
291 .Obj => return error.TODOImplementWritingObjFiles,285 .Obj => return error.TODOImplementWritingObjFiles,
...@@ -327,20 +321,53 @@ pub fn getDeclVAddr(self: *MachO, decl: *const Module.Decl) u64 {...@@ -327,20 +321,53 @@ pub fn getDeclVAddr(self: *MachO, decl: *const Module.Decl) u64 {
327 @panic("TODO implement getDeclVAddr for MachO");321 @panic("TODO implement getDeclVAddr for MachO");
328}322}
329323
330pub fn populateMissingMetadata(self: *MachO) !void {}324pub fn populateMissingMetadata(self: *MachO) !void {
325 if (self.text_segment_offset == null) {
326 self.text_segment_offset = @intCast(u64, self.segments.items.len);
327 const file_size = alignSize(u64, self.base.options.program_code_size_hint, 0x1000);
328 log.debug("vmsize/filesize = {}", .{file_size});
329 const file_offset = 0;
330 const vm_address = self.vm_start_address; // the end of __PAGEZERO segment in VM
331 const protection = macho.VM_PROT_READ | macho.VM_PROT_EXECUTE;
332 const cmdsize = commandSize(@sizeOf(macho.segment_command_64));
333 const text_segment = .{
334 .cmd = macho.LC_SEGMENT_64,
335 .cmdsize = cmdsize,
336 .segname = makeString("__TEXT"),
337 .vmaddr = vm_address,
338 .vmsize = file_size,
339 .fileoff = 0, // __TEXT segment *always* starts at 0 file offset
340 .filesize = 0, //file_size,
341 .maxprot = protection,
342 .initprot = protection,
343 .nsects = 0,
344 .flags = 0,
345 };
346 try self.commands.append(self.base.allocator, .{
347 .cmd = macho.LC_SEGMENT_64,
348 .cmdsize = cmdsize,
349 });
350 try self.segments.append(self.base.allocator, text_segment);
351 }
352}
331353
332fn makeString(comptime bytes: []const u8) [16]u8 {354fn makeString(comptime bytes: []const u8) [16]u8 {
333 var buf: [16]u8 = undefined;355 var buf = [_]u8{0} ** 16;
334 if (bytes.len > buf.len) @compileError("MachO segment/section name too long");356 if (bytes.len > buf.len) @compileError("MachO segment/section name too long");
335 mem.copy(u8, buf[0..], bytes);357 mem.copy(u8, buf[0..], bytes);
336 return buf;358 return buf;
337}359}
338360
339fn commandSize(min_size: u32) u32 {361fn alignSize(comptime Int: type, min_size: anytype, alignment: Int) Int {
340 if (min_size % @sizeOf(u64) == 0) return min_size;362 const size = @intCast(Int, min_size);
363 if (size % alignment == 0) return size;
364
365 const div = size / alignment;
366 return (div + 1) * alignment;
367}
341368
342 const div = min_size / @sizeOf(u64);369fn commandSize(min_size: anytype) u32 {
343 return (div + 1) * @sizeOf(u64);370 return alignSize(u32, min_size, @sizeOf(u64));
344}371}
345372
346fn addPadding(self: *MachO, size: u32, file_offset: u64) !void {373fn addPadding(self: *MachO, size: u32, file_offset: u64) !void {
src-self-hosted/main.zig+1-1
...@@ -911,7 +911,7 @@ pub const info_zen =...@@ -911,7 +911,7 @@ pub const info_zen =
911 \\ * Reduce the amount one must remember.911 \\ * Reduce the amount one must remember.
912 \\ * Minimize energy spent on coding style.912 \\ * Minimize energy spent on coding style.
913 \\ * Resource deallocation must succeed.913 \\ * Resource deallocation must succeed.
914 \\ * Together we serve end users.914 \\ * Together we serve the users.
915 \\915 \\
916 \\916 \\
917;917;
src-self-hosted/translate_c.zig+6-6
...@@ -168,7 +168,7 @@ const Scope = struct {...@@ -168,7 +168,7 @@ const Scope = struct {
168168
169 fn localContains(scope: *Block, name: []const u8) bool {169 fn localContains(scope: *Block, name: []const u8) bool {
170 for (scope.variables.items) |p| {170 for (scope.variables.items) |p| {
171 if (mem.eql(u8, p.name, name))171 if (mem.eql(u8, p.alias, name))
172 return true;172 return true;
173 }173 }
174 return false;174 return false;
...@@ -675,7 +675,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void {...@@ -675,7 +675,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void {
675 }675 }
676676
677 const body_node = try block_scope.complete(rp.c);677 const body_node = try block_scope.complete(rp.c);
678 proto_node.setTrailer("body_node", body_node);678 proto_node.setBodyNode(body_node);
679 return addTopLevelDecl(c, fn_name, &proto_node.base);679 return addTopLevelDecl(c, fn_name, &proto_node.base);
680}680}
681681
...@@ -4493,7 +4493,7 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a...@@ -4493,7 +4493,7 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a
4493 const block_lbrace = try appendToken(c, .LBrace, "{");4493 const block_lbrace = try appendToken(c, .LBrace, "{");
44944494
4495 const return_kw = try appendToken(c, .Keyword_return, "return");4495 const return_kw = try appendToken(c, .Keyword_return, "return");
4496 const unwrap_expr = try transCreateNodeUnwrapNull(c, ref.cast(ast.Node.VarDecl).?.getTrailer("init_node").?);4496 const unwrap_expr = try transCreateNodeUnwrapNull(c, ref.cast(ast.Node.VarDecl).?.getInitNode().?);
44974497
4498 const call_expr = try c.createCall(unwrap_expr, fn_params.items.len);4498 const call_expr = try c.createCall(unwrap_expr, fn_params.items.len);
4499 const call_params = call_expr.params();4499 const call_params = call_expr.params();
...@@ -6361,7 +6361,7 @@ fn getContainer(c: *Context, node: *ast.Node) ?*ast.Node {...@@ -6361,7 +6361,7 @@ fn getContainer(c: *Context, node: *ast.Node) ?*ast.Node {
6361 const ident = node.castTag(.Identifier).?;6361 const ident = node.castTag(.Identifier).?;
6362 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {6362 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {
6363 if (value.cast(ast.Node.VarDecl)) |var_decl|6363 if (value.cast(ast.Node.VarDecl)) |var_decl|
6364 return getContainer(c, var_decl.getTrailer("init_node").?);6364 return getContainer(c, var_decl.getInitNode().?);
6365 }6365 }
6366 },6366 },
63676367
...@@ -6390,7 +6390,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {...@@ -6390,7 +6390,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {
6390 if (ref.castTag(.Identifier)) |ident| {6390 if (ref.castTag(.Identifier)) |ident| {
6391 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {6391 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {
6392 if (value.cast(ast.Node.VarDecl)) |var_decl| {6392 if (value.cast(ast.Node.VarDecl)) |var_decl| {
6393 if (var_decl.getTrailer("type_node")) |ty|6393 if (var_decl.getTypeNode()) |ty|
6394 return getContainer(c, ty);6394 return getContainer(c, ty);
6395 }6395 }
6396 }6396 }
...@@ -6412,7 +6412,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {...@@ -6412,7 +6412,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {
6412}6412}
64136413
6414fn getFnProto(c: *Context, ref: *ast.Node) ?*ast.Node.FnProto {6414fn getFnProto(c: *Context, ref: *ast.Node) ?*ast.Node.FnProto {
6415 const init = if (ref.cast(ast.Node.VarDecl)) |v| v.getTrailer("init_node").? else return null;6415 const init = if (ref.cast(ast.Node.VarDecl)) |v| v.getInitNode().? else return null;
6416 if (getContainerTypeOf(c, init)) |ty_node| {6416 if (getContainerTypeOf(c, init)) |ty_node| {
6417 if (ty_node.castTag(.OptionalType)) |prefix| {6417 if (ty_node.castTag(.OptionalType)) |prefix| {
6418 if (prefix.rhs.cast(ast.Node.FnProto)) |fn_proto| {6418 if (prefix.rhs.cast(ast.Node.FnProto)) |fn_proto| {
src-self-hosted/type.zig+9-2
...@@ -771,8 +771,8 @@ pub const Type = extern union {...@@ -771,8 +771,8 @@ pub const Type = extern union {
771 .array => self.elemType().hasCodeGenBits() and self.arrayLen() != 0,771 .array => self.elemType().hasCodeGenBits() and self.arrayLen() != 0,
772 .array_u8 => self.arrayLen() != 0,772 .array_u8 => self.arrayLen() != 0,
773 .array_sentinel, .single_const_pointer, .single_mut_pointer, .many_const_pointer, .many_mut_pointer, .c_const_pointer, .c_mut_pointer, .const_slice, .mut_slice, .pointer => self.elemType().hasCodeGenBits(),773 .array_sentinel, .single_const_pointer, .single_mut_pointer, .many_const_pointer, .many_mut_pointer, .c_const_pointer, .c_mut_pointer, .const_slice, .mut_slice, .pointer => self.elemType().hasCodeGenBits(),
774 .int_signed => self.cast(Payload.IntSigned).?.bits == 0,774 .int_signed => self.cast(Payload.IntSigned).?.bits != 0,
775 .int_unsigned => self.cast(Payload.IntUnsigned).?.bits == 0,775 .int_unsigned => self.cast(Payload.IntUnsigned).?.bits != 0,
776776
777 .error_union => {777 .error_union => {
778 const payload = self.cast(Payload.ErrorUnion).?;778 const payload = self.cast(Payload.ErrorUnion).?;
...@@ -2675,6 +2675,13 @@ pub const Type = extern union {...@@ -2675,6 +2675,13 @@ pub const Type = extern union {
2675 };2675 };
2676 }2676 }
26772677
2678 pub fn isIndexable(self: Type) bool {
2679 const zig_tag = self.zigTypeTag();
2680 // TODO tuples are indexable
2681 return zig_tag == .Array or zig_tag == .Vector or self.isSlice() or
2682 (self.isSinglePointer() and self.elemType().zigTypeTag() == .Array);
2683 }
2684
2678 /// This enum does not directly correspond to `std.builtin.TypeId` because2685 /// This enum does not directly correspond to `std.builtin.TypeId` because
2679 /// it has extra enum tags in it, as a way of using less memory. For example,2686 /// it has extra enum tags in it, as a way of using less memory. For example,
2680 /// even though Zig recognizes `*align(10) i32` and `*i32` both as Pointer types2687 /// even though Zig recognizes `*align(10) i32` and `*i32` both as Pointer types
src-self-hosted/value.zig+29-7
...@@ -65,6 +65,7 @@ pub const Value = extern union {...@@ -65,6 +65,7 @@ pub const Value = extern union {
6565
66 undef,66 undef,
67 zero,67 zero,
68 one,
68 void_value,69 void_value,
69 unreachable_value,70 unreachable_value,
70 empty_array,71 empty_array,
...@@ -174,6 +175,7 @@ pub const Value = extern union {...@@ -174,6 +175,7 @@ pub const Value = extern union {
174 .anyframe_type,175 .anyframe_type,
175 .undef,176 .undef,
176 .zero,177 .zero,
178 .one,
177 .void_value,179 .void_value,
178 .unreachable_value,180 .unreachable_value,
179 .empty_array,181 .empty_array,
...@@ -313,6 +315,7 @@ pub const Value = extern union {...@@ -313,6 +315,7 @@ pub const Value = extern union {
313 .null_value => return out_stream.writeAll("null"),315 .null_value => return out_stream.writeAll("null"),
314 .undef => return out_stream.writeAll("undefined"),316 .undef => return out_stream.writeAll("undefined"),
315 .zero => return out_stream.writeAll("0"),317 .zero => return out_stream.writeAll("0"),
318 .one => return out_stream.writeAll("1"),
316 .void_value => return out_stream.writeAll("{}"),319 .void_value => return out_stream.writeAll("{}"),
317 .unreachable_value => return out_stream.writeAll("unreachable"),320 .unreachable_value => return out_stream.writeAll("unreachable"),
318 .bool_true => return out_stream.writeAll("true"),321 .bool_true => return out_stream.writeAll("true"),
...@@ -447,6 +450,7 @@ pub const Value = extern union {...@@ -447,6 +450,7 @@ pub const Value = extern union {
447450
448 .undef,451 .undef,
449 .zero,452 .zero,
453 .one,
450 .void_value,454 .void_value,
451 .unreachable_value,455 .unreachable_value,
452 .empty_array,456 .empty_array,
...@@ -546,7 +550,9 @@ pub const Value = extern union {...@@ -546,7 +550,9 @@ pub const Value = extern union {
546 .bool_false,550 .bool_false,
547 => return BigIntMutable.init(&space.limbs, 0).toConst(),551 => return BigIntMutable.init(&space.limbs, 0).toConst(),
548552
549 .bool_true => return BigIntMutable.init(&space.limbs, 1).toConst(),553 .one,
554 .bool_true,
555 => return BigIntMutable.init(&space.limbs, 1).toConst(),
550556
551 .int_u64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_u64).?.int).toConst(),557 .int_u64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_u64).?.int).toConst(),
552 .int_i64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_i64).?.int).toConst(),558 .int_i64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_i64).?.int).toConst(),
...@@ -627,7 +633,9 @@ pub const Value = extern union {...@@ -627,7 +633,9 @@ pub const Value = extern union {
627 .bool_false,633 .bool_false,
628 => return 0,634 => return 0,
629635
630 .bool_true => return 1,636 .one,
637 .bool_true,
638 => return 1,
631639
632 .int_u64 => return self.cast(Payload.Int_u64).?.int,640 .int_u64 => return self.cast(Payload.Int_u64).?.int,
633 .int_i64 => return @intCast(u64, self.cast(Payload.Int_i64).?.int),641 .int_i64 => return @intCast(u64, self.cast(Payload.Int_i64).?.int),
...@@ -708,7 +716,9 @@ pub const Value = extern union {...@@ -708,7 +716,9 @@ pub const Value = extern union {
708 .bool_false,716 .bool_false,
709 => return 0,717 => return 0,
710718
711 .bool_true => return 1,719 .one,
720 .bool_true,
721 => return 1,
712722
713 .int_u64 => return @intCast(i64, self.cast(Payload.Int_u64).?.int),723 .int_u64 => return @intCast(i64, self.cast(Payload.Int_u64).?.int),
714 .int_i64 => return self.cast(Payload.Int_i64).?.int,724 .int_i64 => return self.cast(Payload.Int_i64).?.int,
...@@ -734,6 +744,7 @@ pub const Value = extern union {...@@ -734,6 +744,7 @@ pub const Value = extern union {
734 .float_128 => @floatCast(T, self.cast(Payload.Float_128).?.val),744 .float_128 => @floatCast(T, self.cast(Payload.Float_128).?.val),
735745
736 .zero => 0,746 .zero => 0,
747 .one => 1,
737 .int_u64 => @intToFloat(T, self.cast(Payload.Int_u64).?.int),748 .int_u64 => @intToFloat(T, self.cast(Payload.Int_u64).?.int),
738 .int_i64 => @intToFloat(T, self.cast(Payload.Int_i64).?.int),749 .int_i64 => @intToFloat(T, self.cast(Payload.Int_i64).?.int),
739750
...@@ -814,7 +825,9 @@ pub const Value = extern union {...@@ -814,7 +825,9 @@ pub const Value = extern union {
814 .bool_false,825 .bool_false,
815 => return 0,826 => return 0,
816827
817 .bool_true => return 1,828 .one,
829 .bool_true,
830 => return 1,
818831
819 .int_u64 => {832 .int_u64 => {
820 const x = self.cast(Payload.Int_u64).?.int;833 const x = self.cast(Payload.Int_u64).?.int;
...@@ -900,7 +913,9 @@ pub const Value = extern union {...@@ -900,7 +913,9 @@ pub const Value = extern union {
900 .bool_false,913 .bool_false,
901 => return true,914 => return true,
902915
903 .bool_true => {916 .one,
917 .bool_true,
918 => {
904 const info = ty.intInfo(target);919 const info = ty.intInfo(target);
905 if (info.signed) {920 if (info.signed) {
906 return info.bits >= 2;921 return info.bits >= 2;
...@@ -1064,7 +1079,9 @@ pub const Value = extern union {...@@ -1064,7 +1079,9 @@ pub const Value = extern union {
1064 .@"error",1079 .@"error",
1065 => unreachable,1080 => unreachable,
10661081
1067 .zero => false,1082 .zero,
1083 .one,
1084 => false,
10681085
1069 .float_16 => @rem(self.cast(Payload.Float_16).?.val, 1) != 0,1086 .float_16 => @rem(self.cast(Payload.Float_16).?.val, 1) != 0,
1070 .float_32 => @rem(self.cast(Payload.Float_32).?.val, 1) != 0,1087 .float_32 => @rem(self.cast(Payload.Float_32).?.val, 1) != 0,
...@@ -1140,7 +1157,9 @@ pub const Value = extern union {...@@ -1140,7 +1157,9 @@ pub const Value = extern union {
1140 .bool_false,1157 .bool_false,
1141 => .eq,1158 => .eq,
11421159
1143 .bool_true => .gt,1160 .one,
1161 .bool_true,
1162 => .gt,
11441163
1145 .int_u64 => std.math.order(lhs.cast(Payload.Int_u64).?.int, 0),1164 .int_u64 => std.math.order(lhs.cast(Payload.Int_u64).?.int, 0),
1146 .int_i64 => std.math.order(lhs.cast(Payload.Int_i64).?.int, 0),1165 .int_i64 => std.math.order(lhs.cast(Payload.Int_i64).?.int, 0),
...@@ -1257,6 +1276,7 @@ pub const Value = extern union {...@@ -1257,6 +1276,7 @@ pub const Value = extern union {
1257 .enum_literal_type,1276 .enum_literal_type,
1258 .anyframe_type,1277 .anyframe_type,
1259 .zero,1278 .zero,
1279 .one,
1260 .bool_true,1280 .bool_true,
1261 .bool_false,1281 .bool_false,
1262 .null_value,1282 .null_value,
...@@ -1339,6 +1359,7 @@ pub const Value = extern union {...@@ -1339,6 +1359,7 @@ pub const Value = extern union {
1339 .enum_literal_type,1359 .enum_literal_type,
1340 .anyframe_type,1360 .anyframe_type,
1341 .zero,1361 .zero,
1362 .one,
1342 .bool_true,1363 .bool_true,
1343 .bool_false,1364 .bool_false,
1344 .null_value,1365 .null_value,
...@@ -1438,6 +1459,7 @@ pub const Value = extern union {...@@ -1438,6 +1459,7 @@ pub const Value = extern union {
1438 .enum_literal_type,1459 .enum_literal_type,
1439 .anyframe_type,1460 .anyframe_type,
1440 .zero,1461 .zero,
1462 .one,
1441 .empty_array,1463 .empty_array,
1442 .bool_true,1464 .bool_true,
1443 .bool_false,1465 .bool_false,
src-self-hosted/zir.zig+19-1
...@@ -137,6 +137,8 @@ pub const Inst = struct {...@@ -137,6 +137,8 @@ pub const Inst = struct {
137 ensure_result_used,137 ensure_result_used,
138 /// Emits a compile error if an error is ignored.138 /// Emits a compile error if an error is ignored.
139 ensure_result_non_error,139 ensure_result_non_error,
140 /// Emits a compile error if operand cannot be indexed.
141 ensure_indexable,
140 /// Create a `E!T` type.142 /// Create a `E!T` type.
141 error_union_type,143 error_union_type,
142 /// Create an error set.144 /// Create an error set.
...@@ -251,6 +253,8 @@ pub const Inst = struct {...@@ -251,6 +253,8 @@ pub const Inst = struct {
251 unwrap_err_safe,253 unwrap_err_safe,
252 /// Same as previous, but without safety checks. Used for orelse, if and while254 /// Same as previous, but without safety checks. Used for orelse, if and while
253 unwrap_err_unsafe,255 unwrap_err_unsafe,
256 /// Gets the error code value of an error union
257 unwrap_err_code,
254 /// Takes a *E!T and raises a compiler error if T != void258 /// Takes a *E!T and raises a compiler error if T != void
255 ensure_err_payload_void,259 ensure_err_payload_void,
256 /// Enum literal260 /// Enum literal
...@@ -278,6 +282,7 @@ pub const Inst = struct {...@@ -278,6 +282,7 @@ pub const Inst = struct {
278 .alloc,282 .alloc,
279 .ensure_result_used,283 .ensure_result_used,
280 .ensure_result_non_error,284 .ensure_result_non_error,
285 .ensure_indexable,
281 .bitcast_result_ptr,286 .bitcast_result_ptr,
282 .ref,287 .ref,
283 .bitcast_ref,288 .bitcast_ref,
...@@ -295,6 +300,7 @@ pub const Inst = struct {...@@ -295,6 +300,7 @@ pub const Inst = struct {
295 .unwrap_optional_unsafe,300 .unwrap_optional_unsafe,
296 .unwrap_err_safe,301 .unwrap_err_safe,
297 .unwrap_err_unsafe,302 .unwrap_err_unsafe,
303 .unwrap_err_code,
298 .ensure_err_payload_void,304 .ensure_err_payload_void,
299 .anyframe_type,305 .anyframe_type,
300 .bitnot,306 .bitnot,
...@@ -409,6 +415,7 @@ pub const Inst = struct {...@@ -409,6 +415,7 @@ pub const Inst = struct {
409 .elemptr,415 .elemptr,
410 .ensure_result_used,416 .ensure_result_used,
411 .ensure_result_non_error,417 .ensure_result_non_error,
418 .ensure_indexable,
412 .@"export",419 .@"export",
413 .floatcast,420 .floatcast,
414 .fieldptr,421 .fieldptr,
...@@ -450,6 +457,7 @@ pub const Inst = struct {...@@ -450,6 +457,7 @@ pub const Inst = struct {
450 .unwrap_optional_unsafe,457 .unwrap_optional_unsafe,
451 .unwrap_err_safe,458 .unwrap_err_safe,
452 .unwrap_err_unsafe,459 .unwrap_err_unsafe,
460 .unwrap_err_code,
453 .ptr_type,461 .ptr_type,
454 .ensure_err_payload_void,462 .ensure_err_payload_void,
455 .enum_literal,463 .enum_literal,
...@@ -954,6 +962,7 @@ pub const Module = struct {...@@ -954,6 +962,7 @@ pub const Module = struct {
954962
955 pub const MetaData = struct {963 pub const MetaData = struct {
956 deaths: ir.Inst.DeathsInt,964 deaths: ir.Inst.DeathsInt,
965 addr: usize,
957 };966 };
958967
959 pub const BodyMetaData = struct {968 pub const BodyMetaData = struct {
...@@ -1152,6 +1161,12 @@ const Writer = struct {...@@ -1152,6 +1161,12 @@ const Writer = struct {
1152 try self.writeInstToStream(stream, inst);1161 try self.writeInstToStream(stream, inst);
1153 if (self.module.metadata.get(inst)) |metadata| {1162 if (self.module.metadata.get(inst)) |metadata| {
1154 try stream.print(" ; deaths=0b{b}", .{metadata.deaths});1163 try stream.print(" ; deaths=0b{b}", .{metadata.deaths});
1164 // This is conditionally compiled in because addresses mess up the tests due
1165 // to Address Space Layout Randomization. It's super useful when debugging
1166 // codegen.zig though.
1167 if (!std.builtin.is_test) {
1168 try stream.print(" 0x{x}", .{metadata.addr});
1169 }
1155 }1170 }
1156 self.indent -= 2;1171 self.indent -= 2;
1157 try stream.writeByte('\n');1172 try stream.writeByte('\n');
...@@ -2417,7 +2432,10 @@ const EmitZIR = struct {...@@ -2417,7 +2432,10 @@ const EmitZIR = struct {
24172432
2418 .varptr => @panic("TODO"),2433 .varptr => @panic("TODO"),
2419 };2434 };
2420 try self.metadata.put(new_inst, .{ .deaths = inst.deaths });2435 try self.metadata.put(new_inst, .{
2436 .deaths = inst.deaths,
2437 .addr = @ptrToInt(inst),
2438 });
2421 try instructions.append(new_inst);2439 try instructions.append(new_inst);
2422 try inst_table.put(inst, new_inst);2440 try inst_table.put(inst, new_inst);
2423 }2441 }
src-self-hosted/zir_sema.zig+43-21
...@@ -48,6 +48,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!...@@ -48,6 +48,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!
48 .declval_in_module => return analyzeInstDeclValInModule(mod, scope, old_inst.castTag(.declval_in_module).?),48 .declval_in_module => return analyzeInstDeclValInModule(mod, scope, old_inst.castTag(.declval_in_module).?),
49 .ensure_result_used => return analyzeInstEnsureResultUsed(mod, scope, old_inst.castTag(.ensure_result_used).?),49 .ensure_result_used => return analyzeInstEnsureResultUsed(mod, scope, old_inst.castTag(.ensure_result_used).?),
50 .ensure_result_non_error => return analyzeInstEnsureResultNonError(mod, scope, old_inst.castTag(.ensure_result_non_error).?),50 .ensure_result_non_error => return analyzeInstEnsureResultNonError(mod, scope, old_inst.castTag(.ensure_result_non_error).?),
51 .ensure_indexable => return analyzeInstEnsureIndexable(mod, scope, old_inst.castTag(.ensure_indexable).?),
51 .ref => return analyzeInstRef(mod, scope, old_inst.castTag(.ref).?),52 .ref => return analyzeInstRef(mod, scope, old_inst.castTag(.ref).?),
52 .ret_ptr => return analyzeInstRetPtr(mod, scope, old_inst.castTag(.ret_ptr).?),53 .ret_ptr => return analyzeInstRetPtr(mod, scope, old_inst.castTag(.ret_ptr).?),
53 .ret_type => return analyzeInstRetType(mod, scope, old_inst.castTag(.ret_type).?),54 .ret_type => return analyzeInstRetType(mod, scope, old_inst.castTag(.ret_type).?),
...@@ -111,7 +112,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!...@@ -111,7 +112,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!
111 .condbr => return analyzeInstCondBr(mod, scope, old_inst.castTag(.condbr).?),112 .condbr => return analyzeInstCondBr(mod, scope, old_inst.castTag(.condbr).?),
112 .isnull => return analyzeInstIsNonNull(mod, scope, old_inst.castTag(.isnull).?, true),113 .isnull => return analyzeInstIsNonNull(mod, scope, old_inst.castTag(.isnull).?, true),
113 .isnonnull => return analyzeInstIsNonNull(mod, scope, old_inst.castTag(.isnonnull).?, false),114 .isnonnull => return analyzeInstIsNonNull(mod, scope, old_inst.castTag(.isnonnull).?, false),
114 .iserr => return analyzeInstIsErr(mod, scope, old_inst.castTag(.iserr).?, true),115 .iserr => return analyzeInstIsErr(mod, scope, old_inst.castTag(.iserr).?),
115 .boolnot => return analyzeInstBoolNot(mod, scope, old_inst.castTag(.boolnot).?),116 .boolnot => return analyzeInstBoolNot(mod, scope, old_inst.castTag(.boolnot).?),
116 .typeof => return analyzeInstTypeOf(mod, scope, old_inst.castTag(.typeof).?),117 .typeof => return analyzeInstTypeOf(mod, scope, old_inst.castTag(.typeof).?),
117 .optional_type => return analyzeInstOptionalType(mod, scope, old_inst.castTag(.optional_type).?),118 .optional_type => return analyzeInstOptionalType(mod, scope, old_inst.castTag(.optional_type).?),
...@@ -119,6 +120,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!...@@ -119,6 +120,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!
119 .unwrap_optional_unsafe => return analyzeInstUnwrapOptional(mod, scope, old_inst.castTag(.unwrap_optional_unsafe).?, false),120 .unwrap_optional_unsafe => return analyzeInstUnwrapOptional(mod, scope, old_inst.castTag(.unwrap_optional_unsafe).?, false),
120 .unwrap_err_safe => return analyzeInstUnwrapErr(mod, scope, old_inst.castTag(.unwrap_err_safe).?, true),121 .unwrap_err_safe => return analyzeInstUnwrapErr(mod, scope, old_inst.castTag(.unwrap_err_safe).?, true),
121 .unwrap_err_unsafe => return analyzeInstUnwrapErr(mod, scope, old_inst.castTag(.unwrap_err_unsafe).?, false),122 .unwrap_err_unsafe => return analyzeInstUnwrapErr(mod, scope, old_inst.castTag(.unwrap_err_unsafe).?, false),
123 .unwrap_err_code => return analyzeInstUnwrapErrCode(mod, scope, old_inst.castTag(.unwrap_err_code).?),
122 .ensure_err_payload_void => return analyzeInstEnsureErrPayloadVoid(mod, scope, old_inst.castTag(.ensure_err_payload_void).?),124 .ensure_err_payload_void => return analyzeInstEnsureErrPayloadVoid(mod, scope, old_inst.castTag(.ensure_err_payload_void).?),
123 .array_type => return analyzeInstArrayType(mod, scope, old_inst.castTag(.array_type).?),125 .array_type => return analyzeInstArrayType(mod, scope, old_inst.castTag(.array_type).?),
124 .array_type_sentinel => return analyzeInstArrayTypeSentinel(mod, scope, old_inst.castTag(.array_type_sentinel).?),126 .array_type_sentinel => return analyzeInstArrayTypeSentinel(mod, scope, old_inst.castTag(.array_type_sentinel).?),
...@@ -382,6 +384,19 @@ fn analyzeInstEnsureResultNonError(mod: *Module, scope: *Scope, inst: *zir.Inst....@@ -382,6 +384,19 @@ fn analyzeInstEnsureResultNonError(mod: *Module, scope: *Scope, inst: *zir.Inst.
382 }384 }
383}385}
384386
387fn analyzeInstEnsureIndexable(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
388 const operand = try resolveInst(mod, scope, inst.positionals.operand);
389 const elem_ty = operand.ty.elemType();
390 if (elem_ty.isIndexable()) {
391 return mod.constVoid(scope, operand.src);
392 } else {
393 // TODO error notes
394 // error: type '{}' does not support indexing
395 // note: for loop operand must be an array, a slice or a tuple
396 return mod.fail(scope, operand.src, "for loop operand must be an array, a slice or a tuple", .{});
397 }
398}
399
385fn analyzeInstAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {400fn analyzeInstAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
386 const var_type = try resolveType(mod, scope, inst.positionals.operand);401 const var_type = try resolveType(mod, scope, inst.positionals.operand);
387 // TODO this should happen only for var allocs402 // TODO this should happen only for var allocs
...@@ -786,11 +801,12 @@ fn analyzeInstUnwrapOptional(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp...@@ -786,11 +801,12 @@ fn analyzeInstUnwrapOptional(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp
786 const operand = try resolveInst(mod, scope, unwrap.positionals.operand);801 const operand = try resolveInst(mod, scope, unwrap.positionals.operand);
787 assert(operand.ty.zigTypeTag() == .Pointer);802 assert(operand.ty.zigTypeTag() == .Pointer);
788803
789 if (operand.ty.elemType().zigTypeTag() != .Optional) {804 const elem_type = operand.ty.elemType();
790 return mod.fail(scope, unwrap.base.src, "expected optional type, found {}", .{operand.ty.elemType()});805 if (elem_type.zigTypeTag() != .Optional) {
806 return mod.fail(scope, unwrap.base.src, "expected optional type, found {}", .{elem_type});
791 }807 }
792808
793 const child_type = try operand.ty.elemType().optionalChildAlloc(scope.arena());809 const child_type = try elem_type.optionalChildAlloc(scope.arena());
794 const child_pointer = try mod.simplePtrType(scope, unwrap.base.src, child_type, operand.ty.isConstPtr(), .One);810 const child_pointer = try mod.simplePtrType(scope, unwrap.base.src, child_type, operand.ty.isConstPtr(), .One);
795811
796 if (operand.value()) |val| {812 if (operand.value()) |val| {
...@@ -815,6 +831,10 @@ fn analyzeInstUnwrapErr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, saf...@@ -815,6 +831,10 @@ fn analyzeInstUnwrapErr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, saf
815 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstUnwrapErr", .{});831 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstUnwrapErr", .{});
816}832}
817833
834fn analyzeInstUnwrapErrCode(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
835 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstUnwrapErrCode", .{});
836}
837
818fn analyzeInstEnsureErrPayloadVoid(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {838fn analyzeInstEnsureErrPayloadVoid(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
819 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstEnsureErrPayloadVoid", .{});839 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstEnsureErrPayloadVoid", .{});
820}840}
...@@ -950,7 +970,8 @@ fn analyzeInstFieldPtr(mod: *Module, scope: *Scope, fieldptr: *zir.Inst.FieldPtr...@@ -950,7 +970,8 @@ fn analyzeInstFieldPtr(mod: *Module, scope: *Scope, fieldptr: *zir.Inst.FieldPtr
950 const entry = if (val.cast(Value.Payload.ErrorSet)) |payload|970 const entry = if (val.cast(Value.Payload.ErrorSet)) |payload|
951 (payload.fields.getEntry(field_name) orelse971 (payload.fields.getEntry(field_name) orelse
952 return mod.fail(scope, fieldptr.base.src, "no error named '{}' in '{}'", .{ field_name, child_type })).*972 return mod.fail(scope, fieldptr.base.src, "no error named '{}' in '{}'", .{ field_name, child_type })).*
953 else try mod.getErrorValue(field_name);973 else
974 try mod.getErrorValue(field_name);
954975
955 const error_payload = try scope.arena().create(Value.Payload.Error);976 const error_payload = try scope.arena().create(Value.Payload.Error);
956 error_payload.* = .{977 error_payload.* = .{
...@@ -1062,9 +1083,19 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne...@@ -1062,9 +1083,19 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne
1062 const array_ptr = try resolveInst(mod, scope, inst.positionals.array_ptr);1083 const array_ptr = try resolveInst(mod, scope, inst.positionals.array_ptr);
1063 const uncasted_index = try resolveInst(mod, scope, inst.positionals.index);1084 const uncasted_index = try resolveInst(mod, scope, inst.positionals.index);
1064 const elem_index = try mod.coerce(scope, Type.initTag(.usize), uncasted_index);1085 const elem_index = try mod.coerce(scope, Type.initTag(.usize), uncasted_index);
1086
1087 const elem_ty = switch (array_ptr.ty.zigTypeTag()) {
1088 .Pointer => array_ptr.ty.elemType(),
1089 else => return mod.fail(scope, inst.positionals.array_ptr.src, "expected pointer, found '{}'", .{array_ptr.ty}),
1090 };
1091 if (!elem_ty.isIndexable()) {
1092 return mod.fail(scope, inst.base.src, "array access of non-array type '{}'", .{elem_ty});
1093 }
10651094
1066 if (array_ptr.ty.isSinglePointer() and array_ptr.ty.elemType().zigTypeTag() == .Array) {1095 if (elem_ty.isSinglePointer() and elem_ty.elemType().zigTypeTag() == .Array) {
1067 if (array_ptr.value()) |array_ptr_val| {1096 // we have to deref the ptr operand to get the actual array pointer
1097 const array_ptr_deref = try mod.analyzeDeref(scope, inst.base.src, array_ptr, inst.positionals.array_ptr.src);
1098 if (array_ptr_deref.value()) |array_ptr_val| {
1068 if (elem_index.value()) |index_val| {1099 if (elem_index.value()) |index_val| {
1069 // Both array pointer and index are compile-time known.1100 // Both array pointer and index are compile-time known.
1070 const index_u64 = index_val.toUnsignedInt();1101 const index_u64 = index_val.toUnsignedInt();
...@@ -1075,7 +1106,7 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne...@@ -1075,7 +1106,7 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne
1075 const type_payload = try scope.arena().create(Type.Payload.PointerSimple);1106 const type_payload = try scope.arena().create(Type.Payload.PointerSimple);
1076 type_payload.* = .{1107 type_payload.* = .{
1077 .base = .{ .tag = .single_const_pointer },1108 .base = .{ .tag = .single_const_pointer },
1078 .pointee_type = array_ptr.ty.elemType().elemType(),1109 .pointee_type = elem_ty.elemType().elemType(),
1079 };1110 };
10801111
1081 return mod.constInst(scope, inst.base.src, .{1112 return mod.constInst(scope, inst.base.src, .{
...@@ -1274,17 +1305,7 @@ fn analyzeInstCmp(...@@ -1274,17 +1305,7 @@ fn analyzeInstCmp(
1274 {1305 {
1275 // comparing null with optionals1306 // comparing null with optionals
1276 const opt_operand = if (lhs_ty_tag == .Optional) lhs else rhs;1307 const opt_operand = if (lhs_ty_tag == .Optional) lhs else rhs;
1277 if (opt_operand.value()) |opt_val| {1308 return mod.analyzeIsNull(scope, inst.base.src, opt_operand, op == .neq);
1278 const is_null = opt_val.isNull();
1279 return mod.constBool(scope, inst.base.src, if (op == .eq) is_null else !is_null);
1280 }
1281 const b = try mod.requireRuntimeBlock(scope, inst.base.src);
1282 const inst_tag: Inst.Tag = switch (op) {
1283 .eq => .isnull,
1284 .neq => .isnonnull,
1285 else => unreachable,
1286 };
1287 return mod.addUnOp(b, inst.base.src, Type.initTag(.bool), inst_tag, opt_operand);
1288 } else if (is_equality_cmp and1309 } else if (is_equality_cmp and
1289 ((lhs_ty_tag == .Null and rhs.ty.isCPtr()) or (rhs_ty_tag == .Null and lhs.ty.isCPtr())))1310 ((lhs_ty_tag == .Null and rhs.ty.isCPtr()) or (rhs_ty_tag == .Null and lhs.ty.isCPtr())))
1290 {1311 {
...@@ -1332,8 +1353,9 @@ fn analyzeInstIsNonNull(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, inver...@@ -1332,8 +1353,9 @@ fn analyzeInstIsNonNull(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, inver
1332 return mod.analyzeIsNull(scope, inst.base.src, operand, invert_logic);1353 return mod.analyzeIsNull(scope, inst.base.src, operand, invert_logic);
1333}1354}
13341355
1335fn analyzeInstIsErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {1356fn analyzeInstIsErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
1336 return mod.fail(scope, inst.base.src, "TODO implement analyzeInstIsErr", .{});1357 const operand = try resolveInst(mod, scope, inst.positionals.operand);
1358 return mod.analyzeIsErr(scope, inst.base.src, operand);
1337}1359}
13381360
1339fn analyzeInstCondBr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerError!*Inst {1361fn analyzeInstCondBr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerError!*Inst {
src/all_types.hpp-6
...@@ -1809,7 +1809,6 @@ enum BuiltinFnId {...@@ -1809,7 +1809,6 @@ enum BuiltinFnId {
1809 BuiltinFnIdShrExact,1809 BuiltinFnIdShrExact,
1810 BuiltinFnIdSetEvalBranchQuota,1810 BuiltinFnIdSetEvalBranchQuota,
1811 BuiltinFnIdAlignCast,1811 BuiltinFnIdAlignCast,
1812 BuiltinFnIdOpaqueType,
1813 BuiltinFnIdThis,1812 BuiltinFnIdThis,
1814 BuiltinFnIdSetAlignStack,1813 BuiltinFnIdSetAlignStack,
1815 BuiltinFnIdExport,1814 BuiltinFnIdExport,
...@@ -2734,7 +2733,6 @@ enum IrInstSrcId {...@@ -2734,7 +2733,6 @@ enum IrInstSrcId {
2734 IrInstSrcIdImplicitCast,2733 IrInstSrcIdImplicitCast,
2735 IrInstSrcIdResolveResult,2734 IrInstSrcIdResolveResult,
2736 IrInstSrcIdResetResult,2735 IrInstSrcIdResetResult,
2737 IrInstSrcIdOpaqueType,
2738 IrInstSrcIdSetAlignStack,2736 IrInstSrcIdSetAlignStack,
2739 IrInstSrcIdArgType,2737 IrInstSrcIdArgType,
2740 IrInstSrcIdExport,2738 IrInstSrcIdExport,
...@@ -4234,10 +4232,6 @@ struct IrInstGenAlignCast {...@@ -4234,10 +4232,6 @@ struct IrInstGenAlignCast {
4234 IrInstGen *target;4232 IrInstGen *target;
4235};4233};
42364234
4237struct IrInstSrcOpaqueType {
4238 IrInstSrc base;
4239};
4240
4241struct IrInstSrcSetAlignStack {4235struct IrInstSrcSetAlignStack {
4242 IrInstSrc base;4236 IrInstSrc base;
42434237
src/codegen.cpp-1
...@@ -8700,7 +8700,6 @@ static void define_builtin_fns(CodeGen *g) {...@@ -8700,7 +8700,6 @@ static void define_builtin_fns(CodeGen *g) {
8700 create_builtin_fn(g, BuiltinFnIdShrExact, "shrExact", 2);8700 create_builtin_fn(g, BuiltinFnIdShrExact, "shrExact", 2);
8701 create_builtin_fn(g, BuiltinFnIdSetEvalBranchQuota, "setEvalBranchQuota", 1);8701 create_builtin_fn(g, BuiltinFnIdSetEvalBranchQuota, "setEvalBranchQuota", 1);
8702 create_builtin_fn(g, BuiltinFnIdAlignCast, "alignCast", 2);8702 create_builtin_fn(g, BuiltinFnIdAlignCast, "alignCast", 2);
8703 create_builtin_fn(g, BuiltinFnIdOpaqueType, "OpaqueType", 0);
8704 create_builtin_fn(g, BuiltinFnIdSetAlignStack, "setAlignStack", 1);8703 create_builtin_fn(g, BuiltinFnIdSetAlignStack, "setAlignStack", 1);
8705 create_builtin_fn(g, BuiltinFnIdExport, "export", 2);8704 create_builtin_fn(g, BuiltinFnIdExport, "export", 2);
8706 create_builtin_fn(g, BuiltinFnIdErrorReturnTrace, "errorReturnTrace", 0);8705 create_builtin_fn(g, BuiltinFnIdErrorReturnTrace, "errorReturnTrace", 0);
src/ir.cpp-29
...@@ -506,8 +506,6 @@ static void destroy_instruction_src(IrInstSrc *inst) {...@@ -506,8 +506,6 @@ static void destroy_instruction_src(IrInstSrc *inst) {
506 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResolveResult *>(inst));506 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResolveResult *>(inst));
507 case IrInstSrcIdResetResult:507 case IrInstSrcIdResetResult:
508 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResetResult *>(inst));508 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResetResult *>(inst));
509 case IrInstSrcIdOpaqueType:
510 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcOpaqueType *>(inst));
511 case IrInstSrcIdSetAlignStack:509 case IrInstSrcIdSetAlignStack:
512 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcSetAlignStack *>(inst));510 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcSetAlignStack *>(inst));
513 case IrInstSrcIdArgType:511 case IrInstSrcIdArgType:
...@@ -1533,10 +1531,6 @@ static constexpr IrInstSrcId ir_inst_id(IrInstSrcResetResult *) {...@@ -1533,10 +1531,6 @@ static constexpr IrInstSrcId ir_inst_id(IrInstSrcResetResult *) {
1533 return IrInstSrcIdResetResult;1531 return IrInstSrcIdResetResult;
1534}1532}
15351533
1536static constexpr IrInstSrcId ir_inst_id(IrInstSrcOpaqueType *) {
1537 return IrInstSrcIdOpaqueType;
1538}
1539
1540static constexpr IrInstSrcId ir_inst_id(IrInstSrcSetAlignStack *) {1534static constexpr IrInstSrcId ir_inst_id(IrInstSrcSetAlignStack *) {
1541 return IrInstSrcIdSetAlignStack;1535 return IrInstSrcIdSetAlignStack;
1542}1536}
...@@ -4536,12 +4530,6 @@ static IrInstSrc *ir_build_reset_result(IrBuilderSrc *irb, Scope *scope, AstNode...@@ -4536,12 +4530,6 @@ static IrInstSrc *ir_build_reset_result(IrBuilderSrc *irb, Scope *scope, AstNode
4536 return &instruction->base;4530 return &instruction->base;
4537}4531}
45384532
4539static IrInstSrc *ir_build_opaque_type(IrBuilderSrc *irb, Scope *scope, AstNode *source_node) {
4540 IrInstSrcOpaqueType *instruction = ir_build_instruction<IrInstSrcOpaqueType>(irb, scope, source_node);
4541
4542 return &instruction->base;
4543}
4544
4545static IrInstSrc *ir_build_set_align_stack(IrBuilderSrc *irb, Scope *scope, AstNode *source_node,4533static IrInstSrc *ir_build_set_align_stack(IrBuilderSrc *irb, Scope *scope, AstNode *source_node,
4546 IrInstSrc *align_bytes)4534 IrInstSrc *align_bytes)
4547{4535{
...@@ -7311,11 +7299,6 @@ static IrInstSrc *ir_gen_builtin_fn_call(IrBuilderSrc *irb, Scope *scope, AstNod...@@ -7311,11 +7299,6 @@ static IrInstSrc *ir_gen_builtin_fn_call(IrBuilderSrc *irb, Scope *scope, AstNod
7311 IrInstSrc *align_cast = ir_build_align_cast_src(irb, scope, node, arg0_value, arg1_value);7299 IrInstSrc *align_cast = ir_build_align_cast_src(irb, scope, node, arg0_value, arg1_value);
7312 return ir_lval_wrap(irb, scope, align_cast, lval, result_loc);7300 return ir_lval_wrap(irb, scope, align_cast, lval, result_loc);
7313 }7301 }
7314 case BuiltinFnIdOpaqueType:
7315 {
7316 IrInstSrc *opaque_type = ir_build_opaque_type(irb, scope, node);
7317 return ir_lval_wrap(irb, scope, opaque_type, lval, result_loc);
7318 }
7319 case BuiltinFnIdThis:7302 case BuiltinFnIdThis:
7320 {7303 {
7321 IrInstSrc *this_inst = ir_gen_this(irb, scope, node);7304 IrInstSrc *this_inst = ir_gen_this(irb, scope, node);
...@@ -30264,15 +30247,6 @@ static IrInstGen *ir_analyze_instruction_align_cast(IrAnalyze *ira, IrInstSrcAli...@@ -30264,15 +30247,6 @@ static IrInstGen *ir_analyze_instruction_align_cast(IrAnalyze *ira, IrInstSrcAli
30264 return result;30247 return result;
30265}30248}
3026630249
30267static IrInstGen *ir_analyze_instruction_opaque_type(IrAnalyze *ira, IrInstSrcOpaqueType *instruction) {
30268 Buf *bare_name = buf_alloc();
30269 Buf *full_name = get_anon_type_name(ira->codegen, ira->old_irb.exec, "opaque",
30270 instruction->base.base.scope, instruction->base.base.source_node, bare_name);
30271 ZigType *result_type = get_opaque_type(ira->codegen, instruction->base.base.scope,
30272 instruction->base.base.source_node, buf_ptr(full_name), bare_name);
30273 return ir_const_type(ira, &instruction->base.base, result_type);
30274}
30275
30276static IrInstGen *ir_analyze_instruction_set_align_stack(IrAnalyze *ira, IrInstSrcSetAlignStack *instruction) {30250static IrInstGen *ir_analyze_instruction_set_align_stack(IrAnalyze *ira, IrInstSrcSetAlignStack *instruction) {
30277 uint32_t align_bytes;30251 uint32_t align_bytes;
30278 IrInstGen *align_bytes_inst = instruction->align_bytes->child;30252 IrInstGen *align_bytes_inst = instruction->align_bytes->child;
...@@ -31737,8 +31711,6 @@ static IrInstGen *ir_analyze_instruction_base(IrAnalyze *ira, IrInstSrc *instruc...@@ -31737,8 +31711,6 @@ static IrInstGen *ir_analyze_instruction_base(IrAnalyze *ira, IrInstSrc *instruc
31737 return ir_analyze_instruction_resolve_result(ira, (IrInstSrcResolveResult *)instruction);31711 return ir_analyze_instruction_resolve_result(ira, (IrInstSrcResolveResult *)instruction);
31738 case IrInstSrcIdResetResult:31712 case IrInstSrcIdResetResult:
31739 return ir_analyze_instruction_reset_result(ira, (IrInstSrcResetResult *)instruction);31713 return ir_analyze_instruction_reset_result(ira, (IrInstSrcResetResult *)instruction);
31740 case IrInstSrcIdOpaqueType:
31741 return ir_analyze_instruction_opaque_type(ira, (IrInstSrcOpaqueType *)instruction);
31742 case IrInstSrcIdSetAlignStack:31714 case IrInstSrcIdSetAlignStack:
31743 return ir_analyze_instruction_set_align_stack(ira, (IrInstSrcSetAlignStack *)instruction);31715 return ir_analyze_instruction_set_align_stack(ira, (IrInstSrcSetAlignStack *)instruction);
31744 case IrInstSrcIdArgType:31716 case IrInstSrcIdArgType:
...@@ -32182,7 +32154,6 @@ bool ir_inst_src_has_side_effects(IrInstSrc *instruction) {...@@ -32182,7 +32154,6 @@ bool ir_inst_src_has_side_effects(IrInstSrc *instruction) {
32182 case IrInstSrcIdAlignCast:32154 case IrInstSrcIdAlignCast:
32183 case IrInstSrcIdImplicitCast:32155 case IrInstSrcIdImplicitCast:
32184 case IrInstSrcIdResolveResult:32156 case IrInstSrcIdResolveResult:
32185 case IrInstSrcIdOpaqueType:
32186 case IrInstSrcIdArgType:32157 case IrInstSrcIdArgType:
32187 case IrInstSrcIdTagType:32158 case IrInstSrcIdTagType:
32188 case IrInstSrcIdErrorReturnTrace:32159 case IrInstSrcIdErrorReturnTrace:
src/ir_print.cpp-9
...@@ -306,8 +306,6 @@ const char* ir_inst_src_type_str(IrInstSrcId id) {...@@ -306,8 +306,6 @@ const char* ir_inst_src_type_str(IrInstSrcId id) {
306 return "SrcResolveResult";306 return "SrcResolveResult";
307 case IrInstSrcIdResetResult:307 case IrInstSrcIdResetResult:
308 return "SrcResetResult";308 return "SrcResetResult";
309 case IrInstSrcIdOpaqueType:
310 return "SrcOpaqueType";
311 case IrInstSrcIdSetAlignStack:309 case IrInstSrcIdSetAlignStack:
312 return "SrcSetAlignStack";310 return "SrcSetAlignStack";
313 case IrInstSrcIdArgType:311 case IrInstSrcIdArgType:
...@@ -2315,10 +2313,6 @@ static void ir_print_reset_result(IrPrintSrc *irp, IrInstSrcResetResult *instruc...@@ -2315,10 +2313,6 @@ static void ir_print_reset_result(IrPrintSrc *irp, IrInstSrcResetResult *instruc
2315 fprintf(irp->f, ")");2313 fprintf(irp->f, ")");
2316}2314}
23172315
2318static void ir_print_opaque_type(IrPrintSrc *irp, IrInstSrcOpaqueType *instruction) {
2319 fprintf(irp->f, "@OpaqueType()");
2320}
2321
2322static void ir_print_set_align_stack(IrPrintSrc *irp, IrInstSrcSetAlignStack *instruction) {2316static void ir_print_set_align_stack(IrPrintSrc *irp, IrInstSrcSetAlignStack *instruction) {
2323 fprintf(irp->f, "@setAlignStack(");2317 fprintf(irp->f, "@setAlignStack(");
2324 ir_print_other_inst_src(irp, instruction->align_bytes);2318 ir_print_other_inst_src(irp, instruction->align_bytes);
...@@ -2911,9 +2905,6 @@ static void ir_print_inst_src(IrPrintSrc *irp, IrInstSrc *instruction, bool trai...@@ -2911,9 +2905,6 @@ static void ir_print_inst_src(IrPrintSrc *irp, IrInstSrc *instruction, bool trai
2911 case IrInstSrcIdResetResult:2905 case IrInstSrcIdResetResult:
2912 ir_print_reset_result(irp, (IrInstSrcResetResult *)instruction);2906 ir_print_reset_result(irp, (IrInstSrcResetResult *)instruction);
2913 break;2907 break;
2914 case IrInstSrcIdOpaqueType:
2915 ir_print_opaque_type(irp, (IrInstSrcOpaqueType *)instruction);
2916 break;
2917 case IrInstSrcIdSetAlignStack:2908 case IrInstSrcIdSetAlignStack:
2918 ir_print_set_align_stack(irp, (IrInstSrcSetAlignStack *)instruction);2909 ir_print_set_align_stack(irp, (IrInstSrcSetAlignStack *)instruction);
2919 break;2910 break;
test/compile_errors.zig+1-1
...@@ -7394,7 +7394,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {...@@ -7394,7 +7394,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
7394 });7394 });
73957395
7396 cases.add("function parameter is opaque",7396 cases.add("function parameter is opaque",
7397 \\const FooType = @OpaqueType();7397 \\const FooType = @Type(.Opaque);
7398 \\export fn entry1() void {7398 \\export fn entry1() void {
7399 \\ const someFuncPtr: fn (FooType) void = undefined;7399 \\ const someFuncPtr: fn (FooType) void = undefined;
7400 \\}7400 \\}
test/run_translated_c.zig+17
...@@ -3,6 +3,23 @@ const tests = @import("tests.zig");...@@ -3,6 +3,23 @@ const tests = @import("tests.zig");
3const nl = std.cstr.line_sep;3const nl = std.cstr.line_sep;
44
5pub fn addCases(cases: *tests.RunTranslatedCContext) void {5pub fn addCases(cases: *tests.RunTranslatedCContext) void {
6 cases.add("variable shadowing type type",
7 \\#include <stdlib.h>
8 \\int main() {
9 \\ int type = 1;
10 \\ if (type != 1) abort();
11 \\}
12 , "");
13
14 cases.add("assignment as expression",
15 \\#include <stdlib.h>
16 \\int main() {
17 \\ int a, b, c, d = 5;
18 \\ int e = a = b = c = d;
19 \\ if (e != 5) abort();
20 \\}
21 , "");
22
6 cases.add("static variable in block scope",23 cases.add("static variable in block scope",
7 \\#include <stdlib.h>24 \\#include <stdlib.h>
8 \\int foo() {25 \\int foo() {
test/stage1/behavior/type.zig-1
...@@ -190,7 +190,6 @@ test "Type.ErrorUnion" {...@@ -190,7 +190,6 @@ test "Type.ErrorUnion" {
190}190}
191191
192test "Type.Opaque" {192test "Type.Opaque" {
193 testing.expect(@OpaqueType() != @Type(.Opaque));
194 testing.expect(@Type(.Opaque) != @Type(.Opaque));193 testing.expect(@Type(.Opaque) != @Type(.Opaque));
195 testing.expect(@typeInfo(@Type(.Opaque)) == .Opaque);194 testing.expect(@typeInfo(@Type(.Opaque)) == .Opaque);
196}195}
test/stage2/test.zig+146
...@@ -694,6 +694,68 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -694,6 +694,68 @@ pub fn addCases(ctx: *TestContext) !void {
694 "",694 "",
695 );695 );
696696
697 // Reusing the registers of dead operands playing nicely with conditional branching.
698 case.addCompareOutput(
699 \\export fn _start() noreturn {
700 \\ assert(add(3, 4) == 791);
701 \\ assert(add(4, 3) == 79);
702 \\
703 \\ exit();
704 \\}
705 \\
706 \\fn add(a: u32, b: u32) u32 {
707 \\ const x: u32 = if (a < b) blk: {
708 \\ const c = a + b; // 7
709 \\ const d = a + c; // 10
710 \\ const e = d + b; // 14
711 \\ const f = d + e; // 24
712 \\ const g = e + f; // 38
713 \\ const h = f + g; // 62
714 \\ const i = g + h; // 100
715 \\ const j = i + d; // 110
716 \\ const k = i + j; // 210
717 \\ const l = k + c; // 217
718 \\ const m = l + d; // 227
719 \\ const n = m + e; // 241
720 \\ const o = n + f; // 265
721 \\ const p = o + g; // 303
722 \\ const q = p + h; // 365
723 \\ const r = q + i; // 465
724 \\ const s = r + j; // 575
725 \\ const t = s + k; // 785
726 \\ break :blk t;
727 \\ } else blk: {
728 \\ const t = b + b + a; // 10
729 \\ const c = a + t; // 14
730 \\ const d = c + t; // 24
731 \\ const e = d + t; // 34
732 \\ const f = e + t; // 44
733 \\ const g = f + t; // 54
734 \\ const h = c + g; // 68
735 \\ break :blk h + b; // 71
736 \\ };
737 \\ const y = x + a; // 788, 75
738 \\ const z = y + a; // 791, 79
739 \\ return z;
740 \\}
741 \\
742 \\pub fn assert(ok: bool) void {
743 \\ if (!ok) unreachable; // assertion failure
744 \\}
745 \\
746 \\fn exit() noreturn {
747 \\ asm volatile ("syscall"
748 \\ :
749 \\ : [number] "{rax}" (231),
750 \\ [arg1] "{rdi}" (0)
751 \\ : "rcx", "r11", "memory"
752 \\ );
753 \\ unreachable;
754 \\}
755 ,
756 "",
757 );
758
697 // Character literals and multiline strings.759 // Character literals and multiline strings.
698 case.addCompareOutput(760 case.addCompareOutput(
699 \\export fn _start() noreturn {761 \\export fn _start() noreturn {
...@@ -758,6 +820,90 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -758,6 +820,90 @@ pub fn addCases(ctx: *TestContext) !void {
758 ,820 ,
759 "",821 "",
760 );822 );
823
824 // Array access.
825 case.addCompareOutput(
826 \\export fn _start() noreturn {
827 \\ assert("hello"[0] == 'h');
828 \\
829 \\ exit();
830 \\}
831 \\
832 \\pub fn assert(ok: bool) void {
833 \\ if (!ok) unreachable; // assertion failure
834 \\}
835 \\
836 \\fn exit() noreturn {
837 \\ asm volatile ("syscall"
838 \\ :
839 \\ : [number] "{rax}" (231),
840 \\ [arg1] "{rdi}" (0)
841 \\ : "rcx", "r11", "memory"
842 \\ );
843 \\ unreachable;
844 \\}
845 ,
846 "",
847 );
848
849 // 64bit set stack
850 case.addCompareOutput(
851 \\export fn _start() noreturn {
852 \\ var i: u64 = 0xFFEEDDCCBBAA9988;
853 \\ assert(i == 0xFFEEDDCCBBAA9988);
854 \\
855 \\ exit();
856 \\}
857 \\
858 \\pub fn assert(ok: bool) void {
859 \\ if (!ok) unreachable; // assertion failure
860 \\}
861 \\
862 \\fn exit() noreturn {
863 \\ asm volatile ("syscall"
864 \\ :
865 \\ : [number] "{rax}" (231),
866 \\ [arg1] "{rdi}" (0)
867 \\ : "rcx", "r11", "memory"
868 \\ );
869 \\ unreachable;
870 \\}
871 ,
872 "",
873 );
874
875 // Basic for loop
876 case.addCompareOutput(
877 \\export fn _start() noreturn {
878 \\ for ("hello") |_| print();
879 \\
880 \\ exit();
881 \\}
882 \\
883 \\fn print() void {
884 \\ asm volatile ("syscall"
885 \\ :
886 \\ : [number] "{rax}" (1),
887 \\ [arg1] "{rdi}" (1),
888 \\ [arg2] "{rsi}" (@ptrToInt("hello\n")),
889 \\ [arg3] "{rdx}" (6)
890 \\ : "rcx", "r11", "memory"
891 \\ );
892 \\ return;
893 \\}
894 \\
895 \\fn exit() noreturn {
896 \\ asm volatile ("syscall"
897 \\ :
898 \\ : [number] "{rax}" (231),
899 \\ [arg1] "{rdi}" (0)
900 \\ : "rcx", "r11", "memory"
901 \\ );
902 \\ unreachable;
903 \\}
904 ,
905 "hello\nhello\nhello\nhello\nhello\n",
906 );
761 }907 }
762908
763 {909 {
test/stage2/zir.zig+5-4
...@@ -43,10 +43,11 @@ pub fn addCases(ctx: *TestContext) !void {...@@ -43,10 +43,11 @@ pub fn addCases(ctx: *TestContext) !void {
43 \\43 \\
44 \\@entry = fn(@fnty, {44 \\@entry = fn(@fnty, {
45 \\ %a = str("\x32\x08\x01\x0a")45 \\ %a = str("\x32\x08\x01\x0a")
46 \\ %eptr0 = elemptr(%a, @0)46 \\ %a_ref = ref(%a)
47 \\ %eptr1 = elemptr(%a, @1)47 \\ %eptr0 = elemptr(%a_ref, @0)
48 \\ %eptr2 = elemptr(%a, @2)48 \\ %eptr1 = elemptr(%a_ref, @1)
49 \\ %eptr3 = elemptr(%a, @3)49 \\ %eptr2 = elemptr(%a_ref, @2)
50 \\ %eptr3 = elemptr(%a_ref, @3)
50 \\ %v0 = deref(%eptr0)51 \\ %v0 = deref(%eptr0)
51 \\ %v1 = deref(%eptr1)52 \\ %v1 = deref(%eptr1)
52 \\ %v2 = deref(%eptr2)53 \\ %v2 = deref(%eptr2)
tools/process_headers.zig+6-6
...@@ -15,7 +15,7 @@ const Arch = std.Target.Cpu.Arch;...@@ -15,7 +15,7 @@ const Arch = std.Target.Cpu.Arch;
15const Abi = std.Target.Abi;15const Abi = std.Target.Abi;
16const OsTag = std.Target.Os.Tag;16const OsTag = std.Target.Os.Tag;
17const assert = std.debug.assert;17const assert = std.debug.assert;
18const Sha256 = std.crypto.hash.sha2.Sha256;18const Blake3 = std.crypto.hash.Blake3;
1919
20const LibCTarget = struct {20const LibCTarget = struct {
21 name: []const u8,21 name: []const u8,
...@@ -314,7 +314,7 @@ pub fn main() !void {...@@ -314,7 +314,7 @@ pub fn main() !void {
314 var max_bytes_saved: usize = 0;314 var max_bytes_saved: usize = 0;
315 var total_bytes: usize = 0;315 var total_bytes: usize = 0;
316316
317 var hasher = Sha256.init(.{});317 var hasher = Blake3.init(.{});
318318
319 for (libc_targets) |libc_target| {319 for (libc_targets) |libc_target| {
320 const dest_target = DestTarget{320 const dest_target = DestTarget{
...@@ -360,7 +360,7 @@ pub fn main() !void {...@@ -360,7 +360,7 @@ pub fn main() !void {
360 const trimmed = std.mem.trim(u8, raw_bytes, " \r\n\t");360 const trimmed = std.mem.trim(u8, raw_bytes, " \r\n\t");
361 total_bytes += raw_bytes.len;361 total_bytes += raw_bytes.len;
362 const hash = try allocator.alloc(u8, 32);362 const hash = try allocator.alloc(u8, 32);
363 hasher = Sha256.init(.{});363 hasher = Blake3.init(.{});
364 hasher.update(rel_path);364 hasher.update(rel_path);
365 hasher.update(trimmed);365 hasher.update(trimmed);
366 hasher.final(hash);366 hasher.final(hash);
...@@ -412,12 +412,12 @@ pub fn main() !void {...@@ -412,12 +412,12 @@ pub fn main() !void {
412 {412 {
413 var hash_it = path_kv.value.iterator();413 var hash_it = path_kv.value.iterator();
414 while (hash_it.next()) |hash_kv| {414 while (hash_it.next()) |hash_kv| {
415 const contents = &hash_to_contents.get(hash_kv.value).?;415 const contents = &hash_to_contents.getEntry(hash_kv.value).?.value;
416 try contents_list.append(contents);416 try contents_list.append(contents);
417 }417 }
418 }418 }
419 std.sort.sort(*Contents, contents_list.span(), {}, Contents.hitCountLessThan);419 std.sort.sort(*Contents, contents_list.span(), {}, Contents.hitCountLessThan);
420 var best_contents = contents_list.popOrNull().?;420 const best_contents = contents_list.popOrNull().?;
421 if (best_contents.hit_count > 1) {421 if (best_contents.hit_count > 1) {
422 // worth it to make it generic422 // worth it to make it generic
423 const full_path = try std.fs.path.join(allocator, &[_][]const u8{ out_dir, generic_name, path_kv.key });423 const full_path = try std.fs.path.join(allocator, &[_][]const u8{ out_dir, generic_name, path_kv.key });
...@@ -434,7 +434,7 @@ pub fn main() !void {...@@ -434,7 +434,7 @@ pub fn main() !void {
434 }434 }
435 var hash_it = path_kv.value.iterator();435 var hash_it = path_kv.value.iterator();
436 while (hash_it.next()) |hash_kv| {436 while (hash_it.next()) |hash_kv| {
437 const contents = &hash_to_contents.get(hash_kv.value).?;437 const contents = &hash_to_contents.getEntry(hash_kv.value).?.value;
438 if (contents.is_generic) continue;438 if (contents.is_generic) continue;
439439
440 const dest_target = hash_kv.key;440 const dest_target = hash_kv.key;