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
1717[![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
1919Note 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
2223### Stage 1: Build Zig from C++ Source Code
2324
build.zig+6-1
......@@ -49,6 +49,7 @@ pub fn build(b: *Builder) !void {
4949 const skip_release_safe = b.option(bool, "skip-release-safe", "Main test suite skips release-safe builds") orelse skip_release;
5050 const skip_non_native = b.option(bool, "skip-non-native", "Main test suite skips non-native builds") orelse false;
5151 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
5354 const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false;
5455 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 {
8384 }
8485
8586 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
8789 const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");
8890 const version = if (opt_version_string) |version| version else v: {
......@@ -103,6 +105,7 @@ pub fn build(b: *Builder) !void {
103105 exe.addBuildOption([]const u8, "version", version);
104106
105107 exe.addBuildOption([]const []const u8, "log_scopes", log_scopes);
108 exe.addBuildOption([]const []const u8, "zir_dumps", zir_dumps);
106109 exe.addBuildOption(bool, "enable_tracy", tracy != null);
107110 if (tracy) |tracy_path| {
108111 const client_cpp = fs.path.join(
......@@ -182,7 +185,9 @@ pub fn build(b: *Builder) !void {
182185 test_step.dependOn(tests.addRunTranslatedCTests(b, test_filter));
183186 // tests for this feature are disabled until we have the self-hosted compiler available
184187 // 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 }
186191 test_step.dependOn(docs_step);
187192}
188193
ci/azure/windows_msvc_script.bat+1-1
......@@ -24,7 +24,7 @@ cd %ZIGBUILDDIR%
2424cmake.exe .. -Thost=x64 -G"Visual Studio 16 2019" -A x64 "-DCMAKE_INSTALL_PREFIX=%ZIGINSTALLDIR%" "-DCMAKE_PREFIX_PATH=%ZIGPREFIXPATH%" -DCMAKE_BUILD_TYPE=Release || exit /b
2525msbuild /maxcpucount /p:Configuration=Release INSTALL.vcxproj || exit /b
2626
27"%ZIGINSTALLDIR%\bin\zig.exe" build test || exit /b
27"%ZIGINSTALLDIR%\bin\zig.exe" build test -Dskip-compile-errors || exit /b
2828
2929set "PATH=%CD:~0,2%\msys64\usr\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem"
3030SET "MSYSTEM=MINGW64"
doc/langref.html.in+581-9
......@@ -10308,14 +10308,586 @@ fn readU32Be() u32 {}
1030810308 {#header_close#}
1030910309
1031010310 {#header_open|Keyword Reference#}
10311 <p>
10312 TODO the rest of the keywords. Most of these can just be links to the relevant section.
10313 </p>
10314 {#header_open|Keyword: pub#}
10315 <p>The {#syntax#}pub{#endsyntax#} in front of a top level declaration makes the
10316 declaration available to reference from a different file than the one it is declared in.</p>
10317 {#see_also|@import#}
10318 {#header_close#}
10311 <div class="table-wrapper">
10312 <table>
10313 <tr>
10314 <th>
10315 Keyword
10316 </th>
10317 <th>
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>
1031910891 {#header_close#}
1032010892
1032110893 {#header_open|Grammar#}
......@@ -10822,7 +11394,7 @@ keyword &lt;- KEYWORD_align / KEYWORD_and / KEYWORD_anyframe / KEYWORD_anytype
1082211394 <li>Reduce the amount one must remember.</li>
1082311395 <li>Minimize energy spent on coding style.</li>
1082411396 <li>Resource deallocation must succeed.</li>
10825 <li>Together we serve end users.</li>
11397 <li>Together we serve the users.</li>
1082611398 </ul>
1082711399 {#header_close#}
1082811400 </div></div>
lib/libc/glibc/abi.txt+3606-351
......@@ -200,7 +200,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
20020029
201201
20220229
203
20320429
205
20420629
205207
206208
......@@ -229,6 +231,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
229231
230232
231233
234
235
23223629
23323729
23423829
......@@ -237,47 +241,83 @@ aarch64-linux-gnu aarch64_be-linux-gnu
23724129
238242
23924329
244
245
24024629
24124729
24224829
249
250
24325129
24425229
24525329
24625429
247255
24825629
257
24925829
25025929
251260
25226129
262
25326329
254264
255265
256266
267
25726829
25826929
25927029
26027129
26127229
273
274
275
276
277
278
279
280
281
282
283
284
285
286
26228729
26328829
289
26429029
26529129
292
26629329
294
26729529
26829629
269297
27029829
27129929
300
27230129
302
27330329
274304
27530529
306
27630729
277308
278309
279310
280311
312
313
314
315
316
317
318
319
320
28132129
28232229
283323
......@@ -301,29 +341,50 @@ aarch64-linux-gnu aarch64_be-linux-gnu
301341
302342
30334329
344
345
30434629
30534729
30634829
30734929
308350
309351
352
353
354
31035529
356
357
358
31135929
312360
31336129
362
31436329
31536429
316365
31736629
367
31836829
31936929
320370
32137129
322372
373
32337429
32437535
325376
326377
378
379
380
381
382
383
384
385
386
387
32738829
32838929
32939029
......@@ -334,6 +395,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
334395
335396
336397
398
33739929
33840029
33940129
......@@ -361,9 +423,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu
361423
362424
363425
426
427
428
429
430
431
36443229
365433
36643429
435
36743629
36843729
36943829
......@@ -372,6 +441,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
37244129
37344229
37444329
444
445
37544629
37644729
377448
......@@ -381,10 +452,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
38145229
38245329
38345429
455
456
457
458
38445929
38546029
461
462
38646329
38746429
465
38846629
38946729
39046829
......@@ -404,6 +482,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
40448229
40548329
40648429
485
40748629
40848729
40948829
......@@ -419,7 +498,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
41949829
420499
42150029
501
42250229
503
42350429
42450529
42550629
......@@ -443,17 +524,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu
443524
44452529
44552629
527
44652829
529
44753029
531
44853229
533
44953429
535
45053629
537
45153829
539
45254029
541
45354229
543
45454429
545
45554629
547
45654829
549
45755029
45855129
45955230
......@@ -481,23 +574,29 @@ aarch64-linux-gnu aarch64_be-linux-gnu
48157429
482575
48357629
577
48457829
48557929
486580
48758129
582
48858329
48958429
490585
49158629
587
49258829
49358929
49459029
49559129
496592
497593
594
49859529
499596
50059729
598
599
50160029
50260129
50360229
......@@ -513,23 +612,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu
51361229
51461329
51561429
61542
51661629
51761729
51861829
519619
620
621
622
52062329
521624
52262529
626
52362729
628
52462929
525630
52663129
632
52763329
52863429
529635
636
53063729
638
53163929
53264029
641
642
53364329
534644
535645
......@@ -568,17 +678,26 @@ aarch64-linux-gnu aarch64_be-linux-gnu
568678
569679
570680
681
57168229
57268329
57368429
574685
575686
687
57668829
577689
578690
579691
580692
693
58169429
695
696
697
698
699
700
58270129
583702
584703
......@@ -691,7 +810,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
69181029
69281129
69381229
813
814
69481529
816
817
69581829
69681929
69782029
......@@ -707,6 +830,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
70783029
708831
70983229
833
71083429
711835
71283629
......@@ -714,7 +838,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
71483829
71583929
71684029
841
71784229
843
844
71884529
71984629
72084729
......@@ -745,6 +872,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
74587229
74687329
74787429
875
876
877
878
879
74888029
74988129
75088229
......@@ -763,12 +895,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
76389529
764896
76589729
898
76689929
900
76790129
76890229
76990329
77090429
77190529
906
907
908
77290929
77391029
77491129
......@@ -776,7 +913,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
77691329
77791429
77891529
916
77991729
918
919
920
78092129
78192229
78292329
......@@ -790,6 +931,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
79093129
79193229
79293329
934
935
79393629
79493729
79593829
......@@ -800,24 +943,34 @@ aarch64-linux-gnu aarch64_be-linux-gnu
800943
80194429
80294533
946
80394729
80494829
80594929
806950
807951
808952
953
80995429
810955
81195629
957
81295829
959
81396029
961
962
81496329
964
965
81596629
816967
817968
81896929
970
81997129
820972
973
82197429
82297529
82397629
......@@ -850,6 +1003,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
850100329
851100429
852100529
1006
1007
1008
853100929
8541010
855101129
......@@ -884,6 +1040,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
8841040
885104129
886104229
1043
1044
887104529
888104629
889104729
......@@ -903,48 +1061,93 @@ aarch64-linux-gnu aarch64_be-linux-gnu
9031061
9041062
905106329
1064
1065
1066
906106729
9071068
908106929
1070
1071
909107229
1073
1074
1075
910107629
911107729
9121078
9131079
914108029
915108129
1082
1083
916108429
917108529
918108629
919108729
920108829
9211089
1090
922109129
923109229
9241093
9251094
926109529
9271096
1097
1098
928109929
9291100
9301101
931110229
932110329
1104
1105
933110629
1107
1108
1109
1110
934111129
935111229
1113
1114
936111529
1116
937111729
1118
1119
1120
938112129
1122
1123
1124
939112529
940112629
1127
1128
941112929
1130
1131
942113229
1133
943113429
1135
1136
1137
944113829
1139
1140
1141
1142
945114329
1144
1145
1146
946114729
947114829
1149
1150
948115129
949115229
950115329
......@@ -963,6 +1166,8 @@ aarch64-linux-gnu aarch64_be-linux-gnu
9631166
964116729
965116829
1169
1170
966117129
967117229
968117329
......@@ -984,7 +1189,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
984118929
985119029
986119129
1192
1193
987119429
1195
988119629
989119729
990119829
......@@ -997,14 +1205,17 @@ aarch64-linux-gnu aarch64_be-linux-gnu
997120529
9981206
999120729
1208
1000120929
1001121029
10021211
1003121229
1213
1004121429
1005121529
10061216
1007121729
1218
1008121929
1009122029
1010122129
......@@ -1602,7 +1813,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
1602181329
1603181429 39
1604181529
160529
181629 42
1606181737
1607181837
1608181937
......@@ -2728,17 +2939,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2728293929
2729294029
2730294129
294242
2731294329
2732294429
2733294529
2734294629
294729 42
2735294829
2736294929
2737295029
2738295129
2739295229
2740295329
274129
295442
2742295529
2743295629
2744295729
......@@ -2768,8 +2981,20 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2768298129
2769298229
2770298329
277129
298429 42
2772298530
298629 42
298729
298829
298929
299029
299129
299229
299329
299429
299529
299629
299740
2773299829
2774299929
2775300029
......@@ -2781,6 +3006,23 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2781300629
2782300729
2783300829
300929
301029
301129
301229
301329
301429
301529
301629
301729
301829
301929
302029
302129
302229
302329
302429
302540
2784302640
2785302729
2786302829
......@@ -2799,6 +3041,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2799304129
2800304229
2801304329
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
2802307929
2803308029
2804308129
......@@ -2809,9 +3086,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2809308629
2810308729
2811308829
281240
281340
308936
2814309029
309136
2815309229
2816309329
2817309429
......@@ -2820,6 +3097,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2820309729
2821309829
2822309929
310029 34
2823310129
2824310229
2825310329
......@@ -2828,7 +3106,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2828310629
2829310729
2830310829
283130
2832310929
2833311029
2834311129
......@@ -2836,6 +3113,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2836311329
2837311429
2838311529
3116
2839311729
2840311829
2841311929
......@@ -2851,6 +3129,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2851312929
2852313029
2853313129
313236
2854313329
2855313429
2856313529
......@@ -2868,39 +3147,65 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2868314729
2869314829
2870314929
315037
315137
315237
315337
315437
2871315529
2872315629
2873315729
2874315829
2875315929
287636
2877316029
287836
2879316129
316237
316337
316437
316537
316637
2880316729
2881316829
2882316929
317038
3171
2883317229
2884317329
2885317429
2886317529
288729 34
2888317629
2889317729
2890317829
2891317929
2892318029
318137
318237
318337
318437
318537
2893318629
2894318729
2895318829
318935
319035
319137
319237
319337
319437
319537
319635
2896319729
319837
319937
320037
320137
320237
2897320329
2898320429
2899320529
2900320629
2901320729
2902320829
2903
2904320929
2905321029
2906321129
......@@ -2910,13 +3215,51 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2910321529
2911321629
2912321729
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
2913325729
2914325829
2915325929
2916326029
2917326129
2918326229
291936
2920326329
2921326429
2922326529
......@@ -2934,11 +3277,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2934327729
2935327829
2936327929
293737
293837
293937
294037
294137
2942328029
2943328129
2944328229
......@@ -2946,16 +3284,9 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2946328429
2947328529
2948328629
294937
295037
295137
295237
295337
2954328729
2955328829
2956328929
295738
2958
2959329029
2960329129
2961329229
......@@ -2965,11 +3296,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2965329629
2966329729
2967329829
296837
296937
297037
297137
297237
2973329929
2974330029
2975330129
......@@ -2981,12 +3307,79 @@ aarch64-linux-gnu aarch64_be-linux-gnu
2981330737
2982330837
2983330935
298429
331035
331135
2985331237
2986331337
2987331437
2988331537
2989331637
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
2990338329
2991338429
2992338529
......@@ -3009,6 +3402,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3009340237
3010340329
3011340429
340537
340637
340737
340837
340937
341029
3012341129
3013341237
3014341337
......@@ -3027,6 +3426,11 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3027342629
3028342729
3029342829
342937
343037
343137
343237
343337
3030343429
3031343529
3032343629
......@@ -3037,10 +3441,10 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3037344129
3038344229
3039344329
304040
3041344429
3042344529
3043344629
344738
3044344829
3045344929
3046345029
......@@ -3063,8 +3467,19 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3063346729
3064346829
3065346929
347042
347142
3066347229
3067347329
347435
347535
347637
347737
347837
347937
348037
348135
348229
3068348329
3069348429
3070348529
......@@ -3086,27 +3501,16 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3086350129
3087350229
3088350329
308935
309035
3091350437
3092350537
3093350637
3094350737
3095350837
309635
309735
309835
3099350937
3100351037
3101351137
3102351237
3103351337
310435
310529
310629
310729
310829
310929
3110351429
3111351529
3112351629
......@@ -3176,6 +3580,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3176358029
3177358129
3178358229
3583
3179358429
3180358529
3181358629
......@@ -3194,11 +3599,12 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3194359937
3195360029
3196360129
319737
319837
319937
320037
320137
360229
360329
360429
360529
360629
360729
3202360829
3203360929
3204361029
......@@ -3217,6 +3623,15 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3217362337
3218362437
3219362529
362640
362738
362838
362938
363038
363138
363238
363338
363438
3220363529
3221363629
3222363729
......@@ -3229,9 +3644,6 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3229364429
3230364529
3231364629
323238
323329
323429
3235364729
3236364829
3237364929
......@@ -3241,6 +3653,22 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3241365329
3242365429
3243365529
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
3244367229
3245367329
3246367429
......@@ -3254,46 +3682,41 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3254368229
3255368329
3256368429
325735
325835
3259368537
3260368637
3261368737
3262368837
3263368937
326435
326529
326629
326729
326829
326929
327029
327129
327229
327329
327429
327529
327629
327729
3278369029
3279369129
369238
369338
369438
369538
3280369629
3281369729
3282369829
3283369929
370040
3284370129
3285370229
3286370329
370435
370535
3287370637
3288370737
3289370837
3290370937
3291371037
371135
371235
371335
3292371437
3293371537
3294371637
3295371737
3296371837
371935
3297372029
3298372129
3299372229
......@@ -3333,213 +3756,7 @@ aarch64-linux-gnu aarch64_be-linux-gnu
3333375629
3334375729
3335375829
333629
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
3759
3543376029
3544376129
3545376229
......@@ -3942,7 +4159,9 @@ s390x-linux-gnu
3942415927
39434160
3944416127
4162
3945416327
4164
3946416527
39474166
39484167
......@@ -3971,6 +4190,8 @@ s390x-linux-gnu
39714190
39724191
39734192
4193
4194
397441955
397541965
397641975
......@@ -3979,43 +4200,79 @@ s390x-linux-gnu
3979420027
39804201
3981420227
4203
4204
3982420527
398342065 16
3984420720
4208
4209
398542105
398642115
398742125
3988421327
39894214
3990421527
4216
3991421727
3992421827
39934219
3994422027
4221
3995422227
39964223
39974224
39984225
4226
399942275
400042285
400142295
400242305
400342315
4232
4233
4234
4235
4236
4237
4238
4239
4240
4241
4242
4243
4244
4245
400442465
4005424715
4248
400642495
400742505
4251
400842525 16
4253
400942545
401042555
40114256
401242575
4013425816
4259
401442605
4261
4015426227
40164263
4017426427
4265
4018426627
4267
4268
4269
4270
4271
4272
4273
4274
4275
401942765
402042775
402142785
......@@ -4043,29 +4300,50 @@ s390x-linux-gnu
40434300
40444301
4045430220
4303
4304
404643055
404743065
404843075
404943085
40504309
40514310
4311
4312
4313
405243145
4315
4316
4317
4053431827
40544319
4055432027
4321
4056432227
4057432327
40584324
4059432527
4326
4060432727
4061432827
40624329
4063433027
40644331
4332
4065433327
4066433435
40674335
40684336
4337
4338
4339
4340
4341
4342
4343
4344
4345
4346
406943475
407043485
4071434927
......@@ -4075,6 +4353,7 @@ s390x-linux-gnu
40754353
40764354
40774355
4356
4078435739
407943585
4080435916
......@@ -4103,9 +4382,16 @@ s390x-linux-gnu
41034382
41044383
41054384
4385
4386
4387
4388
4389
4390
4106439127
41074392
4108439327
4394
4109439527
411043965
411143975
......@@ -4114,6 +4400,8 @@ s390x-linux-gnu
4114440016
411544015
4116440215 16
4403
4404
411744055
411844065
411944075
......@@ -4123,10 +4411,17 @@ s390x-linux-gnu
412344115
412444125
412544135
4414
4415
4416
4417
412644185
4127441916
4420
4421
412844225
412944235
4424
413044255
413144265
4132442716
......@@ -4146,6 +4441,7 @@ s390x-linux-gnu
4146444116
414744425
414844435
4444
414944455
415044465
4151444715
......@@ -4161,7 +4457,9 @@ s390x-linux-gnu
4161445727
41624458
4163445927
4460
4164446127
4462
416544635
416644645
416744655
......@@ -4185,17 +4483,29 @@ s390x-linux-gnu
41854483
418644845 16
4187448519
4486
4188448719
4488
4189448919
4490
4190449119
4492
4191449319
4494
4192449519
4496
4193449719
4498
4194449919
4500
4195450119
4502
4196450319
4504
4197450519
4506
4198450719
4508
419945095
420045105
4201451130
......@@ -4223,23 +4533,29 @@ s390x-linux-gnu
4223453327
42244534
4225453527
4536
4226453727
4227453827
42284539
4229454027
4541
4230454227
4231454327
42324544
4233454527
4546
4234454727
423545485
423645495
423745505
42384551
42394552
4553
4240455427
42414555
4242455627
4557
4558
4243455927
424445605
424545615
......@@ -4255,23 +4571,34 @@ s390x-linux-gnu
425545715
425645725
425745735
457442
425845755
425945765
426045775
426111
45788 11
4579
4580
4581
4262458227
42634583
4264458427
4585
4265458627
4587
4266458827
42674589
4268459027
4591
4269459227
4270459327
42714594
4595
4272459627
4597
4273459827
4274459923 31
4600
4601
427546025
42764603
42774604
......@@ -4310,17 +4637,26 @@ s390x-linux-gnu
43104637
43114638
43124639
4640
431346415
431446425
4315464319
43164644
43174645
4646
4318464711
43194648
43204649
43214650
43224651
4652
432346535
4654
4655
4656
4657
4658
4659
432446605
4325466116
4326466216
......@@ -4433,7 +4769,11 @@ s390x-linux-gnu
443347695
443447705
4435477120
4772
4773
4436477420
4775
4776
443747775
443847785
4439477919
......@@ -4449,6 +4789,7 @@ s390x-linux-gnu
4449478927
44504790
4451479127
4792
4452479327
44534794
4454479528
......@@ -4456,7 +4797,10 @@ s390x-linux-gnu
4456479716
4457479816
4458479915 16
4800
445948015 16
4802
4803
446048045
446148055
446248065
......@@ -4487,6 +4831,11 @@ s390x-linux-gnu
4487483114
4488483216
448948335
4834
4835
4836
4837
4838
449048395
449148405
449248415
......@@ -4505,12 +4854,17 @@ s390x-linux-gnu
4505485427
45064855
4507485627
4857
4508485827
4859
450948605
451048615
451148625
451248635
451348645
4865
4866
4867
451448688
451548698
451648708
......@@ -4518,7 +4872,11 @@ s390x-linux-gnu
451848725
4519487327
4520487427
4875
4521487627
4877
4878
4879
4522488019
4523488118
4524488219
......@@ -4532,6 +4890,8 @@ s390x-linux-gnu
453248905
453348915
453448925
4893
4894
453548955
453648965
453748975
......@@ -4542,24 +4902,34 @@ s390x-linux-gnu
45424902
4543490316
4544490433
4905
454549065
4546490731 5
454749085
45484909
45494910
45504911
4912
4551491327
45524914
4553491527
4916
4554491727
4918
4555491915 16
4920
4921
4556492215 16
4923
4924
4557492527
45584926
45594927
4560492827
4929
4561493027
45624931
4932
4563493316
45644934
456549355
......@@ -4592,6 +4962,9 @@ s390x-linux-gnu
459249625
459349635
459449645 16
4965
4966
4967
4595496812
45964969
459749705
......@@ -4626,6 +4999,8 @@ s390x-linux-gnu
46264999
462750005
462850015
5002
5003
462950045
463050055
463150065
......@@ -4645,48 +5020,93 @@ s390x-linux-gnu
46455020
46465021
4647502216
5023
5024
5025
464850265
464950275
4650502816
5029
5030
465150315
5032
5033
5034
465250355
46535036
46545037
4655503812
465650395
465750405
5041
5042
465850435
465950445
466050455
466150465
466250475
46635048
5049
4664505016
466550515
46665052
46675053
466850545
46695055
5056
5057
467050585
46715059
46725060
4673506112
4674506220
5063
5064
4675506520
5066
5067
5068
5069
467650705
4677507115 16
5072
5073
467850745 16
5075
4679507616
5077
5078
5079
4680508015 16
5081
5082
5083
468150845 16
4682508515 16
5086
5087
4683508815 16
5089
5090
468450915 16
5092
4685509316
5094
5095
5096
4686509716
5098
5099
5100
5101
4687510216
5103
5104
5105
468851065
468951075
5108
5109
4690511016
4691511116
4692511216
......@@ -4705,6 +5125,8 @@ s390x-linux-gnu
47055125
470651265
470751275
5128
5129
470851305
470951315
471051325 16
......@@ -4726,7 +5148,10 @@ s390x-linux-gnu
4726514816
472751495
4728515016
5151
5152
472951535
5154
473051555
473151565
473251575
......@@ -4739,14 +5164,17 @@ s390x-linux-gnu
4739516427
47405165
4741516627
5167
4742516827
4743516927
47445170
4745517127
5172
4746517327
4747517427
47485175
4749517627
5177
4750517827
475151795
475251805
......@@ -5344,7 +5772,7 @@ s390x-linux-gnu
534457725
534557735 39
534657745
53475
57755 42
5348577637
5349577737
5350577837
......@@ -6470,17 +6898,19 @@ s390x-linux-gnu
647068985
647168995
647269005
690142
647369025
647469035
647569045
647669055
647714 15
690614 15 42
647869075
647969085
648069095
648169105
648269115
648369125
691342
648469145
648569155
648669165
......@@ -6510,9 +6940,9 @@ s390x-linux-gnu
651069405
651169415
651269425
651314 15
694314 15 42
6514694430
65158
69458 42
651669465
651769475
6518694824
......@@ -6578,7 +7008,7 @@ s390x-linux-gnu
657870085
6579700915
658070105
65815
70115 42
6582701223
658370135
658470145
......@@ -6883,12 +7313,14 @@ s390x-linux-gnu
688373135
688473145
688573155
731642
688673175
688773185
688873195
688973205
689073215
689173225
732342
689273245
689373255
689473265
......@@ -6994,6 +7426,8 @@ s390x-linux-gnu
699474265
6995742718
699674285
742942
743042
699774315 16
6998743212 16
6999743335
......@@ -7688,6 +8122,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
76888122
76898123
76908124
8125
8126
7691812716
7692812816
7693812916
......@@ -7713,6 +8149,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77138149
77148150
77158151
8152
8153
7716815416
7717815516
7718815616
......@@ -7722,8 +8160,12 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77228160
7723816127
77248162
8163
8164
7725816516
7726816620
8167
8168
7727816916
7728817016
7729817116
......@@ -7731,6 +8173,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77318173
7732817427
77338175
8176
7734817727
77358178
7736817927
......@@ -7738,22 +8181,43 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77388181
77398182
77408183
8184
8185
7741818616
7742818716
7743818816
7744818916
7745819016
8191
8192
8193
8194
8195
8196
8197
8198
8199
8200
8201
8202
8203
8204
7746820516
7747820616
8207
7748820816
7749820916
8210
7750821116
8212
7751821316
7752821416
77538215
7754821616
7755821716
8218
7756821916
8220
7757822127
77588222
7759822327
......@@ -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
7765823916
7766824016
77678241
......@@ -7785,29 +8259,50 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
77858259
77868260
7787826120
8262
8263
7788826416
7789826516
7790826616
7791826716
77928268
77938269
8270
8271
8272
7794827316
8274
8275
8276
7795827727
77968278
7797827927
77988280
8281
7799828227
78008283
7801828427
78028285
8286
7803828727
78048288
7805828927
78068290
78078291
8292
7808829335
78098294
78108295
8296
8297
8298
8299
8300
8301
8302
8303
8304
8305
7811830616
7812830716
7813830827
......@@ -7818,6 +8313,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
78188313
78198314
78208315
8316
7821831716
7822831816
7823831916
......@@ -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
7848835027
78498351
7850835227
78518353
8354
7852835516
7853835616
7854835716
......@@ -7856,6 +8359,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
78568359
7857836016
7858836116
8362
8363
7859836416
7860836516
78618366
......@@ -7865,10 +8370,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
7865837016
7866837116
7867837216
8373
8374
8375
8376
7868837716
7869837816
8379
8380
7870838116
7871838216
8383
7872838416
7873838516
7874838616
......@@ -7888,6 +8400,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
7888840016
7889840116
7890840216
8403
7891840416
7892840516
7893840616
......@@ -7904,6 +8417,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79048417
7905841827
79068419
8420
8421
7907842216
7908842316
7909842416
......@@ -7927,17 +8442,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79278442
7928844316
7929844419
8445
7930844619
8447
7931844819
8449
7932845019
8451
7933845219
8453
7934845419
8455
7935845619
8457
7936845819
8459
7937846019
8461
7938846219
8463
7939846419
8465
7940846619
8467
7941846816
7942846916
7943847030
......@@ -7966,23 +8493,29 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
79668493
7967849427
79688495
8496
7969849727
79708498
7971849927
79728500
8501
7973850227
79748503
7975850427
79768505
8506
7977850716
7978850816
7979850916
79808510
79818511
8512
7982851327
79838514
7984851527
79858516
8517
8518
7986851916
7987852016
7988852116
......@@ -7997,23 +8530,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
7997853016
7998853116
7999853216
853342
8000853416
8001853516
8002853616
80038537
8538
8539
8540
8004854127
80058542
8006854327
80078544
8545
8546
8008854727
80098548
8010854927
80118550
8551
8012855227
80138553
8554
8014855527
80158556
8557
8016855823
8559
8560
8017856116
80188562
80198563
......@@ -8052,17 +8596,26 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
80528596
80538597
80548598
8599
8055860016
8056860116
8057860219
80588603
80598604
8605
8060860616
80618607
80628608
80638609
80648610
8611
8065861216
8613
8614
8615
8616
8617
8618
8066861916
80678620
80688621
......@@ -8175,7 +8728,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8175872816
8176872916
8177873020
8731
8732
8178873320
8734
8735
8179873616
8180873716
8181873819
......@@ -8193,12 +8750,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8193875027
81948751
81958752
8753
8196875428
8197875516
8198875616
8199875716
8200875816
8759
8201876016
8761
8762
8202876316
8203876416
8204876516
......@@ -8229,6 +8790,11 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8229879016
8230879116
8231879216
8793
8794
8795
8796
8797
8232879816
8233879916
8234880016
......@@ -8248,11 +8814,16 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
82488814
8249881527
82508816
8817
8818
8251881916
8252882016
8253882116
8254882216
8255882316
8824
8825
8826
8256882716
8257882816
8258882916
......@@ -8261,6 +8832,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8261883227
8262883327
82638834
8835
8836
8837
8838
8264883919
8265884018
8266884119
......@@ -8274,6 +8849,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8274884916
8275885016
8276885116
8852
8853
8277885416
8278885516
8279885616
......@@ -8284,24 +8861,34 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
82848861
82858862
8286886333
8864
8287886516
8288886616
8289886716
82908868
82918869
82928870
8871
8293887227
82948873
8295887427
82968875
8876
8877
8297887816
8879
8880
8298888116
8882
8883
8299888427
83008885
83018886
8302888727
83038888
83048889
8890
8891
8305889216
8306889316
8307889416
......@@ -8334,6 +8921,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8334892116
8335892216
8336892316
8924
8925
8926
8337892716
83388928
8339892916
......@@ -8368,6 +8958,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
83688958
8369895916
8370896016
8961
8962
8371896316
8372896416
8373896516
......@@ -8387,48 +8979,93 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
83878979
83888980
8389898116
8982
8983
8984
8390898516
8391898616
8392898716
8988
8989
8393899016
8991
8992
8993
8394899416
8395899516
83968996
83978997
8398899816
8399899916
9000
9001
8400900216
8401900316
8402900416
8403900516
8404900616
84059007
9008
8406900916
8407901016
84089011
84099012
8410901316
84119014
9015
9016
8412901716
84139018
84149019
8415902016
8416902120
9022
9023
8417902420
9025
9026
9027
9028
8418902916
8419903016
9031
9032
8420903316
9034
8421903516
9036
9037
9038
8422903916
9040
9041
9042
8423904316
8424904416
9045
9046
8425904716
9048
9049
8426905016
9051
8427905216
9053
9054
9055
8428905616
9057
9058
9059
9060
8429906116
9062
9063
9064
8430906516
8431906616
9067
9068
8432906916
8433907016
8434907116
......@@ -8447,6 +9084,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
84479084
8448908516
8449908616
9087
9088
8450908916
8451909016
8452909116
......@@ -8468,7 +9107,10 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
8468910716
8469910816
8470910916
9110
9111
8471911216
9113
8472911416
8473911516
8474911616
......@@ -8482,14 +9124,17 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
84829124
8483912527
84849126
9127
8485912827
84869129
8487913027
84889131
9132
8489913327
84909134
8491913527
84929136
9137
8493913816
8494913916
8495914016
......@@ -9086,7 +9731,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
9086973116
9087973239 16
9088973316
908916
973442 16
90909735
9091973637
9092973737
......@@ -10212,17 +10857,19 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
102121085716
102131085816
102141085916
1086042
102151086116
102161086216
102171086316
102181086416
1086542 16
102191086616
102201086716
102211086816
102221086916
102231087016
102241087116
1022516
1087242
102261087316
102271087416
102281087516
......@@ -10252,9 +10899,9 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
102521089916
102531090016
102541090116
1025516
1090242 16
102561090330
1025716
1090442 16
102581090516
102591090616
102601090724
......@@ -10320,7 +10967,7 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
103201096716
103211096816
103221096916
1032316
1097042 16
103241097123
103251097216
103261097316
......@@ -10625,12 +11272,14 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
106251127216
106261127316
106271127416
1127542
106281127616
106291127716
106301127816
106311127916
106321128016
106331128116
1128242
106341128316
106351128416
106361128516
......@@ -10736,6 +11385,8 @@ arm-linux-gnueabi armeb-linux-gnueabi arm-linux-gnueabihf armeb-linux-gnueabihf
107361138516
107371138618
107381138716
1138842
1138942
107391139016
107401139116
107411139235
......@@ -11426,7 +12077,9 @@ sparc-linux-gnu sparcel-linux-gnu
114261207727
1142712078
114281207927
12080
114291208127
12082
114301208327
1143112084
1143212085
......@@ -11455,6 +12108,8 @@ sparc-linux-gnu sparcel-linux-gnu
1145512108
1145612109
1145712110
12111
12112
11458121130
11459121140
11460121150
......@@ -11463,43 +12118,79 @@ sparc-linux-gnu sparcel-linux-gnu
114631211827
1146412119
114651212027
12121
12122
114661212327
11467121241 16
114681212520
12126
12127
11469121285
11470121290
11471121300
114721213127
1147312132
114741213327
12134
114751213527
114761213627
1147712137
114781213827
12139
114791214027
1148012141
1148112142
1148212143
12144
11483121451
11484121461
11485121471
11486121480
11487121490
12150
12151
12152
12153
12154
12155
12156
12157
12158
12159
12160
12161
12162
12163
11488121640
114891216515
12166
11490121671
11491121681
12169
11492121701 16
12171
11493121720
11494121730
1149512174
11496121750
114971217616
12177
11498121780
12179
114991218027
1150012181
115011218227
12183
115021218427
12185
12186
12187
12188
12189
12190
12191
12192
12193
11503121940
11504121955
11505121965
......@@ -11527,29 +12218,50 @@ sparc-linux-gnu sparcel-linux-gnu
1152712218
1152812219
115291222020
12221
12222
11530122230
11531122241
11532122255
11533122260
1153412227
1153512228
12229
12230
12231
11536122320
12233
12234
12235
115371223627
1153812237
115391223827
12239
115401224027
115411224127
1154212242
115431224327
12244
115441224527
115451224627
1154612247
115471224827
1154812249
12250
115491225127
115501225235
1155112253
1155212254
12255
12256
12257
12258
12259
12260
12261
12262
12263
12264
11553122655
11554122660
115551226727
......@@ -11560,6 +12272,7 @@ sparc-linux-gnu sparcel-linux-gnu
1156012272
1156112273
1156212274
12275
11563122760
115641227716
115651227816
......@@ -11587,9 +12300,16 @@ sparc-linux-gnu sparcel-linux-gnu
1158712300
1158812301
1158912302
12303
12304
12305
12306
12307
12308
115901230927
1159112310
115921231127
12312
115931231327
11594123140
11595123151
......@@ -11598,6 +12318,8 @@ sparc-linux-gnu sparcel-linux-gnu
115981231816
11599123195
116001232015 16
12321
12322
11601123230
11602123245
11603123250
......@@ -11607,10 +12329,17 @@ sparc-linux-gnu sparcel-linux-gnu
11607123295
11608123300
11609123311
12332
12333
12334
12335
11610123365
116111233716
12338
12339
11612123405
11613123415
12342
11614123430
11615123441 5
116161234516
......@@ -11630,6 +12359,7 @@ sparc-linux-gnu sparcel-linux-gnu
116301235916
11631123605
11632123610
12362
11633123630
11634123640
116351236515
......@@ -11645,7 +12375,9 @@ sparc-linux-gnu sparcel-linux-gnu
116451237527
1164612376
116471237727
12378
116481237927
12380
11649123811
11650123821
11651123831
......@@ -11669,17 +12401,29 @@ sparc-linux-gnu sparcel-linux-gnu
1166912401
11670124020 16
116711240319
12404
116721240519
12406
116731240719
12408
116741240919
12410
116751241119
12412
116761241319
12414
116771241519
12416
116781241719
12418
116791241919
12420
116801242119
12422
116811242319
12424
116821242519
12426
11683124271
11684124281
116851242930
......@@ -11707,23 +12451,29 @@ sparc-linux-gnu sparcel-linux-gnu
117071245127
1170812452
117091245327
12454
117101245527
117111245627
1171212457
117131245827
12459
117141246027
117151246127
1171612462
117171246327
12464
117181246527
11719124661
11720124671
11721124681
1172212469
1172312470
12471
117241247227
1172512473
117261247427
12475
12476
117271247727
11728124781
11729124790
......@@ -11739,23 +12489,34 @@ sparc-linux-gnu sparcel-linux-gnu
11739124890
11740124900
11741124911
1249242
11742124931
11743124940
11744124950
117453 11
124963 8 11
12497
12498
12499
117461250027
1174712501
117481250227
12503
117491250427
12505
117501250627
1175112507
117521250827
12509
117531251027
117541251127
1175512512
12513
117561251427
12515
117571251627
117581251723
12518
12519
11759125200
1176012521
1176112522
......@@ -11794,17 +12555,26 @@ sparc-linux-gnu sparcel-linux-gnu
1179412555
1179512556
1179612557
12558
11797125590
11798125600
117991256119
1180012562
1180112563
12564
118021256511
1180312566
1180412567
1180512568
1180612569
12570
11807125711
12572
12573
12574
12575
12576
12577
11808125785
118091257916
118101258016
......@@ -11917,7 +12687,11 @@ sparc-linux-gnu sparcel-linux-gnu
11917126870
11918126880
119191268920
12690
12691
119201269220
12693
12694
11921126950
11922126965
119231269719
......@@ -11933,6 +12707,7 @@ sparc-linux-gnu sparcel-linux-gnu
119331270727
1193412708
119351270927
12710
119361271127
1193712712
119381271328
......@@ -11940,7 +12715,10 @@ sparc-linux-gnu sparcel-linux-gnu
119401271516
119411271616
119421271715 16
12718
11943127190 16
12720
12721
11944127220
11945127230
11946127240
......@@ -11971,6 +12749,11 @@ sparc-linux-gnu sparcel-linux-gnu
119711274914
119721275016
11973127511 5
12752
12753
12754
12755
12756
11974127571
11975127580
11976127590
......@@ -11989,12 +12772,17 @@ sparc-linux-gnu sparcel-linux-gnu
119891277227
1199012773
119911277427
12775
119921277627
12777
11993127785
11994127795
11995127805
11996127810
11997127825
12783
12784
12785
11998127868
11999127878
12000127888
......@@ -12002,7 +12790,11 @@ sparc-linux-gnu sparcel-linux-gnu
12002127900
120031279127
120041279227
12793
120051279427
12795
12796
12797
120061279819
120071279918
120081280019
......@@ -12016,6 +12808,8 @@ sparc-linux-gnu sparcel-linux-gnu
12016128080
12017128090
12018128105
12811
12812
12019128130
12020128140
12021128150
......@@ -12026,24 +12820,34 @@ sparc-linux-gnu sparcel-linux-gnu
1202612820
120271282116
120281282233
12823
12029128240
12030128250
12031128264
1203212827
1203312828
1203412829
12830
120351283127
1203612832
120371283327
12834
120381283527
12836
120391283715 16
12838
12839
120401284015 16
12841
12842
120411284327
1204212844
1204312845
120441284627
12847
120451284833
1204612849
12850
120471285116
1204812852
12049128535
......@@ -12076,6 +12880,9 @@ sparc-linux-gnu sparcel-linux-gnu
12076128800
12077128810
12078128821 16
12883
12884
12885
120791288612
1208012887
12081128881
......@@ -12110,6 +12917,8 @@ sparc-linux-gnu sparcel-linux-gnu
1211012917
12111129180
12112129191
12920
12921
12113129220
12114129232
12115129240
......@@ -12129,48 +12938,93 @@ sparc-linux-gnu sparcel-linux-gnu
1212912938
1213012939
121311294016
12941
12942
12943
12132129445
12133129455
121341294616
12947
12948
12135129490
12950
12951
12952
12136129530
121371295412
1213812955
1213912956
12140129571
12141129581
12959
12960
12142129611
12143129621
12144129631
12145129641
12146129651
1214712966
12967
121481296816
12149129690
1215012970
1215112971
12152129720
1215312973
12974
12975
12154129760
1215512977
1215612978
121571297912
121581298020
12981
12982
121591298320
12984
12985
12986
12987
12160129883
121611298915 16
12990
12991
12162129920 16
12993
121631299416
12995
12996
12997
121641299815 16
12999
13000
13001
12165130020 16
121661300315 16
13004
13005
121671300615 16
13007
13008
12168130090 16
13010
121691301116
13012
13013
13014
121701301516
13016
13017
13018
13019
121711302016
13021
13022
13023
12172130240
12173130250
13026
13027
121741302816
121751302916
121761303016
......@@ -12189,6 +13043,8 @@ sparc-linux-gnu sparcel-linux-gnu
1218913043
12190130440
12191130451
13046
13047
12192130480
12193130491
12194130500 16
......@@ -12210,7 +13066,10 @@ sparc-linux-gnu sparcel-linux-gnu
122101306616
12211130675
122121306816
13069
13070
12213130710
13072
12214130735
12215130745
12216130750
......@@ -12223,14 +13082,17 @@ sparc-linux-gnu sparcel-linux-gnu
122231308227
1222413083
122251308427
13085
122261308627
122271308727
1222813088
122291308927
13090
122301309127
122311309227
1223213093
122331309427
13095
122341309627
12235130971
12236130981
......@@ -12828,7 +13690,7 @@ sparc-linux-gnu sparcel-linux-gnu
12828136900
12829136910 39
12830136921
128311
136931 42
128321369437
128331369537
128341369637
......@@ -13954,17 +14816,19 @@ sparc-linux-gnu sparcel-linux-gnu
13954148160
13955148170
13956148180
1481942
13957148205
13958148211
13959148221
13960148230 1
1396114 15
1482414 15 42
13962148250
13963148261
13964148270
13965148280
13966148290
13967148300
1483142
13968148325 14
13969148331
13970148341 14
......@@ -13994,9 +14858,9 @@ sparc-linux-gnu sparcel-linux-gnu
13994148580
13995148590
13996148600
1399714 15
1486114 15 42
139981486230
139998
148638 42
14000148641
14001148655
140021486624
......@@ -14062,7 +14926,7 @@ sparc-linux-gnu sparcel-linux-gnu
14062149260
140631492715
14064149280
140650
149290 42
140661493023
14067149315
14068149325
......@@ -14367,12 +15231,14 @@ sparc-linux-gnu sparcel-linux-gnu
14367152310
14368152320
14369152330
1523442
14370152350
14371152360
14372152370
14373152380
14374152390
14375152400
1524142
14376152420
14377152430
14378152440
......@@ -14478,6 +15344,8 @@ sparc-linux-gnu sparcel-linux-gnu
14478153440
144791534518
14480153460
1534742
1534842
14481153490 16
144821535012 16
144831535135
......@@ -15168,7 +16036,9 @@ sparcv9-linux-gnu
151681603627
1516916037
151701603827
16039
151711604027
16041
151721604227
1517316043
1517416044
......@@ -15197,6 +16067,8 @@ sparcv9-linux-gnu
15197160675
15198160685
1519916069
16070
16071
15200160725
15201160735
15202160745
......@@ -15205,43 +16077,79 @@ sparcv9-linux-gnu
152051607727
1520616078
152071607927
16080
16081
152081608227
15209160835
152101608420
16085
16086
15211160875
15212160885
15213160895
152141609027
1521516091
152161609227
16093
152171609427
152181609527
1521916096
152201609727
16098
152211609927
1522216100
1522316101
1522416102
16103
15225161045
15226161055
15227161065
15228161075
15229161085
16109
16110
16111
16112
16113
16114
16115
16116
16117
16118
16119
16120
16121
16122
15230161235
152311612415
16125
15232161265
15233161275
16128
15234161295
16130
15235161315
15236161325
1523716133
15238161345
152391613516
16136
15240161375
16138
152411613927
1524216140
152431614127
16142
152441614327
16144
16145
16146
16147
16148
16149
16150
16151
16152
15245161535
15246161545
15247161555
......@@ -15269,29 +16177,50 @@ sparcv9-linux-gnu
1526916177
1527016178
152711617920
16180
16181
15272161825
15273161835
15274161845
15275161855
1527616186
1527716187
16188
16189
16190
15278161915
16192
16193
16194
152791619527
1528016196
152811619727
16198
152821619927
152831620027
1528416201
152851620227
16203
152861620427
152871620527
1528816206
152891620727
1529016208
16209
152911621027
152921621135
1529316212
1529416213
16214
16215
16216
16217
16218
16219
16220
16221
16222
16223
15295162245
15296162255
152971622627
......@@ -15302,6 +16231,7 @@ sparcv9-linux-gnu
1530216231
1530316232
1530416233
16234
15305162355
153061623616
153071623716
......@@ -15329,9 +16259,16 @@ sparcv9-linux-gnu
1532916259
1533016260
1533116261
16262
16263
16264
16265
16266
16267
153321626827
1533316269
153341627027
16271
153351627227
15336162735
15337162745
......@@ -15340,6 +16277,8 @@ sparcv9-linux-gnu
15340162775
15341162785
153421627915
16280
16281
15343162825
15344162835
15345162845
......@@ -15349,10 +16288,17 @@ sparcv9-linux-gnu
15349162885
15350162895
15351162905
16291
16292
16293
16294
15352162955
153531629616
16297
16298
15354162995
15355163005
16301
15356163025
15357163035
153581630416
......@@ -15372,6 +16318,7 @@ sparcv9-linux-gnu
153721631816
15373163195
15374163205
16321
15375163225
15376163235
153771632415
......@@ -15387,7 +16334,9 @@ sparcv9-linux-gnu
153871633427
1538816335
153891633627
16337
153901633827
16339
15391163405
15392163415
15393163425
......@@ -15411,17 +16360,29 @@ sparcv9-linux-gnu
1541116360
15412163615
154131636219
16363
154141636419
16365
154151636619
16367
154161636819
16369
154171637019
16371
154181637219
16373
154191637419
16375
154201637619
16377
154211637819
16379
154221638019
16381
154231638219
16383
154241638419
16385
15425163865
15426163875
154271638830
......@@ -15449,23 +16410,29 @@ sparcv9-linux-gnu
154491641027
1545016411
154511641227
16413
154521641427
154531641527
1545416416
154551641727
16418
154561641927
154571642027
1545816421
154591642227
16423
154601642427
15461164255
15462164265
15463164275
1546416428
1546516429
16430
154661643127
1546716432
154681643327
16434
16435
154691643627
15470164375
15471164385
......@@ -15481,23 +16448,34 @@ sparcv9-linux-gnu
15481164485
15482164495
15483164505
1645142
15484164525
15485164535
15486164545
1548711
164558 11
16456
16457
16458
154881645927
1548916460
154901646127
16462
154911646327
16464
154921646527
1549316466
154941646727
16468
154951646927
154961647027
1549716471
16472
154981647327
16474
154991647527
155001647623
16477
16478
15501164795
1550216480
1550316481
......@@ -15536,17 +16514,26 @@ sparcv9-linux-gnu
1553616514
1553716515
1553816516
16517
15539165185
15540165195
155411652019
1554216521
1554316522
16523
155441652411
1554516525
1554616526
1554716527
1554816528
16529
15549165305
16531
16532
16533
16534
16535
16536
15550165375
1555116538
1555216539
......@@ -15659,7 +16646,11 @@ sparcv9-linux-gnu
15659166465
15660166475
156611664820
16649
16650
156621665120
16652
16653
15663166545
15664166555
156651665619
......@@ -15675,6 +16666,7 @@ sparcv9-linux-gnu
156751666627
1567616667
156771666827
16669
156781667027
1567916671
156801667228
......@@ -15682,7 +16674,10 @@ sparcv9-linux-gnu
156821667416
156831667516
156841667615
16677
15685166785
16679
16680
15686166815
15687166825
15688166835
......@@ -15713,6 +16708,11 @@ sparcv9-linux-gnu
157131670814
157141670916
15715167105
16711
16712
16713
16714
16715
15716167165
15717167175
15718167185
......@@ -15731,12 +16731,17 @@ sparcv9-linux-gnu
157311673127
1573216732
157331673327
16734
157341673527
16736
15735167375
15736167385
15737167395
15738167405
15739167415
16742
16743
16744
15740167458
15741167468
15742167478
......@@ -15744,7 +16749,11 @@ sparcv9-linux-gnu
15744167495
157451675027
157461675127
16752
157471675327
16754
16755
16756
157481675719
157491675818
157501675919
......@@ -15758,6 +16767,8 @@ sparcv9-linux-gnu
15758167675
15759167685
15760167695
16770
16771
15761167725
15762167735
15763167745
......@@ -15768,24 +16779,34 @@ sparcv9-linux-gnu
1576816779
15769167805
157701678133
16782
15771167835
15772167845
15773167855
1577416786
1577516787
1577616788
16789
157771679027
1577816791
157791679227
16793
157801679427
16795
157811679615
16797
16798
157821679915
16800
16801
157831680227
1578416803
1578516804
157861680527
16806
157871680727
1578816808
16809
157891681016
1579016811
15791168125
......@@ -15818,6 +16839,9 @@ sparcv9-linux-gnu
15818168395
15819168405
15820168415
16842
16843
16844
158211684512
1582216846
15823168475
......@@ -15852,6 +16876,8 @@ sparcv9-linux-gnu
1585216876
15853168775
15854168785
16879
16880
15855168815
15856168825
15857168835
......@@ -15871,48 +16897,93 @@ sparcv9-linux-gnu
1587116897
1587216898
158731689916
16900
16901
16902
15874169035
15875169045
158761690516
16906
16907
15877169085
16909
16910
16911
15878169125
158791691312
1588016914
1588116915
15882169165
15883169175
16918
16919
15884169205
15885169215
15886169225
15887169235
15888169245
1588916925
16926
158901692716
15891169285
1589216929
1589316930
15894169315
1589516932
16933
16934
15896169355
1589716936
1589816937
158991693812
159001693920
16940
16941
159011694220
16943
16944
16945
16946
15902169475
159031694815
16949
16950
15904169515
16952
159051695316
16954
16955
16956
159061695715
16958
16959
16960
15907169615
159081696215
16963
16964
159091696515
16966
16967
15910169685
16969
159111697016
16971
16972
16973
159121697416
16975
16976
16977
16978
159131697916
16980
16981
16982
15914169835
15915169845
16985
16986
159161698716
159171698816
159181698916
......@@ -15931,6 +17002,8 @@ sparcv9-linux-gnu
1593117002
15932170035
15933170045
17005
17006
15934170075
15935170085
15936170095
......@@ -15952,7 +17025,10 @@ sparcv9-linux-gnu
159521702516
15953170265
159541702716
17028
17029
15955170305
17031
15956170325
15957170335
15958170345
......@@ -15965,14 +17041,17 @@ sparcv9-linux-gnu
159651704127
1596617042
159671704327
17044
159681704527
159691704627
1597017047
159711704827
17049
159721705027
159731705127
1597417052
159751705327
17054
159761705527
15977170565
15978170575
......@@ -16570,7 +17649,7 @@ sparcv9-linux-gnu
16570176495
16571176505 39
16572176515
165735
176525 42
165741765337
165751765437
165761765537
......@@ -17696,17 +18775,19 @@ sparcv9-linux-gnu
17696187755
17697187765
17698187775
1877842
17699187795
17700187805
17701187815
17702187825
1770314 15
1878314 15 42
17704187845
17705187855
17706187865
17707187875
17708187885
17709187895
1879042
17710187915 14
17711187925
17712187935 14
......@@ -17736,9 +18817,9 @@ sparcv9-linux-gnu
17736188175
17737188185
17738188195
1773914 15
1882014 15 42
177401882130
177418
188228 42
17742188235
17743188245
177441882524
......@@ -17804,7 +18885,7 @@ sparcv9-linux-gnu
17804188855
178051888615
17806188875
178075
188885 42
178081888923
17809188905
17810188915
......@@ -18109,12 +19190,14 @@ sparcv9-linux-gnu
18109191905
18110191915
18111191925
1919342
18112191945
18113191955
18114191965
18115191975
18116191985
18117191995
1920042
18118192015
18119192025
18120192035
......@@ -18220,6 +19303,8 @@ sparcv9-linux-gnu
18220193035
182211930418
18222193055
1930642
1930742
18223193085
182241930912
182251931035
......@@ -18910,7 +19995,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
189101999527
1891119996
189121999727
19998
189131999927
20000
189142000127
1891520002
1891620003
......@@ -18939,6 +20026,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1893920026
1894020027
1894120028
20029
20030
18942200310
18943200320
18944200330
......@@ -18947,43 +20036,79 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
189472003627
1894820037
189492003827
20039
20040
189502004127
18951200425
189522004320
20044
20045
18953200465
18954200470
18955200480
189562004927
1895720050
189582005127
20052
189592005327
189602005427
1896120055
189622005627
20057
189632005827
1896420059
1896520060
1896620061
20062
18967200635
18968200645
18969200655
18970200660
18971200670
20068
20069
20070
20071
20072
20073
20074
20075
20076
20077
20078
20079
20080
20081
18972200820
189732008315
20084
18974200855
18975200865
20087
18976200885
20089
18977200900
18978200910
1897920092
18980200930
189812009416
20095
18982200960
20097
189832009827
1898420099
189852010027
20101
189862010227
20103
20104
20105
20106
20107
20108
20109
20110
20111
18987201120
18988201135
18989201145
......@@ -19011,29 +20136,50 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1901120136
1901220137
190132013820
20139
20140
19014201410
19015201425
19016201435
19017201440
1901820145
1901920146
20147
20148
20149
19020201500
20151
20152
20153
190212015427
1902220155
190232015627
20157
190242015827
190252015927
1902620160
190272016127
20162
190282016327
190292016427
1903020165
190312016627
1903220167
20168
190332016927
190342017035
1903520171
1903620172
20173
20174
20175
20176
20177
20178
20179
20180
20181
20182
19037201835
19038201840
190392018527
......@@ -19044,6 +20190,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1904420190
1904520191
1904620192
20193
19047201940
190482019516
190492019616
......@@ -19071,9 +20218,16 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1907120218
1907220219
1907320220
20221
20222
20223
20224
20225
20226
190742022727
1907520228
190762022927
20230
190772023127
19078202320
19079202335
......@@ -19082,6 +20236,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19082202365
19083202375
190842023815
20239
20240
19085202410
19086202425
19087202430
......@@ -19091,10 +20247,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19091202475
19092202480
19093202495
20250
20251
20252
20253
19094202545
190952025516
20256
20257
19096202585
19097202595
20260
19098202610
19099202625
191002026316
......@@ -19114,6 +20277,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
191142027716
19115202785
19116202790
20280
19117202810
19118202820
191192028315
......@@ -19129,7 +20293,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
191292029327
1913020294
191312029527
20296
191322029727
20298
19133202995
19134203005
19135203015
......@@ -19153,17 +20319,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1915320319
19154203200
191552032119
20322
191562032319
20324
191572032519
20326
191582032719
20328
191592032919
20330
191602033119
20332
191612033319
20334
191622033519
20336
191632033719
20338
191642033919
20340
191652034119
20342
191662034319
20344
19167203455
19168203465
191692034730
......@@ -19191,23 +20369,29 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
191912036927
1919220370
191932037127
20372
191942037327
191952037427
1919620375
191972037627
20377
191982037827
191992037927
1920020380
192012038127
20382
192022038327
19203203845
19204203855
19205203865
1920620387
1920720388
20389
192082039027
1920920391
192102039227
20393
20394
192112039527
19212203965
19213203970
......@@ -19223,23 +20407,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19223204070
19224204080
19225204095
2041042
19226204115
19227204120
19228204130
1922911
204148 11
20415
20416
20417
192302041827
1923120419
192322042027
20421
192332042227
20423
192342042427
1923520425
192362042627
20427
192372042827
192382042927
1923920430
20431
192402043227
20433
192412043427
192422043523
20436
20437
19243204380
1924420439
1924520440
......@@ -19278,17 +20473,26 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1927820473
1927920474
1928020475
20476
19281204770
19282204780
192832047919
1928420480
1928520481
20482
192862048311
1928720484
1928820485
1928920486
1929020487
20488
19291204895
20490
20491
20492
20493
20494
20495
19292204965
1929320497
1929420498
......@@ -19401,7 +20605,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19401206050
19402206060
194032060720
20608
20609
194042061020
20611
20612
19405206130
19406206145
194072061519
......@@ -19417,6 +20625,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194172062527
1941820626
194192062727
20628
194202062927
1942120630
194222063128
......@@ -19424,7 +20633,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194242063316
194252063416
194262063515
20636
19427206370
20638
20639
19428206400
19429206410
19430206420
......@@ -19455,6 +20667,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194552066714
194562066816
19457206695
20670
20671
20672
20673
20674
19458206755
19459206760
19460206770
......@@ -19473,12 +20690,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
194732069027
1947420691
194752069227
20693
194762069427
20695
19477206965
19478206975
19479206985
19480206990
19481207005
20701
20702
20703
19482207048
19483207058
19484207068
......@@ -19486,7 +20708,11 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19486207080
194872070927
194882071027
20711
194892071227
20713
20714
20715
194902071619
194912071718
194922071819
......@@ -19500,6 +20726,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19500207260
19501207270
19502207285
20729
20730
19503207310
19504207320
19505207330
......@@ -19510,24 +20738,34 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1951020738
19511207395
195122074033
20741
19513207420
19514207430
19515207445
1951620745
1951720746
1951820747
20748
195192074927
1952020750
195212075127
20752
195222075327
20754
195232075515
20756
20757
195242075815
20759
20760
195252076127
1952620762
1952720763
195282076427
20765
195292076627
1953020767
20768
195312076916
195322077016
19533207715
......@@ -19560,6 +20798,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
19560207980
19561207990
19562208005
20801
20802
20803
195632080412
1956420805
19565208065
......@@ -19594,6 +20835,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1959420835
19595208360
19596208375
20838
20839
19597208400
19598208415
19599208420
......@@ -19613,48 +20856,93 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1961320856
1961420857
196152085816
20859
20860
20861
19616208625
19617208635
196182086416
20865
20866
19619208670
20868
20869
20870
19620208710
196212087212
1962220873
1962320874
19624208755
19625208765
20877
20878
19626208795
19627208805
19628208815
19629208825
19630208835
1963120884
20885
196322088616
19633208870
1963420888
1963520889
19636208900
1963720891
20892
20893
19638208940
1963920895
1964020896
196412089712
196422089820
20899
20900
196432090120
20902
20903
20904
20905
19644209065
196452090715
20908
20909
19646209100
20911
196472091216
20913
20914
20915
196482091615
20917
20918
20919
19649209200
196502092115
20922
20923
196512092415
20925
20926
19652209270
20928
196532092916
20930
20931
20932
196542093316
20934
20935
20936
20937
196552093816
20939
20940
20941
19656209420
19657209430
20944
20945
196582094616
196592094716
196602094816
......@@ -19673,6 +20961,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
1967320961
19674209620
19675209635
20964
20965
19676209660
19677209675
19678209680
......@@ -19694,7 +20984,10 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
196942098416
19695209855
196962098616
20987
20988
19697209890
20990
19698209915
19699209925
19700209930
......@@ -19707,14 +21000,17 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
197072100027
1970821001
197092100227
21003
197102100427
197112100527
1971221006
197132100727
21008
197142100927
197152101027
1971621011
197172101227
21013
197182101427
19719210155
19720210165
......@@ -20312,7 +21608,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
20312216080
20313216090 39
20314216105
203155
216115 42
203162161237
203172161337
203182161437
......@@ -21438,17 +22734,19 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
21438227340
21439227350
21440227360
2273742
21441227385
21442227395
21443227405
21444227410 5
2144514 15
2274214 15 42
21446227430
21447227445
21448227450
21449227460
21450227470
21451227480
2274942
21452227505 14
21453227515
21454227525 14
......@@ -21478,9 +22776,9 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
21478227760
21479227770
21480227780
2148114 15
2277914 15 42
214822278030
214838
227818 42
21484227825
21485227835
214862278424
......@@ -21546,7 +22844,7 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
21546228440
215472284515
21548228460
215490
228470 42
215502284823
21551228495
21552228505
......@@ -21851,12 +23149,14 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
21851231490
21852231500
21853231510
2315242
21854231530
21855231540
21856231550
21857231560
21858231570
21859231580
2315942
21860231600
21861231610
21862231620
......@@ -21962,6 +23262,8 @@ mips64el-linux-gnuabi64 mips64-linux-gnuabi64
21962232620
219632326318
21964232640
2326542
2326642
21965232670
219662326812
219672326935
......@@ -22652,7 +23954,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
226522395427
2265323955
226542395627
23957
226552395827
23959
226562396027
2265723961
2265823962
......@@ -22681,6 +23985,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2268123985
2268223986
2268323987
23988
23989
22684239900
22685239910
22686239920
......@@ -22689,43 +23995,79 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
226892399527
2269023996
226912399727
23998
23999
226922400027
22693240015
226942400220
24003
24004
22695240055
22696240060
22697240070
226982400827
2269924009
227002401027
24011
227012401227
227022401327
2270324014
227042401527
24016
227052401727
2270624018
2270724019
2270824020
24021
22709240225
22710240235
22711240245
22712240250
22713240260
24027
24028
24029
24030
24031
24032
24033
24034
24035
24036
24037
24038
24039
24040
22714240410
227152404215
24043
22716240445
22717240455
24046
22718240475
24048
22719240490
22720240500
2272124051
22722240520
227232405316
24054
22724240550
24056
227252405727
2272624058
227272405927
24060
227282406127
24062
24063
24064
24065
24066
24067
24068
24069
24070
22729240710
22730240725
22731240735
......@@ -22753,29 +24095,50 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2275324095
2275424096
227552409720
24098
24099
22756241000
22757241015
22758241025
22759241030
2276024104
2276124105
24106
24107
24108
22762241090
24110
24111
24112
227632411327
2276424114
227652411527
24116
227662411727
227672411827
2276824119
227692412027
24121
227702412227
227712412327
2277224124
227732412527
2277424126
24127
227752412827
227762412935
2277724130
2277824131
24132
24133
24134
24135
24136
24137
24138
24139
24140
24141
22779241425
22780241430
227812414427
......@@ -22786,6 +24149,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2278624149
2278724150
2278824151
24152
22789241530
227902415416
227912415516
......@@ -22813,9 +24177,16 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2281324177
2281424178
2281524179
24180
24181
24182
24183
24184
24185
228162418627
2281724187
228182418827
24189
228192419027
22820241910
22821241925
......@@ -22824,6 +24195,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22824241955
22825241965
228262419715
24198
24199
22827242000
22828242015
22829242020
......@@ -22833,10 +24206,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22833242065
22834242070
22835242085
24209
24210
24211
24212
22836242135
228372421416
24215
24216
22838242175
22839242185
24219
22840242200
22841242215
228422422216
......@@ -22856,6 +24236,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
228562423616
22857242375
22858242380
24239
22859242400
22860242410
228612424215
......@@ -22871,7 +24252,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
228712425227
2287224253
228732425427
24255
228742425627
24257
22875242585
22876242595
22877242605
......@@ -22895,17 +24278,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2289524278
22896242790
228972428019
24281
228982428219
24283
228992428419
24285
229002428619
24287
229012428819
24289
229022429019
24291
229032429219
24293
229042429419
24295
229052429619
24297
229062429819
24299
229072430019
24301
229082430219
24303
22909243045
22910243055
229112430630
......@@ -22933,23 +24328,29 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
229332432827
2293424329
229352433027
24331
229362433227
229372433327
2293824334
229392433527
24336
229402433727
229412433827
2294224339
229432434027
24341
229442434227
22945243435
22946243445
22947243455
2294824346
2294924347
24348
229502434927
2295124350
229522435127
24352
24353
229532435427
22954243555
22955243560
......@@ -22965,23 +24366,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
22965243660
22966243670
22967243685
2436942
22968243705
22969243710
22970243720
2297111
243738 11
24374
24375
24376
229722437727
2297324378
229742437927
24380
229752438127
24382
229762438327
2297724384
229782438527
24386
229792438727
229802438827
2298124389
24390
229822439127
24392
229832439327
229842439423
24395
24396
22985243970
2298624398
2298724399
......@@ -23020,17 +24432,26 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2302024432
2302124433
2302224434
24435
23023244360
23024244370
230252443819
2302624439
2302724440
24441
230282444211
2302924443
2303024444
2303124445
2303224446
24447
23033244485
24449
24450
24451
24452
24453
24454
23034244555
2303524456
2303624457
......@@ -23143,7 +24564,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23143245640
23144245650
231452456620
24567
24568
231462456920
24570
24571
23147245720
23148245735
231492457419
......@@ -23159,6 +24584,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
231592458427
2316024585
231612458627
24587
231622458827
2316324589
231642459028
......@@ -23166,7 +24592,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
231662459216
231672459316
231682459415
24595
23169245960
24597
24598
23170245990
23171246000
23172246010
......@@ -23197,6 +24626,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
231972462614
231982462716
23199246285
24629
24630
24631
24632
24633
23200246345
23201246350
23202246360
......@@ -23215,12 +24649,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
232152464927
2321624650
232172465127
24652
232182465327
24654
23219246555
23220246565
23221246575
23222246580
23223246595
24660
24661
24662
23224246638
23225246648
23226246658
......@@ -23228,7 +24667,11 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23228246670
232292466827
232302466927
24670
232312467127
24672
24673
24674
232322467519
232332467618
232342467719
......@@ -23242,6 +24685,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23242246850
23243246860
23244246875
24688
24689
23245246900
23246246910
23247246920
......@@ -23252,24 +24697,34 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2325224697
23253246985
232542469933
24700
23255247010
23256247020
23257247035
2325824704
2325924705
2326024706
24707
232612470827
2326224709
232632471027
24711
232642471227
24713
232652471415
24715
24716
232662471715
24718
24719
232672472027
2326824721
2326924722
232702472327
24724
232712472527
2327224726
24727
232732472816
232742472916
23275247305
......@@ -23302,6 +24757,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
23302247570
23303247580
23304247595
24760
24761
24762
233052476312
2330624764
23307247655
......@@ -23336,6 +24794,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2333624794
23337247950
23338247965
24797
24798
23339247990
23340248005
23341248010
......@@ -23355,48 +24815,93 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2335524815
2335624816
233572481716
24818
24819
24820
23358248215
23359248225
233602482316
24824
24825
23361248260
24827
24828
24829
23362248300
233632483112
2336424832
2336524833
23366248345
23367248355
24836
24837
23368248385
23369248395
23370248405
23371248415
23372248425
2337324843
24844
233742484516
23375248460
2337624847
2337724848
23378248490
2337924850
24851
24852
23380248530
2338124854
2338224855
233832485612
233842485720
24858
24859
233852486020
24861
24862
24863
24864
23386248655
233872486615
24867
24868
23388248690
24870
233892487116
24872
24873
24874
233902487515
24876
24877
24878
23391248790
233922488015
24881
24882
233932488315
24884
24885
23394248860
24887
233952488816
24889
24890
24891
233962489216
24893
24894
24895
24896
233972489716
24898
24899
24900
23398249010
23399249020
24903
24904
234002490516
234012490616
234022490716
......@@ -23415,6 +24920,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
2341524920
23416249210
23417249225
24923
24924
23418249250
23419249265
23420249270
......@@ -23436,7 +24943,10 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
234362494316
23437249445
234382494516
24946
24947
23439249480
24949
23440249505
23441249515
23442249520
......@@ -23449,14 +24959,17 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
234492495927
2345024960
234512496127
24962
234522496327
234532496427
2345424965
234552496627
24967
234562496827
234572496927
2345824970
234592497127
24972
234602497327
23461249745
23462249755
......@@ -24054,7 +25567,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
24054255670
24055255680 39
24056255695
240575
255705 42
240582557137
240592557237
240602557337
......@@ -25180,17 +26693,19 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
25180266930
25181266940
25182266950
2669642
25183266975
25184266985
25185266995
25186267000 5
2518714 15
2670114 15 42
25188267020
25189267035
25190267040
25191267050
25192267060
25193267070
2670842
25194267095 14
25195267105
25196267115 14
......@@ -25220,9 +26735,9 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
25220267350
25221267360
25222267370
2522314 15
2673814 15 42
252242673930
252258
267408 42
25226267415
25227267425
252282674324
......@@ -25288,7 +26803,7 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
25288268030
252892680415
25290268050
252910
268060 42
252922680723
25293268085
25294268095
......@@ -25593,12 +27108,14 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
25593271080
25594271090
25595271100
2711142
25596271120
25597271130
25598271140
25599271150
25600271160
25601271170
2711842
25602271190
25603271200
25604271210
......@@ -25704,6 +27221,8 @@ mips64el-linux-gnuabin32 mips64-linux-gnuabin32
25704272210
257052722218
25706272230
2722442
2722542
25707272260
257082722712
257092722835
......@@ -26398,6 +27917,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2639827917
2639927918
2640027919
27920
27921
26401279220
2640227923
2640327924
......@@ -26423,6 +27944,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2642327944
2642427945
2642527946
27947
27948
26426279490
26427279500
26428279510
......@@ -26432,8 +27955,12 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2643227955
264332795627
2643427957
27958
27959
26435279605
264362796120
27962
27963
26437279645
26438279650
26439279660
......@@ -26441,6 +27968,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2644127968
264422796927
2644327970
27971
264442797227
2644527973
264462797427
......@@ -26448,26 +27976,57 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2644827976
2644927977
2645027978
27979
27980
26451279815
26452279825
26453279835
26454279840
26455279850
27986
27987
27988
27989
27990
27991
27992
27993
27994
27995
27996
27997
27998
27999
26456280000
264572800115
28002
26458280035
26459280045
28005
26460280065
28007
26461280080
26462280090
2646328010
26464280110
264652801216
28013
26466280140
28015
264672801627
2646828017
264692801827
2647028019
28020
28021
28022
28023
28024
28025
28026
28027
28028
28029
26471280300
26472280315
26473280325
......@@ -26495,29 +28054,50 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2649528054
2649628055
264972805620
28057
28058
26498280590
26499280605
26500280615
26501280620
2650228063
2650328064
28065
28066
28067
26504280680
28069
28070
28071
265052807227
2650628073
265072807427
2650828075
28076
265092807727
2651028078
265112807927
2651228080
28081
265132808227
2651428083
265152808427
2651628085
2651728086
28087
265182808835
2651928089
2652028090
28091
28092
28093
28094
28095
28096
28097
28098
28099
28100
26521281015
26522281020
265232810327
......@@ -26528,6 +28108,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2652828108
2652928109
2653028110
28111
26531281120
265322811316
265332811416
......@@ -26555,10 +28136,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2655528136
2655628137
2655728138
28139
28140
28141
28142
28143
28144
265582814527
2655928146
265602814727
2656128148
28149
26562281500
26563281515
26564281525
......@@ -26566,6 +28154,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2656628154
26567281555
265682815615
28157
28158
26569281590
26570281605
26571281610
......@@ -26575,10 +28165,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26575281655
26576281660
26577281675
28168
28169
28170
28171
26578281725
265792817316
28174
28175
26580281765
26581281775
28178
26582281790
26583281805
265842818116
......@@ -26598,6 +28195,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
265982819516
26599281965
26600281970
28198
26601281990
26602282000
266032820115
......@@ -26614,6 +28212,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2661428212
266152821327
2661628214
28215
28216
26617282175
26618282185
26619282195
......@@ -26637,17 +28237,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2663728237
26638282380
266392823919
28240
266402824119
28242
266412824319
28244
266422824519
28246
266432824719
28248
266442824919
28250
266452825119
28252
266462825319
28254
266472825519
28256
266482825719
28258
266492825919
28260
266502826119
28262
26651282635
26652282645
266532826530
......@@ -26676,23 +28288,29 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2667628288
266772828927
2667828290
28291
266792829227
2668028293
266812829427
2668228295
28296
266832829727
2668428298
266852829927
2668628300
28301
26687283025
26688283035
26689283045
2669028305
2669128306
28307
266922830827
2669328309
266942831027
2669528311
28312
28313
26696283145
26697283150
26698283165
......@@ -26707,23 +28325,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26707283250
26708283260
26709283275
2832842
26710283295
26711283300
26712283310
2671311
283328 11
28333
28334
28335
267142833627
2671528337
267162833827
2671728339
28340
28341
267182834227
2671928343
267202834427
2672128345
28346
267222834727
2672328348
28349
267242835027
2672528351
28352
267262835323
28354
28355
26727283560
2672828357
2672928358
......@@ -26762,17 +28391,26 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
267622839130
267632839230
2676428393
28394
26765283950
26766283960
267672839719
2676828398
2676928399
28400
267702840111
2677128402
2677228403
2677328404
2677428405
28406
26775284075
28408
28409
28410
28411
28412
28413
26776284145
2677728415
2677828416
......@@ -26885,7 +28523,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26885285230
26886285240
268872852520
28526
28527
268882852820
28529
28530
26889285310
26890285325
268912853319
......@@ -26903,12 +28545,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
269032854527
2690428546
2690528547
28548
269062854928
26907285505
269082855116
269092855216
269102855315
28554
26911285550
28556
28557
26912285580
26913285590
26914285600
......@@ -26939,6 +28585,11 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
269392858514
269402858616
26941285875
28588
28589
28590
28591
28592
26942285935
26943285940
26944285950
......@@ -26958,11 +28609,16 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2695828609
269592861027
2696028611
28612
28613
26961286145
26962286155
26963286165
26964286170
26965286185
28619
28620
28621
26966286228
26967286238
26968286248
......@@ -26971,6 +28627,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
269712862727
269722862827
2697328629
28630
28631
28632
28633
269742863419
269752863518
269762863619
......@@ -26984,6 +28644,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
26984286440
26985286450
26986286465
28647
28648
26987286490
26988286500
26989286510
......@@ -26994,24 +28656,34 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2699428656
2699528657
269962865833
28659
26997286600
26998286610
26999286625
2700028663
2700128664
2700228665
28666
270032866727
2700428668
270052866927
2700628670
28671
28672
270072867315
28674
28675
270082867615
28677
28678
270092867927
2701028680
2701128681
270122868227
2701328683
2701428684
28685
28686
270152868716
270162868816
27017286895
......@@ -27044,6 +28716,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
27044287160
27045287170
27046287185
28719
28720
28721
270472872212
2704828723
27049287245
......@@ -27078,6 +28753,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2707828753
27079287540
27080287555
28756
28757
27081287580
27082287595
27083287600
......@@ -27097,48 +28774,93 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2709728774
2709828775
270992877616
28777
28778
28779
27100287805
27101287815
271022878216
28783
28784
27103287850
28786
28787
28788
27104287890
271052879012
2710628791
2710728792
27108287935
27109287945
28795
28796
27110287975
27111287985
27112287995
27113288005
27114288015
2711528802
28803
271162880416
27117288050
2711828806
2711928807
27120288080
2712128809
28810
28811
27122288120
2712328813
2712428814
271252881512
271262881620
28817
28818
271272881920
28820
28821
28822
28823
27128288245
271292882515
28826
28827
27130288280
28829
271312883016
28831
28832
28833
271322883415
28835
28836
28837
27133288380
271342883915
28840
28841
271352884215
28843
28844
27136288450
28846
271372884716
28848
28849
28850
271382885116
28852
28853
28854
28855
271392885616
28857
28858
28859
27140288600
27141288610
28862
28863
271422886416
271432886516
271442886616
......@@ -27157,6 +28879,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2715728879
27158288800
27159288815
28882
28883
27160288840
27161288855
27162288860
......@@ -27178,7 +28902,10 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
271782890216
27179289035
271802890416
28905
28906
27181289070
28908
27182289095
27183289105
27184289110
......@@ -27192,14 +28919,17 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
2719228919
271932892027
2719428921
28922
271952892327
2719628924
271972892527
2719828926
28927
271992892827
2720028929
272012893027
2720228931
28932
27203289335
27204289345
27205289355
......@@ -27796,7 +29526,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
27796295260
27797295270 39
27798295285
277995
295295 42
2780029530
278012953137
278022953237
......@@ -28922,17 +30652,19 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
28922306520
28923306530
28924306540
3065542
28925306565
28926306575
28927306585
28928306590 5
2892914 15
3066014 15 42
28930306610
28931306625
28932306630
28933306640
28934306650
28935306660
3066742
28936306685 14
28937306695
28938306705 14
......@@ -28962,9 +30694,9 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
28962306940
28963306950
28964306960
2896514 15
3069714 15 42
289663069830
289678
306998 42
28968307005
28969307015
289703070224
......@@ -29030,7 +30762,7 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
29030307620
290313076315
29032307640
290330
307650 42
290343076623
29035307675
29036307685
......@@ -29335,12 +31067,14 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
29335310670
29336310680
29337310690
3107042
29338310710
29339310720
29340310730
29341310740
29342310750
29343310760
3107742
29344310780
29345310790
29346310800
......@@ -29446,6 +31180,8 @@ mipsel-linux-gnueabihf mips-linux-gnueabihf
29446311800
294473118118
29448311820
3118342
3118442
29449311850
294503118612
294513118735
......@@ -30140,6 +31876,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3014031876
3014131877
3014231878
31879
31880
30143318810
3014431882
3014531883
......@@ -30165,6 +31903,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3016531903
3016631904
3016731905
31906
31907
30168319080
30169319090
30170319100
......@@ -30174,8 +31914,12 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3017431914
301753191527
3017631916
31917
31918
30177319195
301783192020
31921
31922
30179319235
30180319240
30181319250
......@@ -30183,6 +31927,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3018331927
301843192827
3018531929
31930
301863193127
3018731932
301883193327
......@@ -30190,26 +31935,57 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3019031935
3019131936
3019231937
31938
31939
30193319405
30194319415
30195319425
30196319430
30197319440
31945
31946
31947
31948
31949
31950
31951
31952
31953
31954
31955
31956
31957
31958
30198319590
301993196015
31961
30200319625
30201319635
31964
30202319655
31966
30203319670
30204319680
3020531969
30206319700
302073197116
31972
30208319730
31974
302093197527
3021031976
302113197727
3021231978
31979
31980
31981
31982
31983
31984
31985
31986
31987
31988
30213319890
30214319905
30215319915
......@@ -30237,29 +32013,50 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3023732013
3023832014
302393201520
32016
32017
30240320180
30241320195
30242320205
30243320210
3024432022
3024532023
32024
32025
32026
30246320270
32028
32029
32030
302473203127
3024832032
302493203327
3025032034
32035
302513203627
3025232037
302533203827
3025432039
32040
302553204127
3025632042
302573204327
3025832044
3025932045
32046
302603204735
3026132048
3026232049
32050
32051
32052
32053
32054
32055
32056
32057
32058
32059
30263320605
30264320610
302653206227
......@@ -30270,6 +32067,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3027032067
3027132068
3027232069
32070
30273320710
302743207216
302753207316
......@@ -30297,10 +32095,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3029732095
3029832096
3029932097
32098
32099
32100
32101
32102
32103
303003210427
3030132105
303023210627
3030332107
32108
30304321090
30305321105
30306321115
......@@ -30308,6 +32113,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3030832113
30309321145
303103211515
32116
32117
30311321180
30312321195
30313321200
......@@ -30317,10 +32124,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30317321245
30318321250
30319321265
32127
32128
32129
32130
30320321315
303213213216
32133
32134
30322321355
30323321365
32137
30324321380
30325321395
303263214016
......@@ -30340,6 +32154,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
303403215416
30341321555
30342321560
32157
30343321580
30344321590
303453216015
......@@ -30356,6 +32171,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3035632171
303573217227
3035832173
32174
32175
30359321765
30360321775
30361321785
......@@ -30379,17 +32196,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3037932196
30380321970
303813219819
32199
303823220019
32201
303833220219
32203
303843220419
32205
303853220619
32207
303863220819
32209
303873221019
32211
303883221219
32213
303893221419
32215
303903221619
32217
303913221819
32219
303923222019
32221
30393322225
30394322235
303953222430
......@@ -30418,23 +32247,29 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3041832247
304193224827
3042032249
32250
304213225127
3042232252
304233225327
3042432254
32255
304253225627
3042632257
304273225827
3042832259
32260
30429322615
30430322625
30431322635
3043232264
3043332265
32266
304343226727
3043532268
304363226927
3043732270
32271
32272
30438322735
30439322740
30440322755
......@@ -30449,23 +32284,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30449322840
30450322850
30451322865
3228742
30452322885
30453322890
30454322900
3045511
322918 11
32292
32293
32294
304563229527
3045732296
304583229727
3045932298
32299
32300
304603230127
3046132302
304623230327
3046332304
32305
304643230627
3046532307
32308
304663230927
3046732310
32311
304683231223
32313
32314
30469323150
3047032316
3047132317
......@@ -30504,17 +32350,26 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3050432350
3050532351
3050632352
32353
30507323540
30508323550
305093235619
3051032357
3051132358
32359
305123236011
3051332361
3051432362
3051532363
3051632364
32365
30517323665
32367
32368
32369
32370
32371
32372
30518323735
3051932374
3052032375
......@@ -30627,7 +32482,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30627324820
30628324830
306293248420
32485
32486
306303248720
32488
32489
30631324900
30632324915
306333249219
......@@ -30645,12 +32504,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi
306453250427
3064632505
3064732506
32507
306483250828
30649325095
306503251016
306513251116
306523251215
32513
30653325140
32515
32516
30654325170
30655325180
30656325190
......@@ -30681,6 +32544,11 @@ mipsel-linux-gnueabi mips-linux-gnueabi
306813254414
306823254516
30683325465
32547
32548
32549
32550
32551
30684325525
30685325530
30686325540
......@@ -30700,11 +32568,16 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3070032568
307013256927
3070232570
32571
32572
30703325735
30704325745
30705325755
30706325760
30707325775
32578
32579
32580
30708325818
30709325828
30710325838
......@@ -30713,6 +32586,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi
307133258627
307143258727
3071532588
32589
32590
32591
32592
307163259319
307173259418
307183259519
......@@ -30726,6 +32603,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30726326030
30727326040
30728326055
32606
32607
30729326080
30730326090
30731326100
......@@ -30736,24 +32615,34 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3073632615
3073732616
307383261733
32618
30739326190
30740326200
30741326215
3074232622
3074332623
3074432624
32625
307453262627
3074632627
307473262827
3074832629
32630
32631
307493263215
32633
32634
307503263515
32636
32637
307513263827
3075232639
3075332640
307543264127
3075532642
3075632643
32644
32645
307573264616
307583264716
30759326485
......@@ -30786,6 +32675,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi
30786326750
30787326760
30788326775
32678
32679
32680
307893268112
3079032682
30791326835
......@@ -30820,6 +32712,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3082032712
30821327130
30822327145
32715
32716
30823327170
30824327185
30825327190
......@@ -30839,48 +32733,93 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3083932733
3084032734
308413273516
32736
32737
32738
30842327395
30843327405
308443274116
32742
32743
30845327440
32745
32746
32747
30846327480
308473274912
3084832750
3084932751
30850327525
30851327535
32754
32755
30852327565
30853327575
30854327585
30855327595
30856327605
3085732761
32762
308583276316
30859327640
3086032765
3086132766
30862327670
3086332768
32769
32770
30864327710
3086532772
3086632773
308673277412
308683277520
32776
32777
308693277820
32779
32780
32781
32782
30870327835
308713278415
32785
32786
30872327870
32788
308733278916
32790
32791
32792
308743279315
32794
32795
32796
30875327970
308763279815
32799
32800
308773280115
32802
32803
30878328040
32805
308793280616
32807
32808
32809
308803281016
32811
32812
32813
32814
308813281516
32816
32817
32818
30882328190
30883328200
32821
32822
308843282316
308853282416
308863282516
......@@ -30899,6 +32838,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3089932838
30900328390
30901328405
32841
32842
30902328430
30903328445
30904328450
......@@ -30920,7 +32861,10 @@ mipsel-linux-gnueabi mips-linux-gnueabi
309203286116
30921328625
309223286316
32864
32865
30923328660
32867
30924328685
30925328695
30926328700
......@@ -30934,14 +32878,17 @@ mipsel-linux-gnueabi mips-linux-gnueabi
3093432878
309353287927
3093632880
32881
309373288227
3093832883
309393288427
3094032885
32886
309413288727
3094232888
309433288927
3094432890
32891
30945328925
30946328935
30947328945
......@@ -31538,7 +33485,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
31538334850
31539334860 39
31540334875
315415
334885 42
3154233489
315433349037
315443349137
......@@ -32664,17 +34611,19 @@ mipsel-linux-gnueabi mips-linux-gnueabi
32664346110
32665346120
32666346130
3461442
32667346155
32668346165
32669346175
32670346180 5
3267114 15
3461914 15 42
32672346200
32673346215
32674346220
32675346230
32676346240
32677346250
3462642
32678346275 14
32679346285
32680346295 14
......@@ -32704,9 +34653,9 @@ mipsel-linux-gnueabi mips-linux-gnueabi
32704346530
32705346540
32706346550
3270714 15
3465614 15 42
327083465730
327098
346588 42
32710346595
32711346605
327123466124
......@@ -32772,7 +34721,7 @@ mipsel-linux-gnueabi mips-linux-gnueabi
32772347210
327733472215
32774347230
327750
347240 42
327763472523
32777347265
32778347275
......@@ -33077,12 +35026,14 @@ mipsel-linux-gnueabi mips-linux-gnueabi
33077350260
33078350270
33079350280
3502942
33080350300
33081350310
33082350320
33083350330
33084350340
33085350350
3503642
33086350370
33087350380
33088350390
......@@ -33188,6 +35139,8 @@ mipsel-linux-gnueabi mips-linux-gnueabi
33188351390
331893514018
33190351410
3514242
3514342
33191351440
331923514512
331933514635
......@@ -33878,7 +35831,9 @@ x86_64-linux-gnu
338783583127
338793583236
338803583327
35834
338813583527
35836
338823583727
3388335838
3388435839
......@@ -33907,6 +35862,8 @@ x86_64-linux-gnu
3390735862
3390835863
339093586410
35865
35866
339103586710
339113586810
339123586910
......@@ -33915,43 +35872,79 @@ x86_64-linux-gnu
339153587227
339163587336
339173587427
35875
35876
339183587727
339193587810
339203587920
35880
35881
339213588210
339223588310
339233588410
339243588527
339253588636
339263588727
35888
339273588927
339283589027
339293589136
339303589227
35893
339313589427
3393235895
3393335896
3393435897
35898
339353589910
339363590010
339373590110
339383590210
339393590310
35904
35905
35906
35907
35908
35909
35910
35911
35912
35913
35914
35915
35916
35917
339403591810
339413591915
35920
339423592110
339433592210
35923
339443592410
35925
339453592610
339463592710
3394735928
339483592910
339493593016
35931
339503593210
35933
339513593427
339523593536
339533593627
35937
339543593827
35939
35940
35941
35942
35943
35944
35945
35946
35947
339553594810
339563594910
339573595010
......@@ -33979,29 +35972,50 @@ x86_64-linux-gnu
3397935972
3398035973
339813597420
35975
35976
339823597710
339833597810
339843597910
339853598010
3398635981
3398735982
35983
35984
35985
339883598610
35987
35988
35989
339893599027
339903599136
339913599227
35993
339923599427
339933599527
339943599636
339953599727
35998
339963599927
339973600027
339983600136
339993600227
3400036003
36004
340013600527
340023600635
3400336007
3400436008
36009
36010
36011
36012
36013
36014
36015
36016
36017
36018
340053601910
340063602010
340073602127
......@@ -34011,6 +36025,7 @@ x86_64-linux-gnu
3401136025
3401236026
3401336027
36028
340143602925
340153603010
340163603116
......@@ -34039,9 +36054,16 @@ x86_64-linux-gnu
3403936054
3404036055
3404136056
36057
36058
36059
36060
36061
36062
340423606327
340433606436
340443606527
36066
340453606727
340463606810
340473606910
......@@ -34050,6 +36072,8 @@ x86_64-linux-gnu
340503607210
340513607310
340523607415
36075
36076
340533607710
340543607810
3405536079
......@@ -34059,10 +36083,17 @@ x86_64-linux-gnu
340593608310
340603608410
340613608510
36086
36087
36088
36089
340623609010
340633609116
36092
36093
340643609410
340653609510
36096
340663609710
340673609810
340683609916
......@@ -34082,6 +36113,7 @@ x86_64-linux-gnu
340823611316
340833611410
340843611510
36116
340853611710
340863611810
340873611915
......@@ -34097,7 +36129,9 @@ x86_64-linux-gnu
340973612927
340983613036
340993613127
36132
341003613327
36134
341013613510
341023613610
341033613710
......@@ -34121,17 +36155,29 @@ x86_64-linux-gnu
341213615536
341223615610
341233615719
36158
341243615919
36160
341253616119
36162
341263616319
36164
341273616519
36166
341283616719
36168
341293616919
36170
341303617119
36172
341313617319
36174
341323617519
36176
341333617719
36178
341343617919
36180
341353618110
341363618210
341373618330
......@@ -34159,23 +36205,29 @@ x86_64-linux-gnu
341593620527
341603620636
341613620727
36208
341623620927
341633621027
341643621136
341653621227
36213
341663621427
341673621527
341683621636
341693621727
36218
341703621927
341713622010
341723622110
341733622210
3417436223
3417536224
36225
341763622627
341773622736
341783622827
36229
36230
341793623127
341803623210
341813623310
......@@ -34191,23 +36243,34 @@ x86_64-linux-gnu
341913624310
341923624410
341933624510
3624642
341943624710
341953624810
341963624910
341973625011
36251
36252
36253
341983625427
341993625536
342003625627
36257
342013625827
36259
342023626027
342033626136
342043626227
36263
342053626427
342063626527
36266
342073626736
342083626827
36269
342093627027
342103627123
36272
36273
342113627410
3421236275
3421336276
......@@ -34246,17 +36309,26 @@ x86_64-linux-gnu
3424636309
3424736310
3424836311
36312
342493631310
342503631410
342513631519
3425236316
3425336317
36318
342543631911
3425536320
3425636321
3425736322
3425836323
36324
342593632510
36326
36327
36328
36329
36330
36331
342603633210
3426136333
3426236334
......@@ -34369,7 +36441,11 @@ x86_64-linux-gnu
343693644110
343703644210
343713644320
36444
36445
343723644620
36447
36448
343733644910
343743645010
343753645119
......@@ -34385,6 +36461,7 @@ x86_64-linux-gnu
343853646127
343863646236
343873646327
36464
343883646527
3438936466
343903646728
......@@ -34392,7 +36469,10 @@ x86_64-linux-gnu
343923646916
343933647016
343943647115
36472
343953647310
36474
36475
343963647610
343973647710
343983647810
......@@ -34423,6 +36503,11 @@ x86_64-linux-gnu
344233650314
344243650416
344253650510
36506
36507
36508
36509
36510
344263651110
344273651210
344283651310
......@@ -34441,12 +36526,17 @@ x86_64-linux-gnu
344413652627
344423652736
344433652827
36529
344443653027
36531
344453653210
344463653310
344473653410
344483653510
344493653610
36537
36538
36539
344503654010
344513654110
344523654210
......@@ -34454,7 +36544,11 @@ x86_64-linux-gnu
344543654410
344553654527
344563654627
36547
344573654827
36549
36550
36551
344583655219
344593655318
344603655419
......@@ -34468,6 +36562,8 @@ x86_64-linux-gnu
344683656210
344693656310
344703656410
36565
36566
344713656710
344723656810
344733656910
......@@ -34478,24 +36574,34 @@ x86_64-linux-gnu
344783657436
344793657510
344803657633
36577
344813657810
344823657910
344833658010
3448436581
3448536582
3448636583
36584
344873658527
344883658636
344893658727
36588
344903658927
36590
344913659115
36592
36593
344923659415
36595
36596
344933659727
3449436598
344953659936
344963660027
36601
344973660227
3449836603
36604
344993660516
3450036606
345013660710
......@@ -34528,6 +36634,9 @@ x86_64-linux-gnu
345283663410
345293663510
345303663610
36637
36638
36639
345313664012
3453236641
345333664210
......@@ -34562,6 +36671,8 @@ x86_64-linux-gnu
345623667136
345633667210
345643667310
36674
36675
345653667610
345663667710
345673667810
......@@ -34581,48 +36692,93 @@ x86_64-linux-gnu
3458136692
3458236693
345833669416
36695
36696
36697
345843669810
345853669910
345863670016
36701
36702
345873670310
36704
36705
36706
345883670710
345893670812
3459036709
3459136710
345923671110
345933671210
36713
36714
345943671510
345953671610
345963671710
345973671810
345983671910
3459936720
36721
346003672216
346013672310
3460236724
3460336725
346043672610
3460536727
36728
36729
346063673010
3460736731
3460836732
346093673312
346103673420
36735
36736
346113673720
36738
36739
36740
36741
346123674210
346133674315
36744
36745
346143674610
36747
346153674816
36749
36750
36751
346163675215
36753
36754
36755
346173675610
346183675715
36758
36759
346193676015
36761
36762
346203676310
36764
346213676516
36766
36767
36768
346223676916
36770
36771
36772
36773
346233677416
36775
36776
36777
346243677810
346253677910
36780
36781
346263678216
346273678316
346283678416
......@@ -34641,6 +36797,8 @@ x86_64-linux-gnu
346413679736
346423679810
346433679910
36800
36801
346443680210
346453680310
346463680410
......@@ -34662,7 +36820,10 @@ x86_64-linux-gnu
346623682016
346633682110
346643682216
36823
36824
346653682510
36826
346663682710
346673682810
346683682910
......@@ -34675,14 +36836,17 @@ x86_64-linux-gnu
346753683627
346763683736
346773683827
36839
346783684027
346793684127
346803684236
346813684327
36844
346823684527
346833684627
346843684736
346853684827
36849
346863685027
346873685110
346883685210
......@@ -35280,7 +37444,7 @@ x86_64-linux-gnu
352803744410
352813744510 39
352823744610
3528310
3744710 42
352843744836
352853744937
352863745037
......@@ -36406,17 +38570,19 @@ x86_64-linux-gnu
364063857010
364073857110
364083857210
3857342
364093857410
364103857510
364113857610
364123857710
3641314 15
3857814 15 42
364143857910
364153858010
364163858110
364173858210
364183858310
364193858410
3858542
364203858610
364213858710
364223858810
......@@ -36446,9 +38612,9 @@ x86_64-linux-gnu
364463861210
364473861310
364483861410
3644914 15
3861514 15 42
364503861630
3645110
3861710 42
364523861810
364533861910
364543862024
......@@ -36514,7 +38680,7 @@ x86_64-linux-gnu
365143868010
365153868115
365163868210
3651710
3868310 42
365183868423
365193868510
365203868610
......@@ -36819,12 +38985,14 @@ x86_64-linux-gnu
368193898510
368203898610
368213898710
3898842
368223898910
368233899010
368243899110
368253899210
368263899310
368273899410
3899542
368283899610
368293899710
368303899810
......@@ -36930,6 +39098,8 @@ x86_64-linux-gnu
369303909810
369313909918
369323910010
3910142
3910242
369333910310
369343910412
369353910535
......@@ -37620,7 +39790,9 @@ x86_64-linux-gnux32
376203979028
376213979136
376223979228
39793
376233979428
39795
376243979628
3762539797
3762639798
......@@ -37649,6 +39821,8 @@ x86_64-linux-gnux32
3764939821
3765039822
376513982328
39824
39825
376523982628
376533982728
376543982828
......@@ -37657,47 +39831,83 @@ x86_64-linux-gnux32
376573983128
376583983236
376593983328
39834
39835
376603983628
376613983728
376623983828
39839
39840
376633984128
376643984228
376653984328
376663984428
376673984536
376683984628
39847
376693984828
376703984928
376713985036
376723985128
39852
376733985328
3767439854
3767539855
3767639856
39857
376773985828
376783985928
376793986028
376803986128
376813986228
39863
39864
39865
39866
39867
39868
39869
39870
39871
39872
39873
39874
39875
39876
376823987728
376833987828
39879
376843988028
376853988128
39882
376863988328
39884
376873988528
376883988628
3768939887
376903988828
376913988928
39890
376923989128
39892
376933989328
376943989436
376953989528
39896
376963989728
3769739898
3769839899
3769939900
3770039901
39902
39903
39904
39905
39906
39907
39908
39909
39910
377013991128
377023991228
3770339913
......@@ -37721,29 +39931,50 @@ x86_64-linux-gnux32
3772139931
3772239932
377233993328
39934
39935
377243993628
377253993728
377263993828
377273993928
3772839940
3772939941
39942
39943
39944
377303994528
39946
39947
39948
377313994928
377323995036
377333995128
39952
377343995328
377353995428
377363995536
377373995628
39957
377383995828
377393995928
377403996036
377413996128
3774239962
39963
377433996428
377443996535
3774539966
3774639967
39968
39969
39970
39971
39972
39973
39974
39975
39976
39977
377473997828
377483997928
377493998028
......@@ -37753,6 +39984,7 @@ x86_64-linux-gnux32
3775339984
3775439985
3775539986
39987
377563998828
377573998928
377583999028
......@@ -37781,9 +40013,16 @@ x86_64-linux-gnux32
3778140013
3778240014
3778340015
40016
40017
40018
40019
40020
40021
377844002228
377854002336
377864002428
40025
377874002628
377884002728
377894002828
......@@ -37792,6 +40031,8 @@ x86_64-linux-gnux32
377924003128
377934003228
377944003328
40034
40035
377954003628
377964003728
3779740038
......@@ -37801,10 +40042,17 @@ x86_64-linux-gnux32
378014004228
378024004328
378034004428
40045
40046
40047
40048
378044004928
378054005028
40051
40052
378064005328
378074005428
40055
378084005628
378094005728
378104005828
......@@ -37824,6 +40072,7 @@ x86_64-linux-gnux32
378244007228
378254007328
378264007428
40075
378274007628
378284007728
378294007828
......@@ -37839,7 +40088,9 @@ x86_64-linux-gnux32
378394008828
378404008936
378414009028
40091
378424009228
40093
378434009428
378444009528
378454009628
......@@ -37863,17 +40114,29 @@ x86_64-linux-gnux32
378634011436
378644011528
378654011628
40117
378664011828
40119
378674012028
40121
378684012228
40123
378694012428
40125
378704012628
40127
378714012828
40129
378724013028
40131
378734013228
40133
378744013428
40135
378754013628
40137
378764013828
40139
378774014028
378784014128
378794014230
......@@ -37901,23 +40164,29 @@ x86_64-linux-gnux32
379014016428
379024016536
379034016628
40167
379044016828
379054016928
379064017036
379074017128
40172
379084017328
379094017428
379104017536
379114017628
40177
379124017828
379134017928
379144018028
379154018128
3791640182
3791740183
40184
379184018528
379194018636
379204018728
40188
40189
379214019028
379224019128
379234019228
......@@ -37933,23 +40202,34 @@ x86_64-linux-gnux32
379334020228
379344020328
379354020428
4020542
379364020628
379374020728
379384020828
3793940209
40210
40211
40212
379404021328
379414021436
379424021528
40216
379434021728
40218
379444021928
379454022036
379464022128
40222
379474022328
379484022428
40225
379494022636
379504022728
40228
379514022928
379524023028
40231
40232
379534023328
3795440234
3795540235
......@@ -37988,17 +40268,26 @@ x86_64-linux-gnux32
3798840268
3798940269
3799040270
40271
379914027228
379924027328
379934027428
3799440275
3799540276
40277
379964027828
3799740279
3799840280
3799940281
3800040282
40283
380014028428
40285
40286
40287
40288
40289
40290
380024029128
3800340292
3800440293
......@@ -38111,7 +40400,11 @@ x86_64-linux-gnux32
381114040028
381124040128
381134040228
40403
40404
381144040528
40406
40407
381154040828
381164040928
381174041028
......@@ -38127,6 +40420,7 @@ x86_64-linux-gnux32
381274042028
381284042136
381294042228
40423
381304042428
3813140425
381324042628
......@@ -38134,7 +40428,10 @@ x86_64-linux-gnux32
381344042828
381354042928
381364043028
40431
381374043228
40433
40434
381384043528
381394043628
381404043728
......@@ -38165,6 +40462,11 @@ x86_64-linux-gnux32
381654046228
381664046328
381674046428
40465
40466
40467
40468
40469
381684047028
381694047128
381704047228
......@@ -38183,12 +40485,17 @@ x86_64-linux-gnux32
381834048528
381844048636
381854048728
40488
381864048928
40490
381874049128
381884049228
381894049328
381904049428
381914049528
40496
40497
40498
381924049928
381934050028
381944050128
......@@ -38196,7 +40503,11 @@ x86_64-linux-gnux32
381964050328
381974050428
381984050528
40506
381994050728
40508
40509
40510
382004051128
382014051228
382024051328
......@@ -38210,6 +40521,8 @@ x86_64-linux-gnux32
382104052128
382114052228
382124052328
40524
40525
382134052628
382144052728
382154052828
......@@ -38220,24 +40533,34 @@ x86_64-linux-gnux32
382204053336
382214053428
382224053533
40536
382234053728
382244053828
382254053928
3822640540
3822740541
3822840542
40543
382294054428
382304054536
382314054628
40547
382324054828
40549
382334055028
40551
40552
382344055328
40554
40555
382354055628
3823640557
382374055836
382384055928
40560
382394056128
3824040562
40563
382414056428
3824240565
382434056628
......@@ -38270,6 +40593,9 @@ x86_64-linux-gnux32
382704059328
382714059428
382724059528
40596
40597
40598
382734059928
3827440600
382754060128
......@@ -38304,6 +40630,8 @@ x86_64-linux-gnux32
383044063036
383054063128
383064063228
40633
40634
383074063528
383084063628
383094063728
......@@ -38323,48 +40651,93 @@ x86_64-linux-gnux32
3832340651
3832440652
383254065328
40654
40655
40656
383264065728
3832740658
383284065928
40660
40661
383294066228
40663
40664
40665
383304066628
383314066728
3833240668
3833340669
383344067028
383354067128
40672
40673
383364067428
383374067528
383384067628
383394067728
383404067828
3834140679
40680
383424068128
383434068228
3834440683
3834540684
383464068528
3834740686
40687
40688
383484068928
3834940690
3835040691
383514069228
383524069328
40694
40695
383534069628
40697
40698
40699
40700
383544070128
383554070228
40703
40704
383564070528
40706
383574070728
40708
40709
40710
383584071128
40712
40713
40714
383594071528
383604071628
40717
40718
383614071928
40720
40721
383624072228
40723
383634072428
40725
40726
40727
383644072828
40729
40730
40731
40732
383654073328
40734
40735
40736
383664073728
383674073828
40739
40740
383684074128
383694074228
383704074328
......@@ -38383,6 +40756,8 @@ x86_64-linux-gnux32
383834075636
383844075728
383854075828
40759
40760
383864076128
383874076228
383884076328
......@@ -38404,7 +40779,10 @@ x86_64-linux-gnux32
384044077928
384054078028
384064078128
40782
40783
384074078428
40785
384084078628
384094078728
384104078828
......@@ -38417,14 +40795,17 @@ x86_64-linux-gnux32
384174079528
384184079636
384194079728
40798
384204079928
384214080028
384224080136
384234080228
40803
384244080428
384254080528
384264080636
384274080728
40808
384284080928
384294081028
384304081128
......@@ -39022,7 +41403,7 @@ x86_64-linux-gnux32
390224140328
390234140428 39
390244140528
3902528
4140628 42
390264140736
390274140837
390284140937
......@@ -40148,17 +42529,19 @@ x86_64-linux-gnux32
401484252928
401494253028
401504253128
4253242
401514253328
401524253428
401534253528
401544253628
4253728 42
401554253828
401564253928
401574254028
401584254128
401594254228
401604254328
4016128
4254442
401624254528
401634254628
401644254728
......@@ -40188,9 +42571,9 @@ x86_64-linux-gnux32
401884257128
401894257228
401904257328
4019128
4257428 42
401924257530
4019328
4257628 42
401944257728
401954257828
401964257928
......@@ -40256,7 +42639,7 @@ x86_64-linux-gnux32
402564263928
402574264028
402584264128
4025928
4264228 42
402604264328
402614264428
402624264528
......@@ -40561,12 +42944,14 @@ x86_64-linux-gnux32
405614294428
405624294528
405634294628
4294742
405644294828
405654294928
405664295028
405674295128
405684295228
405694295328
4295442
405704295528
405714295628
405724295728
......@@ -40672,6 +43057,8 @@ x86_64-linux-gnux32
406724305728
406734305828
406744305928
4306042
4306142
406754306228
406764306328
406774306435
......@@ -41362,7 +43749,9 @@ i386-linux-gnu
413624374927
413634375036
413644375127
43752
413654375327
43754
413664375527
4136743756
4136843757
......@@ -41391,6 +43780,8 @@ i386-linux-gnu
4139143780
4139243781
4139343782
43783
43784
41394437850
41395437860
41396437870
......@@ -41399,43 +43790,79 @@ i386-linux-gnu
413994379027
414004379136
414014379227
43793
43794
414024379527
41403437961
414044379720
43798
43799
41405438005
41406438010
41407438020
414084380327
414094380436
414104380527
43806
414114380727
414124380827
414134380936
414144381027
43811
414154381227
4141643813
4141743814
4141843815
43816
41419438171
41420438181
41421438191
41422438200
41423438210
43822
43823
43824
43825
43826
43827
43828
43829
43830
43831
43832
43833
43834
43835
41424438360
414254383715
43838
41426438391
41427438401
43841
41428438421
43843
41429438440
41430438450
4143143846
41432438470
414334384816
43849
41434438500
43851
414354385227
414364385336
414374385427
43855
414384385627
43857
43858
43859
43860
43861
43862
43863
43864
43865
41439438660
41440438675
41441438685
......@@ -41463,29 +43890,50 @@ i386-linux-gnu
41463438900
4146443891
414654389220
43893
43894
41466438950
41467438961
41468438975
41469438980
4147043899
4147143900
43901
43902
43903
41472439040
43905
43906
43907
414734390827
414744390936
414754391027
43911
414764391227
414774391327
414784391436
414794391527
43916
414804391727
414814391827
414824391936
414834392027
43921
41484439225
414854392327
414864392435
43925
41487439265
4148843927
43928
43929
43930
43931
43932
43933
43934
43935
43936
41489439375
41490439380
414914393927
......@@ -41495,6 +43943,7 @@ i386-linux-gnu
4149543943
4149643944
4149743945
43946
414984394725
41499439480
415004394916
......@@ -41523,9 +43972,16 @@ i386-linux-gnu
4152343972
4152443973
4152543974
43975
43976
43977
43978
43979
43980
415264398127
415274398236
415284398327
43984
415294398527
41530439860
41531439871
......@@ -41534,6 +43990,8 @@ i386-linux-gnu
41534439901
41535439915
415364399215
43993
43994
41537439950
41538439965
41539439970
......@@ -41543,10 +44001,17 @@ i386-linux-gnu
41543440015
41544440020
41545440031
44004
44005
44006
44007
41546440085
415474400916
44010
44011
41548440125
41549440135
44014
41550440150
41551440161 5
415524401716
......@@ -41566,6 +44031,7 @@ i386-linux-gnu
415664403116
41567440325
41568440330
44034
41569440350
41570440360
415714403715
......@@ -41581,7 +44047,9 @@ i386-linux-gnu
415814404727
415824404836
415834404927
44050
415844405127
44052
41585440531
41586440541
41587440551
......@@ -41605,17 +44073,29 @@ i386-linux-gnu
416054407336
41606440740
416074407519
44076
416084407719
44078
416094407919
44080
416104408119
44082
416114408319
44084
416124408519
44086
416134408719
44088
416144408919
44090
416154409119
44092
416164409319
44094
416174409519
44096
416184409719
44098
41619440991
41620441001
416214410130
......@@ -41643,23 +44123,29 @@ i386-linux-gnu
416434412327
416444412436
416454412527
44126
416464412727
416474412827
416484412936
416494413027
44131
416504413227
416514413327
416524413436
416534413527
44136
416544413727
41655441381
41656441391
41657441401
4165844141
4165944142
44143
416604414427
416614414536
416624414627
44147
44148
416634414927
41664441501
41665441510
......@@ -41675,23 +44161,34 @@ i386-linux-gnu
41675441610
41676441620
41677441631
4416442
41678441651
41679441660
41680441670
416813 11
441683 8 11
44169
44170
44171
416824417227
416834417336
416844417427
44175
416854417627
44177
416864417827
416874417936
416884418027
44181
416894418227
416904418327
44184
416914418536
416924418627
44187
416934418827
416944418923
44190
44191
41695441920
4169644193
4169744194
......@@ -41730,17 +44227,26 @@ i386-linux-gnu
4173044227
4173144228
41732442290
44230
41733442310
41734442320
417354423319
4173644234
4173744235
44236
417384423711
4173944238
4174044239
4174144240
4174244241
44242
41743442431
44244
44245
44246
44247
44248
44249
41744442505
4174544251
4174644252
......@@ -41853,7 +44359,11 @@ i386-linux-gnu
41853443590
41854443600
418554436120
44362
44363
418564436420
44365
44366
41857443670
41858443685
418594436919
......@@ -41869,6 +44379,7 @@ i386-linux-gnu
418694437927
418704438036
418714438127
44382
418724438327
4187344384
418744438528
......@@ -41876,7 +44387,10 @@ i386-linux-gnu
418764438716
418774438816
418784438915
44390
41879443910
44392
44393
41880443940
41881443950
41882443960
......@@ -41907,6 +44421,11 @@ i386-linux-gnu
419074442114
419084442216
41909444231 5
44424
44425
44426
44427
44428
41910444291
41911444300
41912444310
......@@ -41925,12 +44444,17 @@ i386-linux-gnu
419254444427
419264444536
419274444627
44447
419284444827
44449
41929444505
41930444515
41931444525
41932444530
41933444545
44455
44456
44457
41934444588
41935444598
41936444608
......@@ -41938,7 +44462,11 @@ i386-linux-gnu
41938444620
419394446327
419404446427
44465
419414446627
44467
44468
44469
419424447019
419434447118
419444447219
......@@ -41952,6 +44480,8 @@ i386-linux-gnu
41952444800
41953444810
41954444825
44483
44484
41955444850
41956444860
41957444870
......@@ -41962,24 +44492,34 @@ i386-linux-gnu
419624449236
41963444931
419644449433
44495
41965444960
41966444970
41967444984
4196844499
4196944500
4197044501
44502
419714450327
419724450436
419734450527
44506
419744450727
44508
419754450915
44510
44511
419764451215
44513
44514
419774451527
4197844516
419794451736
419804451827
44519
419814452027
4198244521
44522
419834452316
4198444524
41985445255
......@@ -42012,6 +44552,9 @@ i386-linux-gnu
42012445520
42013445530
42014445541
44555
44556
44557
420154455812
42016445592
42017445601
......@@ -42046,6 +44589,8 @@ i386-linux-gnu
420464458936
42047445900
42048445911
44592
44593
42049445940
42050445952
42051445960
......@@ -42065,48 +44610,93 @@ i386-linux-gnu
4206544610
4206644611
420674461216
44613
44614
44615
42068446165
42069446175
420704461816
44619
44620
42071446210
44622
44623
44624
42072446250
420734462612
4207444627
4207544628
42076446291
42077446301
44631
44632
42078446331
42079446341
42080446351
42081446361
42082446371
4208344638
44639
420844464016
42085446410
4208644642
42087446430
42088446440
44645
44646
42089446470
42090446480
4209144649
4209244650
420934465112
420944465220
44653
44654
420954465520
44656
44657
44658
44659
42096446603
420974466115
44662
44663
42098446640
44665
420994466616
44667
44668
44669
421004467015
44671
44672
44673
42101446740
421024467515
44676
44677
421034467815
44679
44680
42104446810
44682
421054468316
44684
44685
44686
421064468716
44688
44689
44690
44691
421074469216
44693
44694
44695
42108446960
42109446970
44698
44699
421104470016
421114470116
421124470216
......@@ -42125,6 +44715,8 @@ i386-linux-gnu
421254471536
42126447160
42127447171
44718
44719
42128447200
42129447211
42130447220
......@@ -42146,7 +44738,10 @@ i386-linux-gnu
421464473816
42147447395
421484474016
44741
44742
42149447430
44744
42150447455
42151447465
42152447470
......@@ -42159,14 +44754,17 @@ i386-linux-gnu
421594475427
421604475536
421614475627
44757
421624475827
421634475927
421644476036
421654476127
44762
421664476327
421674476427
421684476536
421694476627
44767
421704476827
42171447691
42172447701
......@@ -42764,7 +45362,7 @@ i386-linux-gnu
42764453620
42765453630 39
42766453641
427671
453651 42
427684536636
427694536737
427704536837
......@@ -43890,17 +46488,19 @@ i386-linux-gnu
43890464880
43891464890
43892464900
4649142
43893464925
43894464931
43895464941
43896464950 1
4389714 15
4649614 15 42
43898464970
43899464981
43900464990
43901465000
43902465010
43903465020
4650342
43904465045
43905465051
43906465061
......@@ -43930,9 +46530,9 @@ i386-linux-gnu
43930465300
43931465310
43932465320
4393314 15
4653314 15 42
439344653430
439358
465358 42
43936465361
43937465375
439384653824
......@@ -43998,7 +46598,7 @@ i386-linux-gnu
43998465980
439994659915
44000466000
440010
466010 42
440024660223
44003466035
44004466045
......@@ -44303,12 +46903,14 @@ i386-linux-gnu
44303469030
44304469040
44305469050
4690642
44306469070
44307469080
44308469090
44309469100
44310469110
44311469120
4691342
44312469140
44313469150
44314469160
......@@ -44414,6 +47016,8 @@ i386-linux-gnu
44414470160
444154701718
44416470180
4701942
4702042
44417470210
444184702212
444194702335
......@@ -45104,7 +47708,9 @@ powerpc64le-linux-gnu
451044770829
451054770936
451064771029
4771142
451074771229
4771342
451084771429
4510947715
4511047716
......@@ -45133,6 +47739,8 @@ powerpc64le-linux-gnu
4513347739
4513447740
4513547741
4774242
4774342
451364774429
451374774529
451384774629
......@@ -45141,20 +47749,27 @@ powerpc64le-linux-gnu
451414774929
451424775036
451434775129
4775242
4775342
451444775429
451454775529
451464775629
4775742
4775842
451474775929
451484776029
451494776129
451504776229
451514776336
451524776429
4776542
451534776629
451544776729
451554776836
451564776929
4777042
451574777129
4777242
4515847773
4515947774
4516047775
......@@ -45163,21 +47778,50 @@ powerpc64le-linux-gnu
451634777829
451644777929
451654778029
4778142
4778242
4778342
4778442
4778542
4778642
4778742
4778842
4778942
4779042
4779142
4779242
4779342
4779442
451664779529
451674779629
4779742
451684779829
451694779929
4780042
451704780129
4780242
451714780329
451724780429
4517347805
451744780629
451754780729
4780842
451764780929
4781042
451774781129
451784781236
451794781329
4781442
451804781529
4781642
4781742
4781842
4781942
4782042
4782142
4782242
4782342
4782442
4518147825
4518247826
4518347827
......@@ -45205,33 +47849,55 @@ powerpc64le-linux-gnu
4520547849
4520647850
452074785129
4785242
4785342
452084785429
452094785529
452104785629
452114785729
4521247858
4521347859
4786042
4786142
4786242
452144786329
4786442
4786542
4786642
452154786729
452164786836
452174786929
4787042
452184787129
452194787229
452204787336
452214787429
4787542
452224787629
452234787729
452244787836
452254787929
4788042
4522647881
452274788229
452284788335
4788442
4522947885
4523047886
4788742
4788842
4788942
4789042
4789142
4789242
4789342
4789442
4789542
452314789629
452324789729
452334789829
452344789929
4790042
452354790129
452364790235
452374790329
......@@ -45264,10 +47930,17 @@ powerpc64le-linux-gnu
4526447930
4526547931
4526647932
4793342
4526747934
4793542
4793642
4793742
4793842
4793942
452684794029
452694794136
452704794229
4794342
452714794429
452724794529
452734794629
......@@ -45276,6 +47949,8 @@ powerpc64le-linux-gnu
452764794929
452774795029
452784795129
4795242
4795342
452794795429
452804795529
4528147956
......@@ -45285,10 +47960,17 @@ powerpc64le-linux-gnu
452854796029
452864796129
452874796229
4796342
4796442
4796542
4796642
452884796729
452894796829
4796942
4797042
452904797129
452914797229
4797342
452924797429
452934797529
452944797629
......@@ -45308,6 +47990,7 @@ powerpc64le-linux-gnu
453084799029
453094799129
453104799229
4799342
453114799429
453124799529
453134799629
......@@ -45323,7 +48006,9 @@ powerpc64le-linux-gnu
453234800629
453244800736
453254800829
4800942
453264801029
4801142
453274801229
453284801329
453294801429
......@@ -45347,17 +48032,29 @@ powerpc64le-linux-gnu
453474803236
453484803329
453494803429
4803542
453504803629
4803742
453514803829
4803942
453524804029
4804142
453534804229
4804342
453544804429
4804542
453554804629
4804742
453564804829
4804942
453574805029
4805142
453584805229
4805342
453594805429
4805542
453604805629
4805742
453614805829
453624805929
453634806030
......@@ -45385,23 +48082,29 @@ powerpc64le-linux-gnu
453854808229
453864808336
453874808429
4808542
453884808629
453894808729
453904808836
453914808929
4809042
453924809129
453934809229
453944809336
453954809429
4809542
453964809629
453974809729
453984809829
453994809929
4810042
4540048101
4540148102
454024810329
454034810436
454044810529
4810642
4810742
454054810829
454064810929
454074811029
......@@ -45417,23 +48120,34 @@ powerpc64le-linux-gnu
454174812029
454184812129
454194812229
4812342
454204812429
454214812529
454224812629
4542348127
4812842
4812942
4813042
454244813129
454254813236
454264813329
4813442
454274813529
4813642
454284813729
454294813836
454304813929
4814042
454314814129
454324814229
4814342
454334814436
454344814529
4814642
454354814729
454364814829
4814942
4815042
454374815129
4543848152
4543948153
......@@ -45472,17 +48186,26 @@ powerpc64le-linux-gnu
4547248186
4547348187
4547448188
4818942
454754819029
454764819129
454774819229
4547848193
4547948194
4819542
454804819629
4819742
4548148198
4548248199
4548348200
4548448201
454854820229
4820342
4820442
4820542
4820642
4820742
4820842
454864820929
454874821029
454884821129
......@@ -45595,7 +48318,11 @@ powerpc64le-linux-gnu
455954831829
455964831929
455974832029
4832142
4832242
455984832329
4832442
4832542
455994832629
456004832729
456014832829
......@@ -45611,6 +48338,7 @@ powerpc64le-linux-gnu
456114833829
456124833936
456134834029
4834142
456144834229
456154834329
456164834429
......@@ -45618,7 +48346,10 @@ powerpc64le-linux-gnu
456184834629
456194834729
456204834829
4834942
456214835029
4835142
4835242
456224835329
456234835429
456244835529
......@@ -45649,6 +48380,11 @@ powerpc64le-linux-gnu
456494838029
456504838129
456514838229
4838342
4838442
4838542
4838642
4838742
456524838829
456534838929
456544839029
......@@ -45667,12 +48403,17 @@ powerpc64le-linux-gnu
456674840329
456684840436
456694840529
4840642
456704840729
4840842
456714840929
456724841029
456734841129
456744841229
456754841329
4841442
4841542
4841642
456764841729
456774841829
456784841929
......@@ -45680,7 +48421,11 @@ powerpc64le-linux-gnu
456804842129
456814842229
456824842329
4842442
456834842529
4842642
4842742
4842842
456844842929
456854843029
456864843129
......@@ -45694,6 +48439,8 @@ powerpc64le-linux-gnu
456944843929
456954844029
456964844129
4844242
4844342
456974844429
456984844529
456994844629
......@@ -45704,24 +48451,34 @@ powerpc64le-linux-gnu
457044845136
457054845229
457064845333
4845442
457074845529
457084845629
457094845729
4571048458
4571148459
4571248460
4846142
457134846229
457144846336
457154846429
4846542
457164846629
4846742
457174846829
4846942
4847042
457184847129
4847242
4847342
457194847429
4572048475
457214847636
457224847729
4847842
457234847929
4572448480
4848142
457254848229
4572648483
457274848429
......@@ -45754,6 +48511,9 @@ powerpc64le-linux-gnu
457544851129
457554851229
457564851329
4851442
4851542
4851642
457574851729
4575848518
457594851929
......@@ -45788,6 +48548,8 @@ powerpc64le-linux-gnu
457884854836
457894854929
457904855029
4855142
4855242
457914855329
457924855429
457934855529
......@@ -45807,48 +48569,93 @@ powerpc64le-linux-gnu
4580748569
4580848570
458094857129
4857242
4857342
4857442
458104857529
458114857629
458124857729
4857842
4857942
458134858029
4858142
4858242
4858342
458144858429
458154858529
458164858632
4581748587
458184858829
458194858929
4859042
4859142
458204859229
458214859329
458224859429
458234859529
458244859629
4582548597
4859842
458264859929
458274860029
4582848601
4582948602
458304860329
4860442
4860542
4583148606
458324860729
4583348608
4583448609
458354861029
458364861129
4861242
4861342
458374861429
4861542
4861642
4861742
4861842
458384861929
458394862029
4862142
4862242
458404862329
4862442
458414862529
4862642
4862742
4862842
458424862929
4863042
4863142
4863242
458434863329
458444863429
4863542
4863642
458454863729
4863842
4863942
458464864029
4864142
458474864229
4864342
4864442
4864542
458484864629
4864742
4864842
4864942
4865042
458494865129
4865242
4865342
4865442
458504865529
458514865629
4865742
4865842
458524865929
458534866029
458544866129
......@@ -45867,6 +48674,8 @@ powerpc64le-linux-gnu
458674867436
458684867529
458694867629
4867742
4867842
458704867929
458714868029
458724868129
......@@ -45888,7 +48697,10 @@ powerpc64le-linux-gnu
458884869729
458894869829
458904869929
4870042
4870142
458914870229
4870342
458924870429
458934870529
458944870629
......@@ -45901,14 +48713,17 @@ powerpc64le-linux-gnu
459014871329
459024871436
459034871529
4871642
459044871729
459054871829
459064871936
459074872029
4872142
459084872229
459094872329
459104872436
459114872529
4872642
459124872729
459134872829
459144872929
......@@ -46506,7 +49321,7 @@ powerpc64le-linux-gnu
465064932129
465074932229 39
465084932329
4650929
4932429 42
465104932536
465114932637
465124932737
......@@ -47632,17 +50447,19 @@ powerpc64le-linux-gnu
476325044729
476335044829
476345044929
5045042
476355045129
476365045229
476375045329
476385045429
5045529 42
476395045629
476405045729
476415045829
476425045929
476435046029
476445046129
4764529
5046242
476465046329
476475046429
476485046529
......@@ -47672,9 +50489,9 @@ powerpc64le-linux-gnu
476725048929
476735049029
476745049129
4767529
5049229 42
476765049330
4767729
5049429 42
476785049529
476795049629
476805049729
......@@ -47740,7 +50557,7 @@ powerpc64le-linux-gnu
477405055729
477415055829
477425055929
4774329
5056029 42
477445056129
477455056229
477465056329
......@@ -48045,12 +50862,14 @@ powerpc64le-linux-gnu
480455086229
480465086329
480475086429
5086542
480485086629
480495086729
480505086829
480515086929
480525087029
480535087129
5087242
480545087329
480555087429
480565087529
......@@ -48156,6 +50975,8 @@ powerpc64le-linux-gnu
481565097529
481575097629
481585097729
5097842
5097942
481595098029
481605098129
481615098235
......@@ -48846,7 +51667,9 @@ powerpc64-linux-gnu
488465166727
4884751668
488485166927
51670
488495167127
51672
488505167327
4885151674
4885251675
......@@ -48875,6 +51698,8 @@ powerpc64-linux-gnu
4887551698
4887651699
4887751700
51701
51702
488785170312
488795170412
488805170512
......@@ -48883,47 +51708,83 @@ powerpc64-linux-gnu
488835170827
4888451709
488855171027
51711
51712
488865171327
488875171412 16
488885171520
51716
51717
488895171812
488905171912
488915172012
488925172127
4889351722
488945172327
51724
488955172527
488965172627
4889751727
488985172827
51729
488995173027
4890051731
4890151732
4890251733
51734
489035173512
489045173612
489055173712
489065173812
489075173912
51740
51741
51742
51743
51744
51745
51746
51747
51748
51749
51750
51751
51752
51753
489085175412
489095175515
51756
489105175712
489115175812
51759
489125176012 16
51761
489135176212
489145176312
4891551764
489165176512
489175176616
51767
489185176812
51769
489195177027
4892051771
489215177227
51773
489225177427
4892351775
4892451776
4892551777
4892651778
51779
51780
51781
51782
51783
51784
51785
51786
51787
489275178812
489285178912
4892951790
......@@ -48947,33 +51808,55 @@ powerpc64-linux-gnu
4894751808
4894851809
489495181020
51811
51812
489505181312
489515181412
489525181512
489535181612
4895451817
4895551818
51819
51820
51821
489565182212
51823
51824
51825
489575182627
4895851827
489595182827
51829
489605183027
489615183127
4896251832
489635183327
51834
489645183527
489655183627
4896651837
489675183827
4896851839
51840
489695184127
489705184235
4897151843
4897251844
51845
51846
51847
51848
51849
51850
51851
51852
51853
51854
489735185512
489745185612
489755185727
489765185827
51859
489775186012
489785186135
489795186212
......@@ -49007,9 +51890,16 @@ powerpc64-linux-gnu
4900751890
4900851891
4900951892
51893
51894
51895
51896
51897
51898
490105189927
4901151900
490125190127
51902
490135190327
490145190412
490155190512
......@@ -49018,6 +51908,8 @@ powerpc64-linux-gnu
490185190816
490195190912
490205191015 16
51911
51912
490215191312
490225191412
4902351915
......@@ -49027,10 +51919,17 @@ powerpc64-linux-gnu
490275191912
490285192012
490295192112
51922
51923
51924
51925
490305192612
490315192716
51928
51929
490325193012
490335193112
51932
490345193312
490355193412
490365193516
......@@ -49050,6 +51949,7 @@ powerpc64-linux-gnu
490505194916
490515195012
490525195112
51952
490535195312
490545195412
490555195515
......@@ -49065,7 +51965,9 @@ powerpc64-linux-gnu
490655196527
4906651966
490675196727
51968
490685196927
51970
490695197112
490705197212
490715197312
......@@ -49089,17 +51991,29 @@ powerpc64-linux-gnu
4908951991
490905199212 16
490915199319
51994
490925199519
51996
490935199719
51998
490945199919
52000
490955200119
52002
490965200319
52004
490975200519
52006
490985200719
52008
490995200919
52010
491005201119
52012
491015201319
52014
491025201519
52016
491035201712
491045201812
491055201930
......@@ -49127,23 +52041,29 @@ powerpc64-linux-gnu
491275204127
4912852042
491295204327
52044
491305204527
491315204627
4913252047
491335204827
52049
491345205027
491355205127
4913652052
491375205327
52054
491385205527
491395205612
491405205712
491415205812
4914252059
4914352060
52061
491445206227
4914552063
491465206427
52065
52066
491475206727
491485206812
491495206912
......@@ -49159,23 +52079,34 @@ powerpc64-linux-gnu
491595207912
491605208012
491615208112
5208242
491625208312
491635208412
491645208512
4916552086
52087
52088
52089
491665209027
4916752091
491685209227
52093
491695209427
52095
491705209627
4917152097
491725209827
52099
491735210027
491745210127
4917552102
52103
491765210427
52105
491775210627
491785210723
52108
52109
491795211012
4918052111
4918152112
......@@ -49214,17 +52145,26 @@ powerpc64-linux-gnu
4921452145
4921552146
4921652147
52148
492175214912
492185215012
492195215119
4922052152
4922152153
52154
492225215512
4922352156
4922452157
4922552158
4922652159
52160
492275216112
52162
52163
52164
52165
52166
52167
492285216812
492295216916
492305217016
......@@ -49337,7 +52277,11 @@ powerpc64-linux-gnu
493375227712
493385227812
493395227920
52280
52281
493405228220
52283
52284
493415228512
493425228612
493435228719
......@@ -49353,6 +52297,7 @@ powerpc64-linux-gnu
493535229727
4935452298
493555229927
52300
493565230127
493575230229
493585230328
......@@ -49360,7 +52305,10 @@ powerpc64-linux-gnu
493605230516
493615230616
493625230715 16
52308
493635230912 16
52310
52311
493645231212
493655231312
493665231412
......@@ -49391,6 +52339,11 @@ powerpc64-linux-gnu
493915233914
493925234016
493935234112
52342
52343
52344
52345
52346
493945234712
493955234812
493965234912
......@@ -49409,12 +52362,17 @@ powerpc64-linux-gnu
494095236227
4941052363
494115236427
52365
494125236627
52367
494135236812
494145236912
494155237012
494165237112
494175237212
52373
52374
52375
494185237612
494195237712
494205237812
......@@ -49422,7 +52380,11 @@ powerpc64-linux-gnu
494225238012
494235238127
494245238227
52383
494255238427
52385
52386
52387
494265238819
494275238918
494285239019
......@@ -49436,6 +52398,8 @@ powerpc64-linux-gnu
494365239812
494375239912
494385240012
52401
52402
494395240312
494405240412
494415240512
......@@ -49446,24 +52410,34 @@ powerpc64-linux-gnu
4944652410
494475241116
494485241233
52413
494495241412
494505241512 15
494515241612
4945252417
4945352418
4945452419
52420
494555242127
4945652422
494575242327
52424
494585242527
52426
494595242715 16
52428
52429
494605243015 16
52431
52432
494615243327
4946252434
4946352435
494645243627
52437
494655243827
4946652439
52440
494675244116
4946852442
494695244312
......@@ -49496,6 +52470,9 @@ powerpc64-linux-gnu
494965247012
494975247112
494985247212 16
52473
52474
52475
494995247612
4950052477
495015247812
......@@ -49530,6 +52507,8 @@ powerpc64-linux-gnu
4953052507
495315250812
495325250912
52510
52511
495335251212
495345251312
495355251412
......@@ -49549,48 +52528,93 @@ powerpc64-linux-gnu
4954952528
4955052529
495515253016
52531
52532
52533
495525253412
495535253512
495545253616
52537
52538
495555253912
52540
52541
52542
495565254312
495575254412
495585254532
4955952546
495605254712
495615254812
52549
52550
495625255112
495635255212
495645255312
495655255412
495665255512
4956752556
52557
495685255816
495695255912
4957052560
4957152561
495725256212
4957352563
52564
52565
495745256612
4957552567
4957652568
495775256912
495785257020
52571
52572
495795257320
52574
52575
52576
52577
495805257812
495815257915 16
52580
52581
495825258212 16
52583
495835258416
52585
52586
52587
495845258815 16
52589
52590
52591
495855259212 16
495865259315 16
52594
52595
495875259615 16
52597
52598
495885259912 16
52600
495895260116
52602
52603
52604
495905260516
52606
52607
52608
52609
495915261016
52611
52612
52613
495925261412
495935261512
52616
52617
495945261816
495955261916
495965262016
......@@ -49609,6 +52633,8 @@ powerpc64-linux-gnu
4960952633
496105263412
496115263512
52636
52637
496125263812
496135263912
496145264012 16
......@@ -49630,7 +52656,10 @@ powerpc64-linux-gnu
496305265616
496315265712
496325265816
52659
52660
496335266112
52662
496345266312
496355266412
496365266512
......@@ -49643,14 +52672,17 @@ powerpc64-linux-gnu
496435267227
4964452673
496455267427
52675
496465267627
496475267727
4964852678
496495267927
52680
496505268127
496515268227
4965252683
496535268427
52685
496545268627
496555268712
496565268812
......@@ -50248,7 +53280,7 @@ powerpc64-linux-gnu
502485328012
502495328139 12
502505328212
5025112
5328312 42
5025253284
502535328537
502545328637
......@@ -51374,17 +54406,19 @@ powerpc64-linux-gnu
513745440612
513755440712
513765440812
5440942
513775441012
513785441112
513795441212
513805441312
5138114 15
5441414 15 42
513825441512
513835441612
513845441712
513855441812
513865441912
513875442012
5442142
513885442212 18
513895442312
513905442412 18
......@@ -51414,9 +54448,9 @@ powerpc64-linux-gnu
514145444812
514155444912
514165445012
5141714 15
5445114 15 42
514185445230
5141912
5445312 42
514205445412
514215445512
514225445624
......@@ -51482,7 +54516,7 @@ powerpc64-linux-gnu
514825451612
514835451715
514845451812
5148512
5451912 42
514865452023
514875452112
514885452212
......@@ -51787,12 +54821,14 @@ powerpc64-linux-gnu
517875482112
517885482212
517895482312
5482442
517905482512
517915482612
517925482712
517935482812
517945482912
517955483012
5483142
517965483212
517975483312
517985483412
......@@ -51898,6 +54934,8 @@ powerpc64-linux-gnu
518985493412
518995493518
519005493612
5493742
5493842
519015493912 16
519025494012 16
519035494135
......@@ -52588,7 +55626,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
525885562627
5258955627
525905562827
55629
525915563027
55631
525925563227
525935563313
525945563413
......@@ -52617,6 +55657,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5261755657
5261855658
5261955659
55660
55661
52620556620
52621556630
52622556640
......@@ -52625,20 +55667,27 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
526255566727
5262655668
526275566927
55670
55671
526285567227
52629556731 16
526305567420
55675
55676
52631556775
52632556780
52633556790
526345568027
5263555681
526365568227
55683
526375568427
526385568527
5263955686
526405568727
55688
526415568927
55690
526425569131
526435569231
526445569331
......@@ -52647,21 +55696,50 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52647556961
52648556970
52649556980
55699
55700
55701
55702
55703
55704
55705
55706
55707
55708
55709
55710
55711
55712
52650557130
526515571415
55715
52652557161
52653557171
55718
52654557191 16
55720
52655557210
52656557220
52657557230
52658557240
526595572516
55726
52660557270
55728
526615572927
5266255730
526635573127
55732
526645573327
55734
55735
55736
55737
55738
55739
55740
55741
55742
52665557430
52666557445
52667557455
......@@ -52689,33 +55767,55 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52689557670
526905576813
526915576920
55770
55771
52692557720
52693557731
52694557745
52695557750
526965577613
526975577713
55778
55779
55780
52698557810
55782
55783
55784
526995578527
5270055786
527015578727
55788
527025578927
527035579027
5270455791
527055579227
55793
527065579427
527075579527
5270855796
527095579727
5271055798
55799
527115580027
527125580135
5271355802
55803
527145580413
55805
55806
55807
55808
55809
55810
55811
55812
55813
52715558145
52716558150
527175581627
527185581727
55818
52719558191
527205582035
52721558211
......@@ -52748,10 +55848,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
527485584816
527495584916
527505585016
55851
527515585231
55853
55854
55855
55856
55857
527525585827
5275355859
527545586027
55861
527555586227
52756558630
52757558641
......@@ -52760,6 +55867,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
527605586716
52761558685
527625586915 16
55870
55871
52763558720
52764558735
52765558740
......@@ -52769,10 +55878,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52769558785
52770558790
52771558801
55881
55882
55883
55884
52772558855
527735588616
55887
55888
52774558895
52775558905
55891
52776558920
52777558931 5
527785589416
......@@ -52792,6 +55908,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
527925590816
52793559095
52794559100
55911
52795559120
52796559130
527975591415
......@@ -52807,7 +55924,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
528075592427
5280855925
528095592627
55927
528105592827
55929
52811559301
52812559311
52813559321
......@@ -52831,17 +55950,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5283155950
52832559510 16
528335595219
55953
528345595419
55955
528355595619
55957
528365595819
55959
528375596019
55961
528385596219
55963
528395596419
55965
528405596619
55967
528415596819
55969
528425597019
55971
528435597219
55973
528445597419
55975
52845559761
52846559771
528475597830
......@@ -52869,23 +56000,29 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
528695600027
5287056001
528715600227
56003
528725600427
528735600527
5287456006
528755600727
56008
528765600927
528775601027
5287856011
528795601227
56013
528805601427
52881560151
52882560161
52883560171
56018
528845601913
528855602013
528865602127
5288756022
528885602327
56024
56025
528895602627
52890560271
52891560280
......@@ -52901,23 +56038,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
52901560380
52902560390
52903560401
5604142
52904560421
52905560430
52906560440
529073 11
560453 8 11
56046
56047
56048
529085604927
5290956050
529105605127
56052
529115605327
56054
529125605527
5291356056
529145605727
56058
529155605927
529165606027
5291756061
56062
529185606327
56064
529195606527
529205606623
56067
56068
52921560690
52922560700
529235607116
......@@ -52956,17 +56104,26 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5295656104
5295756105
52958561060
56107
52959561080
52960561090
529615611019
529625611113
529635611213
56113
529645611411
56115
529655611616
529665611713
529675611813
529685611916
52969561201
56121
56122
56123
56124
56125
56126
52970561275
529715612816
529725612916
......@@ -53079,7 +56236,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53079562360
53080562370
530815623820
56239
56240
530825624120
56242
56243
53083562440
53084562455
530855624619
......@@ -53095,6 +56256,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
530955625627
5309656257
530975625827
56259
530985626027
530995626129
531005626228
......@@ -53102,7 +56264,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
531025626416
531035626516
531045626615 16
56267
53105562680 16
56269
56270
53106562710
53107562720
53108562730
......@@ -53133,6 +56298,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
531335629814
531345629916
53135563001 5
56301
56302
56303
56304
56305
53136563061
53137563070
53138563080
......@@ -53151,12 +56321,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
531515632127
5315256322
531535632327
56324
531545632527
56326
53155563275
53156563285
53157563295
53158563300
53159563315
56332
56333
56334
53160563358
53161563368
53162563378
......@@ -53164,7 +56339,11 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53164563390
531655634027
531665634127
56342
531675634327
56344
56345
56346
531685634719
531695634818
531705634919
......@@ -53178,6 +56357,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53178563570
53179563580
53180563595
56360
56361
53181563620
53182563630
53183563640
......@@ -53188,24 +56369,34 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5318856369
531895637016
531905637133
56372
53191563730
53192563740 15
53193563754
531945637613
531955637713
531965637813
56379
531975638027
5319856381
531995638227
56383
532005638427
56385
532015638615 16
56387
56388
532025638915 16
56390
56391
532035639227
532045639313
5320556394
532065639527
56396
532075639727
532085639813
56399
532095640016
5321056401
53211564025
......@@ -53238,6 +56429,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53238564290
53239564300
53240564311 16
56432
56433
56434
532415643512
5324256436
53243564371
......@@ -53272,6 +56466,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5327256466
53273564670
53274564681
56469
56470
53275564710
53276564722
53277564730
......@@ -53291,48 +56487,93 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
532915648713
532925648813
532935648916
56490
56491
56492
53294564935
53295564945
532965649516
56496
56497
53297564980
56499
56500
56501
53298565020
532995650312
533005650432
5330156505
53302565061
53303565071
56508
56509
53304565101
53305565111
53306565121
53307565131
53308565141
533095651513
56516
533105651716
53311565180
53312565190
53313565200
53314565210
56522
56523
53315565240
53316565250
533175652616
533185652716
533195652812
533205652920
56530
56531
533215653220
56533
56534
56535
56536
53322565373
533235653815 16
56539
56540
53324565410 16
56542
533255654316
56544
56545
56546
533265654715 16
56548
56549
56550
53327565510 16
533285655215 16
56553
56554
533295655515 16
56556
56557
53330565580 16
56559
533315656016
56561
56562
56563
533325656416
56565
56566
56567
56568
533335656916
56570
56571
56572
53334565730
53335565740
56575
56576
533365657716
533375657816
533385657916
......@@ -53351,6 +56592,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
5335156592
53352565930
53353565941
56595
56596
53354565970
53355565981
53356565990 16
......@@ -53372,7 +56615,10 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
533725661516
53373566165
533745661716
56618
56619
53375566200
56621
53376566225
53377566235
53378566240
......@@ -53385,14 +56631,17 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
533855663127
5338656632
533875663327
56634
533885663527
533895663627
5339056637
533915663827
56639
533925664027
533935664127
5339456642
533955664327
56644
533965664527
53397566461
53398566471
......@@ -53990,7 +57239,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
53990572390
53991572400 39
53992572411
539931
572421 42
5399457243
539955724437
539965724537
......@@ -55116,17 +58365,19 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
55116583650
55117583660
55118583670
5836842
55119583695
55120583701
55121583711
55122583720 1
5512314 15
5837314 15 42
55124583740
55125583751
55126583760
55127583770
55128583780
55129583790
5838042
55130583815 18
55131583821
55132583831 18
......@@ -55156,9 +58407,9 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
55156584070
55157584080
55158584090
5515914 15
5841014 15 42
551605841130
551618
584128 42
55162584131
55163584145
551645841524
......@@ -55224,7 +58475,7 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
55224584750
552255847615
55226584770
552270
584780 42
552285847923
55229584805
55230584815
......@@ -55529,12 +58780,14 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
55529587800
55530587810
55531587820
5878342
55532587840
55533587850
55534587860
55535587870
55536587880
55537587890
5879042
55538587910
55539587920
55540587930
......@@ -55640,6 +58893,8 @@ powerpc-linux-gnueabi powerpc-linux-gnueabihf
55640588930
556415889418
55642588950
5889642
5889742
55643588980 16
556445889912 16
556455890035
lib/libc/glibc/fns.txt+221-4
......@@ -199,7 +199,9 @@ __acosf_finite m
199199__acosh_finite m
200200__acoshf128_finite m
201201__acoshf_finite m
202__acoshieee128 m
202203__acoshl_finite m
204__acosieee128 m
203205__acosl_finite m
204206__adddf3 c
205207__addsf3 c
......@@ -228,6 +230,8 @@ __align_cpy_2 c
228230__align_cpy_4 c
229231__align_cpy_8 c
230232__arch_prctl c
233__argp_errorieee128 c
234__argp_failureieee128 c
231235__argz_count c
232236__argz_next c
233237__argz_stringify c
......@@ -236,20 +240,27 @@ __ashrdi3 c
236240__asin_finite m
237241__asinf128_finite m
238242__asinf_finite m
243__asinhieee128 m
244__asinieee128 m
239245__asinl_finite m
240246__asprintf c
241247__asprintf_chk c
248__asprintf_chkieee128 c
249__asprintfieee128 c
242250__assert c
243251__assert_fail c
244252__assert_perror_fail c
245253__atan2_finite m
246254__atan2f128_finite m
247255__atan2f_finite m
256__atan2ieee128 m
248257__atan2l_finite m
249258__atanh_finite m
250259__atanhf128_finite m
251260__atanhf_finite m
261__atanhieee128 m
252262__atanhl_finite m
263__atanieee128 m
253264__atomic_feclearexcept c
254265__atomic_feholdexcept c
255266__atomic_feupdateenv c
......@@ -258,21 +269,50 @@ __backtrace_symbols c
258269__backtrace_symbols_fd c
259270__bsd_getpgrp c
260271__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
261286__check_rhosts_file c
262287__chk_fail c
288__cimagieee128 m
263289__clog10 m
264290__clog10f m
291__clog10ieee128 m
265292__clog10l m
293__clogieee128 m
266294__clone c
267295__close c
268296__cmpdi2 c
269297__cmsg_nxthdr c
270298__confstr_chk c
299__conjieee128 m
271300__connect c
301__copysignieee128 m
272302__cosh_finite m
273303__coshf128_finite m
274304__coshf_finite m
305__coshieee128 m
275306__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
276316__ctype32_b c
277317__ctype32_tolower c
278318__ctype32_toupper c
......@@ -300,33 +340,55 @@ __divdf3 c
300340__divdi3 c
301341__divsf3 c
302342__dprintf_chk c
343__dprintf_chkieee128 c
344__dprintfieee128 c
303345__dup2 c
304346__duplocale c
305347__endmntent c
306348__environ c
307349__eqdf2 c
308350__eqsf2 c
351__erfcieee128 m
352__erfieee128 m
353__errieee128 c
309354__errno_location c
355__error_at_lineieee128 c
356__errorieee128 c
357__errxieee128 c
310358__exp10_finite m
311359__exp10f128_finite m
312360__exp10f_finite m
361__exp10ieee128 m
313362__exp10l_finite m
314363__exp2_finite m
315364__exp2f128_finite m
316365__exp2f_finite m
366__exp2ieee128 m
317367__exp2l_finite m
318368__exp_finite m
319369__expf128_finite m
320370__expf_finite m
371__expieee128 m
321372__expl m
322373__expl_finite m
323374__explicit_bzero_chk c
375__expm1ieee128 m
324376__expm1l m
325377__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
326387__fbufsize c
327388__fcntl c
328389__fdelt_chk c
329390__fdelt_warn c
391__fdimieee128 m
330392__fe_dfl_env m
331393__fe_dfl_mode m
332394__fe_enabled_env m
......@@ -359,10 +421,17 @@ __floatundidf c
359421__floatundisf c
360422__floatunsidf c
361423__floatunsisf c
424__floorieee128 m
362425__flt_rounds c
426__fmaieee128 m
427__fmaxieee128 m
428__fmaxmagieee128 m
429__fminieee128 m
430__fminmagieee128 m
363431__fmod_finite m
364432__fmodf128_finite m
365433__fmodf_finite m
434__fmodieee128 m
366435__fmodl_finite m
367436__fork c
368437__fpclassify m
......@@ -371,6 +440,8 @@ __fpclassifyf128 m
371440__fpclassifyl m
372441__fpending c
373442__fprintf_chk c
443__fprintf_chkieee128 c
444__fprintfieee128 c
374445__fpu_control c
375446__fpurge c
376447__frame_state_for c
......@@ -380,10 +451,17 @@ __freadable c
380451__freading c
381452__free_hook c
382453__freelocale c
454__frexpieee128 m
455__fromfpieee128 m
456__fromfpxieee128 m
457__fscanfieee128 c
383458__fsetlocking c
384459__fwprintf_chk c
460__fwprintf_chkieee128 c
461__fwprintfieee128 c
385462__fwritable c
386463__fwriting c
464__fwscanfieee128 c
387465__fxstat c
388466__fxstat64 c
389467__fxstatat c
......@@ -403,6 +481,7 @@ __gethostname_chk c
403481__getlogin_r_chk c
404482__getmntent_r c
405483__getpagesize c
484__getpayloadieee128 m
406485__getpgid c
407486__getpid c
408487__gets_chk c
......@@ -418,7 +497,9 @@ __h_errno_location c
418497__hypot_finite m
419498__hypotf128_finite m
420499__hypotf_finite m
500__hypotieee128 m
421501__hypotl_finite m
502__ilogbieee128 m
422503__isalnum_l c
423504__isalpha_l c
424505__isascii_l c
......@@ -442,17 +523,29 @@ __isnanf c
442523__isnanf128 m
443524__isnanl c
444525__isoc99_fscanf c
526__isoc99_fscanfieee128 c
445527__isoc99_fwscanf c
528__isoc99_fwscanfieee128 c
446529__isoc99_scanf c
530__isoc99_scanfieee128 c
447531__isoc99_sscanf c
532__isoc99_sscanfieee128 c
448533__isoc99_swscanf c
534__isoc99_swscanfieee128 c
449535__isoc99_vfscanf c
536__isoc99_vfscanfieee128 c
450537__isoc99_vfwscanf c
538__isoc99_vfwscanfieee128 c
451539__isoc99_vscanf c
540__isoc99_vscanfieee128 c
452541__isoc99_vsscanf c
542__isoc99_vsscanfieee128 c
453543__isoc99_vswscanf c
544__isoc99_vswscanfieee128 c
454545__isoc99_vwscanf c
546__isoc99_vwscanfieee128 c
455547__isoc99_wscanf c
548__isoc99_wscanfieee128 c
456549__isprint_l c
457550__ispunct_l c
458551__issignaling m
......@@ -480,23 +573,29 @@ __ivaliduser c
480573__j0_finite m
481574__j0f128_finite m
482575__j0f_finite m
576__j0ieee128 m
483577__j0l_finite m
484578__j1_finite m
485579__j1f128_finite m
486580__j1f_finite m
581__j1ieee128 m
487582__j1l_finite m
488583__jn_finite m
489584__jnf128_finite m
490585__jnf_finite m
586__jnieee128 m
491587__jnl_finite m
492588__key_decryptsession_pk_LOCAL c
493589__key_encryptsession_pk_LOCAL c
494590__key_gendes_LOCAL c
591__ldexpieee128 m
495592__ledf2 c
496593__lesf2 c
497594__lgamma_r_finite m
498595__lgammaf128_r_finite m
499596__lgammaf_r_finite m
597__lgammaieee128 m
598__lgammaieee128_r m
500599__lgammal_r_finite m
501600__libc_allocate_rtsig c
502601__libc_calloc c
......@@ -512,23 +611,34 @@ __libc_memalign c
512611__libc_pvalloc c
513612__libc_realloc c
514613__libc_sa_len c
614__libc_single_threaded c
515615__libc_stack_end ld
516616__libc_start_main c
517617__libc_valloc c
518618__libpthread_version_placeholder pthread
619__llogbieee128 m
620__llrintieee128 m
621__llroundieee128 m
519622__log10_finite m
520623__log10f128_finite m
521624__log10f_finite m
625__log10ieee128 m
522626__log10l_finite m
627__log1pieee128 m
523628__log2_finite m
524629__log2f128_finite m
525630__log2f_finite m
631__log2ieee128 m
526632__log2l_finite m
527633__log_finite m
634__logbieee128 m
528635__logf128_finite m
529636__logf_finite m
637__logieee128 m
530638__logl_finite m
531639__longjmp_chk c
640__lrintieee128 m
641__lroundieee128 m
532642__lseek c
533643__lshrdi3 c
534644__ltdf2 c
......@@ -567,17 +677,26 @@ __memset_gg c
567677__mips_fpu_getcw c
568678__mips_fpu_setcw c
569679__moddi3 c
680__modfieee128 m
570681__monstartup c
571682__morecore c
572683__mq_open_2 rt
573684__muldf3 c
574685__mulsf3 c
686__nanieee128 m
575687__nanosleep c
688__nearbyintieee128 m
576689__nedf2 c
577690__negdf2 c
578691__negsf2 c
579692__nesf2 c
580693__newlocale c
694__nextafterieee128 m
695__nextdownieee128 m
696__nexttoward_to_ieee128 m
697__nexttowardf_to_ieee128 m
698__nexttowardieee128 m
699__nextupieee128 m
581700__nl_langinfo_l c
582701__nldbl__IO_fprintf c
583702__nldbl__IO_printf c
......@@ -690,7 +809,11 @@ __nss_hosts_lookup c
690809__nss_next c
691810__nss_passwd_lookup c
692811__obstack_printf_chk c
812__obstack_printf_chkieee128 c
813__obstack_printfieee128 c
693814__obstack_vprintf_chk c
815__obstack_vprintf_chkieee128 c
816__obstack_vprintfieee128 c
694817__open c
695818__open64 c
696819__open64_2 c
......@@ -706,6 +829,7 @@ __posix_getopt c
706829__pow_finite m
707830__powf128_finite m
708831__powf_finite m
832__powieee128 m
709833__powl_finite m
710834__ppc_get_timebase_freq c
711835__ppoll_chk c
......@@ -713,7 +837,10 @@ __pread64 c
713837__pread64_chk c
714838__pread_chk c
715839__printf_chk c
840__printf_chkieee128 c
716841__printf_fp c
842__printf_sizeieee128 c
843__printfieee128 c
717844__profile_frequency c
718845__progname c
719846__progname_full c
......@@ -744,6 +871,11 @@ __pthread_unregister_cancel_restore pthread
744871__pthread_unwind_next pthread
745872__ptsname_r_chk c
746873__pwrite64 c
874__qecvtieee128 c
875__qecvtieee128_r c
876__qfcvtieee128 c
877__qfcvtieee128_r c
878__qgcvtieee128 c
747879__rawmemchr c
748880__rcmd_errstr c
749881__read c
......@@ -762,12 +894,17 @@ __register_frame_table c
762894__remainder_finite m
763895__remainderf128_finite m
764896__remainderf_finite m
897__remainderieee128 m
765898__remainderl_finite m
899__remquoieee128 m
766900__res_init c
767901__res_nclose c
768902__res_ninit c
769903__res_randomid c
770904__res_state c
905__rintieee128 m
906__roundevenieee128 m
907__roundieee128 m
771908__rpc_thread_createerr c
772909__rpc_thread_svc_fdset c
773910__rpc_thread_svc_max_pollfd c
......@@ -775,7 +912,11 @@ __rpc_thread_svc_pollfd c
775912__sbrk c
776913__scalb_finite m
777914__scalbf_finite m
915__scalbieee128 m
778916__scalbl_finite m
917__scalblnieee128 m
918__scalbnieee128 m
919__scanfieee128 c
779920__sched_cpualloc c
780921__sched_cpucount c
781922__sched_cpufree c
......@@ -789,6 +930,8 @@ __secure_getenv c
789930__select c
790931__send c
791932__setmntent c
933__setpayloadieee128 m
934__setpayloadsigieee128 m
792935__setpgid c
793936__sigaction c
794937__sigaddset c
......@@ -799,24 +942,34 @@ __signbitf c
799942__signbitf128 m
800943__signbitl c
801944__signgam m
945__significandieee128 m
802946__sigpause c
803947__sigsetjmp c
804948__sigsuspend c
805949__sim_disabled_exceptions c
806950__sim_exceptions c
807951__sim_round_mode c
952__sincosieee128 m
808953__sinh_finite m
809954__sinhf128_finite m
810955__sinhf_finite m
956__sinhieee128 m
811957__sinhl_finite m
958__sinieee128 m
812959__snprintf_chk c
960__snprintf_chkieee128 c
961__snprintfieee128 c
813962__sprintf_chk c
963__sprintf_chkieee128 c
964__sprintfieee128 c
814965__sqrt_finite m
815966__sqrtdf2 c
816967__sqrtf128_finite m
817968__sqrtf_finite m
969__sqrtieee128 m
818970__sqrtl_finite m
819971__sqrtsf2 c
972__sscanfieee128 c
820973__stack_chk_fail c
821974__stack_chk_guard ld
822975__statfs c
......@@ -849,6 +1002,9 @@ __strcspn_g c
8491002__strdup c
8501003__strerror_r c
8511004__strfmon_l c
1005__strfmon_lieee128 c
1006__strfmonieee128 c
1007__strfromieee128 c
8521008__strftime_l c
8531009__strlen_g c
8541010__strncasecmp_l c
......@@ -883,6 +1039,8 @@ __strtod_l c
8831039__strtof128_internal c
8841040__strtof_internal c
8851041__strtof_l c
1042__strtoieee128 c
1043__strtoieee128_l c
8861044__strtok_r c
8871045__strtok_r_1c c
8881046__strtol_internal c
......@@ -902,48 +1060,93 @@ __strxfrm_l c
9021060__subdf3 c
9031061__subsf3 c
9041062__swprintf_chk c
1063__swprintf_chkieee128 c
1064__swprintfieee128 c
1065__swscanfieee128 c
9051066__sysconf c
9061067__sysctl c
9071068__syslog_chk c
1069__syslog_chkieee128 c
1070__syslogieee128 c
9081071__sysv_signal c
1072__tanhieee128 m
1073__tanieee128 m
1074__tgammaieee128 m
9091075__timezone c
9101076__tls_get_addr ld
9111077__tls_get_addr_opt ld
9121078__tls_get_offset ld
9131079__toascii_l c
9141080__tolower_l c
1081__totalorderieee128 m
1082__totalordermagieee128 m
9151083__toupper_l c
9161084__towctrans c
9171085__towctrans_l c
9181086__towlower_l c
9191087__towupper_l c
9201088__truncdfsf2 c
1089__truncieee128 m
9211090__ttyname_r_chk c
9221091__tzname c
9231092__ucmpdi2 c
9241093__udivdi3 c
9251094__uflow c
1095__ufromfpieee128 m
1096__ufromfpxieee128 m
9261097__umoddi3 c
9271098__underflow c
9281099__unorddf2 c
9291100__unordsf2 c
9301101__uselocale c
9311102__vasprintf_chk c
1103__vasprintf_chkieee128 c
1104__vasprintfieee128 c
9321105__vdprintf_chk c
1106__vdprintf_chkieee128 c
1107__vdprintfieee128 c
1108__verrieee128 c
1109__verrxieee128 c
9331110__vfork c
9341111__vfprintf_chk c
1112__vfprintf_chkieee128 c
1113__vfprintfieee128 c
9351114__vfscanf c
1115__vfscanfieee128 c
9361116__vfwprintf_chk c
1117__vfwprintf_chkieee128 c
1118__vfwprintfieee128 c
1119__vfwscanfieee128 c
9371120__vprintf_chk c
1121__vprintf_chkieee128 c
1122__vprintfieee128 c
1123__vscanfieee128 c
9381124__vsnprintf c
9391125__vsnprintf_chk c
1126__vsnprintf_chkieee128 c
1127__vsnprintfieee128 c
9401128__vsprintf_chk c
1129__vsprintf_chkieee128 c
1130__vsprintfieee128 c
9411131__vsscanf c
1132__vsscanfieee128 c
9421133__vswprintf_chk c
1134__vswprintf_chkieee128 c
1135__vswprintfieee128 c
1136__vswscanfieee128 c
9431137__vsyslog_chk c
1138__vsyslog_chkieee128 c
1139__vsyslogieee128 c
1140__vwarnieee128 c
1141__vwarnxieee128 c
9441142__vwprintf_chk c
1143__vwprintf_chkieee128 c
1144__vwprintfieee128 c
1145__vwscanfieee128 c
9451146__wait c
9461147__waitpid c
1148__warnieee128 c
1149__warnxieee128 c
9471150__wcpcpy_chk c
9481151__wcpncpy_chk c
9491152__wcrtomb_chk c
......@@ -962,6 +1165,8 @@ __wcstod_l c
9621165__wcstof128_internal c
9631166__wcstof_internal c
9641167__wcstof_l c
1168__wcstoieee128 c
1169__wcstoieee128_l c
9651170__wcstol_internal c
9661171__wcstol_l c
9671172__wcstold_internal c
......@@ -983,7 +1188,10 @@ __wmempcpy_chk c
9831188__wmemset_chk c
9841189__woverflow c
9851190__wprintf_chk c
1191__wprintf_chkieee128 c
1192__wprintfieee128 c
9861193__write c
1194__wscanfieee128 c
9871195__wuflow c
9881196__wunderflow c
9891197__xmknod c
......@@ -996,14 +1204,17 @@ __xstat64 c
9961204__y0_finite m
9971205__y0f128_finite m
9981206__y0f_finite m
1207__y0ieee128 m
9991208__y0l_finite m
10001209__y1_finite m
10011210__y1f128_finite m
10021211__y1f_finite m
1212__y1ieee128 m
10031213__y1l_finite m
10041214__yn_finite m
10051215__ynf128_finite m
10061216__ynf_finite m
1217__ynieee128 m
10071218__ynl_finite m
10081219_authenticate c
10091220_dl_mcount ld
......@@ -2727,17 +2938,19 @@ pthread_attr_getinheritsched c
27272938pthread_attr_getschedparam c
27282939pthread_attr_getschedpolicy c
27292940pthread_attr_getscope c
2941pthread_attr_getsigmask_np c
27302942pthread_attr_getstack pthread
27312943pthread_attr_getstackaddr pthread
27322944pthread_attr_getstacksize pthread
27332945pthread_attr_init c
2734pthread_attr_setaffinity_np pthread
2946pthread_attr_setaffinity_np c
27352947pthread_attr_setdetachstate c
27362948pthread_attr_setguardsize pthread
27372949pthread_attr_setinheritsched c
27382950pthread_attr_setschedparam c
27392951pthread_attr_setschedpolicy c
27402952pthread_attr_setscope c
2953pthread_attr_setsigmask_np c
27412954pthread_attr_setstack pthread
27422955pthread_attr_setstackaddr pthread
27432956pthread_attr_setstacksize pthread
......@@ -2767,9 +2980,9 @@ pthread_create pthread
27672980pthread_detach pthread
27682981pthread_equal c
27692982pthread_exit c
2770pthread_getaffinity_np pthread
2983pthread_getaffinity_np c
27712984pthread_getattr_default_np pthread
2772pthread_getattr_np pthread
2985pthread_getattr_np c
27732986pthread_getconcurrency pthread
27742987pthread_getcpuclockid pthread
27752988pthread_getname_np pthread
......@@ -2835,7 +3048,7 @@ pthread_setname_np pthread
28353048pthread_setschedparam c
28363049pthread_setschedprio pthread
28373050pthread_setspecific pthread
2838pthread_sigmask pthread
3051pthread_sigmask c
28393052pthread_sigqueue pthread
28403053pthread_spin_destroy pthread
28413054pthread_spin_init pthread
......@@ -3140,12 +3353,14 @@ shmctl c
31403353shmdt c
31413354shmget c
31423355shutdown c
3356sigabbrev_np c
31433357sigaction c
31443358sigaddset c
31453359sigaltstack c
31463360sigandset c
31473361sigblock c
31483362sigdelset c
3363sigdescr_np c
31493364sigemptyset c
31503365sigfillset c
31513366siggetmask c
......@@ -3251,6 +3466,8 @@ strdup c
32513466strerror c
32523467strerror_l c
32533468strerror_r c
3469strerrordesc_np c
3470strerrorname_np c
32543471strfmon c
32553472strfmon_l c
32563473strfromd c
lib/libc/glibc/vers.txt+1
......@@ -40,3 +40,4 @@ GLIBC_2.28
4040GLIBC_2.29
4141GLIBC_2.30
4242GLIBC_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 @@
5353#define HWCAP_SSBS (1 << 28)
5454#define HWCAP_SB (1 << 29)
5555#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 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
2626
2727/* See <bits/types.h> for the meaning of these macros. This file exists so
2828 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
3051#define __DEV_T_TYPE __UQUAD_TYPE
3152#define __UID_T_TYPE __U32_TYPE
3253#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
3454#define __INO64_T_TYPE __UQUAD_TYPE
3555#define __MODE_T_TYPE __U32_TYPE
3656#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
3857#define __OFF64_T_TYPE __SQUAD_TYPE
3958#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
4159#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
4360#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
4561#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
4762#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
4863#define __FSWORD_T_TYPE __SWORD_TYPE
4964#define __ID_T_TYPE __U32_TYPE
5065#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
5266#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5468#define __DADDR_T_TYPE __S32_TYPE
5569#define __KEY_T_TYPE __S32_TYPE
5670#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -62,7 +76,7 @@
6276#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
6377#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__
79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
6680/* Tell the libc code that off_t and off64_t are actually the same type
6781 for all ABI purposes, even if possibly expressed as different base types
6882 for C type-checking purposes. */
......@@ -76,11 +90,17 @@
7690
7791/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7892# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
7996#else
8097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
8299# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83102#endif
103
84104/* Number of descriptors that can fit in an `fd_set'. */
85105#define __FD_SETSIZE 1024
86106
lib/libc/include/aarch64-linux-gnu/gnu/lib-names-lp64.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/aarch64-linux-gnu/gnu/stubs-lp64.h+1-4
......@@ -15,10 +15,7 @@
1515#define __stub_chflags
1616#define __stub_fchflags
1717#define __stub_gtty
18#define __stub_lchmod
1918#define __stub_revoke
2019#define __stub_setlogin
2120#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 @@
5353#define HWCAP_SSBS (1 << 28)
5454#define HWCAP_SB (1 << 29)
5555#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 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
2626
2727/* See <bits/types.h> for the meaning of these macros. This file exists so
2828 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
3051#define __DEV_T_TYPE __UQUAD_TYPE
3152#define __UID_T_TYPE __U32_TYPE
3253#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
3454#define __INO64_T_TYPE __UQUAD_TYPE
3555#define __MODE_T_TYPE __U32_TYPE
3656#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
3857#define __OFF64_T_TYPE __SQUAD_TYPE
3958#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
4159#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
4360#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
4561#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
4762#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
4863#define __FSWORD_T_TYPE __SWORD_TYPE
4964#define __ID_T_TYPE __U32_TYPE
5065#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
5266#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5468#define __DADDR_T_TYPE __S32_TYPE
5569#define __KEY_T_TYPE __S32_TYPE
5670#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -62,7 +76,7 @@
6276#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
6377#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__
79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
6680/* Tell the libc code that off_t and off64_t are actually the same type
6781 for all ABI purposes, even if possibly expressed as different base types
6882 for C type-checking purposes. */
......@@ -76,11 +90,17 @@
7690
7791/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7892# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
7996#else
8097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
8299# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83102#endif
103
84104/* Number of descriptors that can fit in an `fd_set'. */
85105#define __FD_SETSIZE 1024
86106
lib/libc/include/aarch64_be-linux-gnu/gnu/lib-names-lp64_be.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/aarch64_be-linux-gnu/gnu/stubs-lp64_be.h+1-4
......@@ -15,10 +15,7 @@
1515#define __stub_chflags
1616#define __stub_fchflags
1717#define __stub_gtty
18#define __stub_lchmod
1918#define __stub_revoke
2019#define __stub_setlogin
2120#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 @@
3737#ifndef __NO_LONG_DOUBLE_MATH
3838# define __NO_LONG_DOUBLE_MATH 1
3939#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 @@
3737#ifndef __NO_LONG_DOUBLE_MATH
3838# define __NO_LONG_DOUBLE_MATH 1
3939#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 @@
3737#ifndef __NO_LONG_DOUBLE_MATH
3838# define __NO_LONG_DOUBLE_MATH 1
3939#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 @@
3737#ifndef __NO_LONG_DOUBLE_MATH
3838# define __NO_LONG_DOUBLE_MATH 1
3939#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))
554554# endif
555555#endif /* Use extern inlines. */
556556
557#ifdef __LDBL_COMPAT
557#include <bits/floatn.h>
558#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
558559# include <bits/argp-ldbl.h>
559560#endif
560561
lib/libc/include/generic-glibc/bits/fcntl-linux.h+2-1
......@@ -290,7 +290,8 @@ struct f_owner_ex
290290
291291#ifdef __USE_GNU
292292/* Hint values for F_{GET,SET}_RW_HINT. */
293# define RWF_WRITE_LIFE_NOT_SET 0
293# define RWH_WRITE_LIFE_NOT_SET 0
294# define RWF_WRITE_LIFE_NOT_SET RWH_WRITE_LIFE_NOT_SET
294295# define RWH_WRITE_LIFE_NONE 1
295296# define RWH_WRITE_LIFE_SHORT 2
296297# 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/* Macros to control TS 18661-3 glibc features on MIPS platforms.
1/* Macros to control TS 18661-3 glibc features on ldbl-128 platforms.
22 Copyright (C) 2017-2020 Free Software Foundation, Inc.
33 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 @@
2121#if !defined __NO_LONG_DOUBLE_MATH && _MIPS_SIM == _ABIO32
2222# define __NO_LONG_DOUBLE_MATH 1
2323#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 @@
1616 License along with the GNU C Library; if not, see
1717 <https://www.gnu.org/licenses/>. */
1818
19
2019/* Classify given number. */
21__MATHDECL_1 (int, __fpclassify,, (_Mdouble_ __value))
20__MATHDECL_ALIAS (int, __fpclassify,, (_Mdouble_ __value), fpclassify)
2221 __attribute__ ((__const__));
2322
2423/* Test for negative number. */
25__MATHDECL_1 (int, __signbit,, (_Mdouble_ __value))
24__MATHDECL_ALIAS (int, __signbit,, (_Mdouble_ __value), signbit)
2625 __attribute__ ((__const__));
2726
2827/* Return 0 if VALUE is finite or NaN, +1 if it
2928 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
3232/* 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
3536/* 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
3840/* Test equality. */
39__MATHDECL_1 (int, __iseqsig,, (_Mdouble_ __x, _Mdouble_ __y));
41__MATHDECL_ALIAS (int, __iseqsig,, (_Mdouble_ __x, _Mdouble_ __y), iseqsig);
4042
4143/* Test for signaling NaN. */
42__MATHDECL_1 (int, __issignaling,, (_Mdouble_ __value))
44__MATHDECL_ALIAS (int, __issignaling,, (_Mdouble_ __value), issignaling)
4345 __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));
174174 && !__MATH_DECLARING_FLOATN
175175/* Return 0 if VALUE is finite or NaN, +1 if it
176176 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__));
178179# endif
179180
180181# if !__MATH_DECLARING_FLOATN
181182/* 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
184186/* Return the remainder of X/Y. */
185187__MATHCALL (drem,, (_Mdouble_ __x, _Mdouble_ __y));
......@@ -208,7 +210,8 @@ __MATHCALL (nan,, (const char *__tagb));
208210 || __MATH_DECLARING_DOUBLE == 0)) /* isnanf or isnanl don't. */ \
209211 && !__MATH_DECLARING_FLOATN
210212/* 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__));
212215# endif
213216#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 @@
2424/* Flags for mremap. */
2525# define MREMAP_MAYMOVE 1
2626# define MREMAP_FIXED 2
27# define MREMAP_DONTUNMAP 4
2728
2829/* Flags for memfd_create. */
2930# 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 @@
2020#endif
2121
2222#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
2530/* Define options for message queue functions. */
2631#define MSG_NOERROR 010000 /* no error if message is too big */
......@@ -29,38 +34,6 @@
2934# define MSG_COPY 040000 /* copy (not remove) all queue messages */
3035#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
6437#ifdef __USE_MISC
6538
6639# define msg_cbytes __msg_cbytes
lib/libc/include/generic-glibc/bits/resource.h+1-1
......@@ -98,7 +98,7 @@ enum __rlimit_resource
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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 @@
2020#endif
2121
2222#include <sys/types.h>
23#include <bits/sem-pad.h>
23#include <bits/timesize.h>
24#include <bits/types/struct_semid_ds.h>
2425
2526/* Flags for `semop'. */
2627#define SEM_UNDO 0x1000 /* undo the operation on exit */
......@@ -34,29 +35,6 @@
3435#define SETVAL 16 /* set semval */
3536#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
6038/* The user should define a union like the following to use it for arguments
6139 for `semctl'.
6240
lib/libc/include/generic-glibc/bits/semaphore.h+6-3
......@@ -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.
23 This file is part of the GNU C Library.
34
45 The GNU C Library is free software; you can redistribute it and/or
......@@ -12,14 +13,16 @@
1213 Lesser General Public License for more details.
1314
1415 You should have received a copy of the GNU Lesser General Public
15 License along with the GNU C Library. If not, see
16 License along with the GNU C Library; if not, see
1617 <https://www.gnu.org/licenses/>. */
1718
1819#ifndef _SEMAPHORE_H
1920# error "Never use <bits/semaphore.h> directly; include <semaphore.h> instead."
2021#endif
2122
22#if _MIPS_SIM == _ABI64
23#include <bits/wordsize.h>
24
25#if __WORDSIZE == 64
2326# define __SIZEOF_SEM_T 32
2427#else
2528# 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 @@
2222#include <bits/types.h>
2323#include <bits/wordsize.h>
2424#include <bits/shmlba.h>
25#include <bits/shm-pad.h>
2625
2726/* Permission flag for shmget. */
2827#define SHM_R 0400 /* or S_IRUGO from <linux/stat.h> */
......@@ -43,39 +42,7 @@ __BEGIN_DECLS
4342/* Type to count number of attaches. */
4443typedef __syscall_ulong_t shmatt_t;
4544
46#if __SHM_PAD_BEFORE_TIME
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 };
45#include <bits/types/struct_shmid_ds.h>
7946
8047#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 @@
5757#define SIGQUIT 3 /* Quit. */
5858#define SIGTRAP 5 /* Trace/breakpoint trap. */
5959#define SIGKILL 9 /* Killed. */
60#define SIGBUS 10 /* Bus error. */
61#define SIGSYS 12 /* Bad system call. */
6260#define SIGPIPE 13 /* Broken pipe. */
6361#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
8563/* Archaic names for compatibility. */
8664#define SIGIO SIGPOLL /* I/O now possible (4.2 BSD). */
8765#define SIGIOT SIGABRT /* IOT instruction, abort() on a PDP-11. */
......@@ -93,8 +71,9 @@
9371 but some real-time signals may be used internally by glibc. Do not
9472 use these constants in application code; use SIGRTMIN and SIGRTMAX
9573 (defined in signal.h) instead. */
96#define __SIGRTMIN 32
97#define __SIGRTMAX __SIGRTMIN
74
75/* Include system specific bits. */
76#include <bits/signum-arch.h>
9877
9978/* Biggest signal number + 1 (including real-time signals). */
10079#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 @@
2020# error "Never include <bits/socket-constants.h> directly; use <sys/socket.h> instead."
2121#endif
2222
23#include <bits/timesize.h>
24
2325#define SOL_SOCKET 1
2426#define SO_ACCEPTCONN 30
2527#define SO_BROADCAST 6
......@@ -30,9 +32,19 @@
3032#define SO_OOBINLINE 10
3133#define SO_RCVBUF 8
3234#define SO_RCVLOWAT 18
33#define SO_RCVTIMEO 20
35#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
3441#define SO_REUSEADDR 2
3542#define SO_SNDBUF 7
3643#define SO_SNDLOWAT 19
37#define SO_SNDTIMEO 21
44#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
3850#define SO_TYPE 3
\ No newline at end of file
lib/libc/include/generic-glibc/bits/statx-generic.h+1
......@@ -48,6 +48,7 @@
4848# define STATX_ATTR_NODUMP 0x0040
4949# define STATX_ATTR_ENCRYPTED 0x0800
5050# define STATX_ATTR_AUTOMOUNT 0x1000
51# define STATX_ATTR_VERITY 0x100000
5152#endif /* !STATX_TYPE */
5253
5354__BEGIN_DECLS
lib/libc/include/generic-glibc/bits/stdio-ldbl.h+31-15
......@@ -27,9 +27,17 @@ __LDBL_REDIR_DECL (vfprintf)
2727__LDBL_REDIR_DECL (vprintf)
2828__LDBL_REDIR_DECL (vsprintf)
2929#if !__GLIBC_USE (DEPRECATED_SCANF)
30# if defined __LDBL_COMPAT
3031__LDBL_REDIR1_DECL (fscanf, __nldbl___isoc99_fscanf)
3132__LDBL_REDIR1_DECL (scanf, __nldbl___isoc99_scanf)
3233__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
3341#else
3442__LDBL_REDIR_DECL (fscanf)
3543__LDBL_REDIR_DECL (scanf)
......@@ -43,9 +51,17 @@ __LDBL_REDIR_DECL (vsnprintf)
4351
4452#ifdef __USE_ISOC99
4553# if !__GLIBC_USE (DEPRECATED_SCANF)
54# if defined __LDBL_COMPAT
4655__LDBL_REDIR1_DECL (vfscanf, __nldbl___isoc99_vfscanf)
4756__LDBL_REDIR1_DECL (vscanf, __nldbl___isoc99_vscanf)
4857__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
4965# else
5066__LDBL_REDIR_DECL (vfscanf)
5167__LDBL_REDIR_DECL (vsscanf)
......@@ -60,33 +76,33 @@ __LDBL_REDIR_DECL (dprintf)
6076
6177#ifdef __USE_GNU
6278__LDBL_REDIR_DECL (vasprintf)
63__LDBL_REDIR_DECL (__asprintf)
79__LDBL_REDIR2_DECL (asprintf)
6480__LDBL_REDIR_DECL (asprintf)
6581__LDBL_REDIR_DECL (obstack_printf)
6682__LDBL_REDIR_DECL (obstack_vprintf)
6783#endif
6884
6985#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
70__LDBL_REDIR_DECL (__sprintf_chk)
71__LDBL_REDIR_DECL (__vsprintf_chk)
86__LDBL_REDIR2_DECL (sprintf_chk)
87__LDBL_REDIR2_DECL (vsprintf_chk)
7288# if defined __USE_ISOC99 || defined __USE_UNIX98
73__LDBL_REDIR_DECL (__snprintf_chk)
74__LDBL_REDIR_DECL (__vsnprintf_chk)
89__LDBL_REDIR2_DECL (snprintf_chk)
90__LDBL_REDIR2_DECL (vsnprintf_chk)
7591# endif
7692# if __USE_FORTIFY_LEVEL > 1
77__LDBL_REDIR_DECL (__fprintf_chk)
78__LDBL_REDIR_DECL (__printf_chk)
79__LDBL_REDIR_DECL (__vfprintf_chk)
80__LDBL_REDIR_DECL (__vprintf_chk)
93__LDBL_REDIR2_DECL (fprintf_chk)
94__LDBL_REDIR2_DECL (printf_chk)
95__LDBL_REDIR2_DECL (vfprintf_chk)
96__LDBL_REDIR2_DECL (vprintf_chk)
8197# ifdef __USE_XOPEN2K8
82__LDBL_REDIR_DECL (__dprintf_chk)
83__LDBL_REDIR_DECL (__vdprintf_chk)
98__LDBL_REDIR2_DECL (dprintf_chk)
99__LDBL_REDIR2_DECL (vdprintf_chk)
84100# endif
85101# ifdef __USE_GNU
86__LDBL_REDIR_DECL (__asprintf_chk)
87__LDBL_REDIR_DECL (__vasprintf_chk)
88__LDBL_REDIR_DECL (__obstack_printf_chk)
89__LDBL_REDIR_DECL (__obstack_vprintf_chk)
102__LDBL_REDIR2_DECL (asprintf_chk)
103__LDBL_REDIR2_DECL (vasprintf_chk)
104__LDBL_REDIR2_DECL (obstack_printf_chk)
105__LDBL_REDIR2_DECL (obstack_vprintf_chk)
90106# endif
91107# endif
92108#endif
\ No newline at end of file
lib/libc/include/generic-glibc/bits/stdio2.h+16-9
......@@ -24,10 +24,12 @@
2424#endif
2525
2626extern 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));
2829extern int __vsprintf_chk (char *__restrict __s, int __flag, size_t __slen,
2930 const char *__restrict __format,
30 __gnuc_va_list __ap) __THROW;
31 __gnuc_va_list __ap) __THROW
32 __attr_access ((__write_only__, 1, 3));
3133
3234#ifdef __va_arg_pack
3335__fortify_function int
......@@ -54,7 +56,8 @@ __NTH (vsprintf (char *__restrict __s, const char *__restrict __fmt,
5456
5557extern int __snprintf_chk (char *__restrict __s, size_t __n, int __flag,
5658 size_t __slen, const char *__restrict __format,
57 ...) __THROW;
59 ...) __THROW
60 __attr_access ((__write_only__, 1, 2));
5861extern int __vsnprintf_chk (char *__restrict __s, size_t __n, int __flag,
5962 size_t __slen, const char *__restrict __format,
6063 __gnuc_va_list __ap) __THROW;
......@@ -241,17 +244,19 @@ gets (char *__str)
241244#endif
242245
243246extern 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));
245249extern char *__REDIRECT (__fgets_alias,
246250 (char *__restrict __s, int __n,
247 FILE *__restrict __stream), fgets) __wur;
251 FILE *__restrict __stream), fgets)
252 __wur __attr_access ((__write_only__, 1, 2));
248253extern char *__REDIRECT (__fgets_chk_warn,
249254 (char *__restrict __s, size_t __size, int __n,
250255 FILE *__restrict __stream), __fgets_chk)
251256 __wur __warnattr ("fgets called with bigger size than length "
252257 "of destination buffer");
253258
254__fortify_function __wur char *
259__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
255260fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
256261{
257262 if (__bos (__s) != (size_t) -1)
......@@ -299,17 +304,19 @@ fread (void *__restrict __ptr, size_t __size, size_t __n,
299304
300305#ifdef __USE_GNU
301306extern 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));
303309extern char *__REDIRECT (__fgets_unlocked_alias,
304310 (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));
306313extern char *__REDIRECT (__fgets_unlocked_chk_warn,
307314 (char *__restrict __s, size_t __size, int __n,
308315 FILE *__restrict __stream), __fgets_unlocked_chk)
309316 __wur __warnattr ("fgets_unlocked called with bigger size than length "
310317 "of destination buffer");
311318
312__fortify_function __wur char *
319__fortify_function __wur __attr_access ((__write_only__, 1, 2)) char *
313320fgets_unlocked (char *__restrict __s, int __n, FILE *__restrict __stream)
314321{
315322 if (__bos (__s) != (size_t) -1)
lib/libc/include/generic-glibc/bits/stdlib-ldbl.h+22
......@@ -21,21 +21,43 @@
2121#endif
2222
2323#ifdef __USE_ISOC99
24# ifdef __LDBL_COMPAT
2425__LDBL_REDIR1_DECL (strtold, strtod)
26# else
27__LDBL_REDIR1_DECL (strtold, __strtoieee128)
28# endif
2529#endif
2630
2731#ifdef __USE_GNU
32# ifdef __LDBL_COMPAT
2833__LDBL_REDIR1_DECL (strtold_l, strtod_l)
34# else
35__LDBL_REDIR1_DECL (strtold_l, __strtoieee128_l)
36# endif
2937#endif
3038
3139#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
40# ifdef __LDBL_COMPAT
3241__LDBL_REDIR1_DECL (strfroml, strfromd)
42# else
43__LDBL_REDIR1_DECL (strfroml, __strfromieee128)
44# endif
3345#endif
3446
3547#ifdef __USE_MISC
48# if defined __LDBL_COMPAT
3649__LDBL_REDIR1_DECL (qecvt, ecvt)
3750__LDBL_REDIR1_DECL (qfcvt, fcvt)
3851__LDBL_REDIR1_DECL (qgcvt, gcvt)
3952__LDBL_REDIR1_DECL (qecvt_r, ecvt_r)
4053__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
4163#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))
5050
5151
5252extern 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));
5455extern int __REDIRECT_NTH (__ptsname_r_alias, (int __fd, char *__buf,
5556 size_t __buflen), ptsname_r)
56 __nonnull ((2));
57 __nonnull ((2)) __attr_access ((__write_only__, 2, 3));
5758extern int __REDIRECT_NTH (__ptsname_r_chk_warn,
5859 (int __fd, char *__buf, size_t __buflen,
5960 size_t __nreal), __ptsname_r_chk)
......@@ -97,11 +98,13 @@ __NTH (wctomb (char *__s, wchar_t __wchar))
9798
9899extern size_t __mbstowcs_chk (wchar_t *__restrict __dst,
99100 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));
101103extern size_t __REDIRECT_NTH (__mbstowcs_alias,
102104 (wchar_t *__restrict __dst,
103105 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));
105108extern size_t __REDIRECT_NTH (__mbstowcs_chk_warn,
106109 (wchar_t *__restrict __dst,
107110 const char *__restrict __src,
......@@ -129,11 +132,13 @@ __NTH (mbstowcs (wchar_t *__restrict __dst, const char *__restrict __src,
129132
130133extern size_t __wcstombs_chk (char *__restrict __dst,
131134 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));
133137extern size_t __REDIRECT_NTH (__wcstombs_alias,
134138 (char *__restrict __dst,
135139 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));
137142extern size_t __REDIRECT_NTH (__wcstombs_chk_warn,
138143 (char *__restrict __dst,
139144 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))
7575# include <bits/strings_fortified.h>
7676
7777void __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
8080__fortify_function void
8181__NTH (explicit_bzero (void *__dest, size_t __len))
......@@ -108,7 +108,8 @@ __NTH (strncpy (char *__restrict __dest, const char *__restrict __src,
108108
109109/* XXX We have no corresponding builtin yet. */
110110extern 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));
112113extern char *__REDIRECT_NTH (__stpncpy_alias, (char *__dest, const char *__src,
113114 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 @@
11/* 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
44#ifndef _SYSCALL_H
55# error "Never use <bits/syscall.h> directly; include <sys/syscall.h> instead."
66#endif
77
8#define __GLIBC_LINUX_VERSION_CODE 328704
8#define __GLIBC_LINUX_VERSION_CODE 329472
99
1010#ifdef __NR_FAST_atomic_update
1111# define SYS_FAST_atomic_update __NR_FAST_atomic_update
......@@ -75,6 +75,18 @@
7575# define SYS_alloc_hugepages __NR_alloc_hugepages
7676#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
7890#ifdef __NR_arch_prctl
7991# define SYS_arch_prctl __NR_arch_prctl
8092#endif
......@@ -1079,6 +1091,10 @@
10791091# define SYS_openat __NR_openat
10801092#endif
10811093
1094#ifdef __NR_openat2
1095# define SYS_openat2 __NR_openat2
1096#endif
1097
10821098#ifdef __NR_osf_adjtime
10831099# define SYS_osf_adjtime __NR_osf_adjtime
10841100#endif
......@@ -1551,6 +1567,10 @@
15511567# define SYS_personality __NR_personality
15521568#endif
15531569
1570#ifdef __NR_pidfd_getfd
1571# define SYS_pidfd_getfd __NR_pidfd_getfd
1572#endif
1573
15541574#ifdef __NR_pidfd_open
15551575# define SYS_pidfd_open __NR_pidfd_open
15561576#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)
2727#endif
2828
2929#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
30__LDBL_REDIR_DECL (__syslog_chk)
30__LDBL_REDIR2_DECL (syslog_chk)
3131
3232# ifdef __USE_MISC
33__LDBL_REDIR_DECL (__vsyslog_chk)
33__LDBL_REDIR2_DECL (vsyslog_chk)
3434# endif
3535#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
116116 unsigned int __g_signals[2];
117117};
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
119129#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. */
160160__STD_TYPE __TIME_T_TYPE __time_t; /* Seconds since the Epoch. */
161161__STD_TYPE __USECONDS_T_TYPE __useconds_t; /* Count of microseconds. */
162162__STD_TYPE __SUSECONDS_T_TYPE __suseconds_t; /* Signed count of microseconds. */
163__STD_TYPE __SUSECONDS64_T_TYPE __suseconds64_t;
163164
164165__STD_TYPE __DADDR_T_TYPE __daddr_t; /* The type of a disk address. */
165166__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 @@
5050#define __TIME_T_TYPE __SLONGWORD_TYPE
5151#define __USECONDS_T_TYPE __U32_TYPE
5252#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5354#define __DADDR_T_TYPE __S32_TYPE
5455#define __KEY_T_TYPE __S32_TYPE
5556#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -75,10 +76,16 @@
7576
7677/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7778# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
7882#else
7983# define __RLIM_T_MATCHES_RLIM64_T 0
8084
8185# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
8289#endif
8390
8491/* Number of descriptors that can fit in an `fd_set'. */
lib/libc/include/generic-glibc/bits/unistd.h+35-23
......@@ -21,9 +21,11 @@
2121#endif
2222
2323extern 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));
2526extern 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));
2729extern ssize_t __REDIRECT (__read_chk_warn,
2830 (int __fd, void *__buf, size_t __nbytes,
2931 size_t __buflen), __read_chk)
......@@ -46,15 +48,19 @@ read (int __fd, void *__buf, size_t __nbytes)
4648
4749#ifdef __USE_UNIX98
4850extern 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));
5053extern 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));
5256extern ssize_t __REDIRECT (__pread_alias,
5357 (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));
5560extern ssize_t __REDIRECT (__pread64_alias,
5661 (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));
5864extern ssize_t __REDIRECT (__pread_chk_warn,
5965 (int __fd, void *__buf, size_t __nbytes,
6066 __off_t __offset, size_t __bufsize), __pread_chk)
......@@ -123,11 +129,11 @@ pread64 (int __fd, void *__buf, size_t __nbytes, __off64_t __offset)
123129extern ssize_t __readlink_chk (const char *__restrict __path,
124130 char *__restrict __buf, size_t __len,
125131 size_t __buflen)
126 __THROW __nonnull ((1, 2)) __wur;
132 __THROW __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
127133extern ssize_t __REDIRECT_NTH (__readlink_alias,
128134 (const char *__restrict __path,
129135 char *__restrict __buf, size_t __len), readlink)
130 __nonnull ((1, 2)) __wur;
136 __nonnull ((1, 2)) __wur __attr_access ((__write_only__, 2, 3));
131137extern ssize_t __REDIRECT_NTH (__readlink_chk_warn,
132138 (const char *__restrict __path,
133139 char *__restrict __buf, size_t __len,
......@@ -155,12 +161,12 @@ __NTH (readlink (const char *__restrict __path, char *__restrict __buf,
155161extern ssize_t __readlinkat_chk (int __fd, const char *__restrict __path,
156162 char *__restrict __buf, size_t __len,
157163 size_t __buflen)
158 __THROW __nonnull ((2, 3)) __wur;
164 __THROW __nonnull ((2, 3)) __wur __attr_access ((__write_only__, 3, 4));
159165extern ssize_t __REDIRECT_NTH (__readlinkat_alias,
160166 (int __fd, const char *__restrict __path,
161167 char *__restrict __buf, size_t __len),
162168 readlinkat)
163 __nonnull ((2, 3)) __wur;
169 __nonnull ((2, 3)) __wur __attr_access ((__write_only__, 3, 4));
164170extern ssize_t __REDIRECT_NTH (__readlinkat_chk_warn,
165171 (int __fd, const char *__restrict __path,
166172 char *__restrict __buf, size_t __len,
......@@ -187,9 +193,10 @@ __NTH (readlinkat (int __fd, const char *__restrict __path,
187193#endif
188194
189195extern char *__getcwd_chk (char *__buf, size_t __size, size_t __buflen)
190 __THROW __wur;
196 __THROW __wur __attr_access ((__write_only__, 1, 2));
191197extern 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));
193200extern char *__REDIRECT_NTH (__getcwd_chk_warn,
194201 (char *__buf, size_t __size, size_t __buflen),
195202 __getcwd_chk)
......@@ -212,7 +219,7 @@ __NTH (getcwd (char *__buf, size_t __size))
212219
213220#if defined __USE_MISC || defined __USE_XOPEN_EXTENDED
214221extern char *__getwd_chk (char *__buf, size_t buflen)
215 __THROW __nonnull ((1)) __wur;
222 __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
216223extern char *__REDIRECT_NTH (__getwd_warn, (char *__buf), getwd)
217224 __nonnull ((1)) __wur __warnattr ("please use getcwd instead, as getwd "
218225 "doesn't specify buffer size");
......@@ -227,9 +234,11 @@ __NTH (getwd (char *__buf))
227234#endif
228235
229236extern 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));
231239extern 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));
233242extern size_t __REDIRECT_NTH (__confstr_chk_warn,
234243 (int __name, char *__buf, size_t __len,
235244 size_t __buflen), __confstr_chk)
......@@ -252,9 +261,9 @@ __NTH (confstr (int __name, char *__buf, size_t __len))
252261
253262
254263extern int __getgroups_chk (int __size, __gid_t __list[], size_t __listlen)
255 __THROW __wur;
264 __THROW __wur __attr_access ((__write_only__, 2, 1));
256265extern int __REDIRECT_NTH (__getgroups_alias, (int __size, __gid_t __list[]),
257 getgroups) __wur;
266 getgroups) __wur __attr_access ((__write_only__, 2, 1));
258267extern int __REDIRECT_NTH (__getgroups_chk_warn,
259268 (int __size, __gid_t __list[], size_t __listlen),
260269 __getgroups_chk)
......@@ -277,7 +286,8 @@ __NTH (getgroups (int __size, __gid_t __list[]))
277286
278287
279288extern 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));
281291extern int __REDIRECT_NTH (__ttyname_r_alias, (int __fd, char *__buf,
282292 size_t __buflen), ttyname_r)
283293 __nonnull ((2));
......@@ -304,7 +314,7 @@ __NTH (ttyname_r (int __fd, char *__buf, size_t __buflen))
304314
305315#ifdef __USE_POSIX199506
306316extern int __getlogin_r_chk (char *__buf, size_t __buflen, size_t __nreal)
307 __nonnull ((1));
317 __nonnull ((1)) __attr_access ((__write_only__, 1, 2));
308318extern int __REDIRECT (__getlogin_r_alias, (char *__buf, size_t __buflen),
309319 getlogin_r) __nonnull ((1));
310320extern int __REDIRECT (__getlogin_r_chk_warn,
......@@ -331,9 +341,10 @@ getlogin_r (char *__buf, size_t __buflen)
331341
332342#if defined __USE_MISC || defined __USE_UNIX98
333343extern 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));
335345extern 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));
337348extern int __REDIRECT_NTH (__gethostname_chk_warn,
338349 (char *__buf, size_t __buflen, size_t __nreal),
339350 __gethostname_chk)
......@@ -358,10 +369,11 @@ __NTH (gethostname (char *__buf, size_t __buflen))
358369
359370#if defined __USE_MISC || (defined __USE_XOPEN && !defined __USE_UNIX98)
360371extern 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));
362373extern int __REDIRECT_NTH (__getdomainname_alias, (char *__buf,
363374 size_t __buflen),
364 getdomainname) __nonnull ((1)) __wur;
375 getdomainname) __nonnull ((1))
376 __wur __attr_access ((__write_only__, 1, 2));
365377extern int __REDIRECT_NTH (__getdomainname_chk_warn,
366378 (char *__buf, size_t __buflen, size_t __nreal),
367379 __getdomainname_chk)
lib/libc/include/generic-glibc/bits/wchar-ldbl.h+30-6
......@@ -28,9 +28,17 @@ __LDBL_REDIR_DECL (vfwprintf);
2828__LDBL_REDIR_DECL (vwprintf);
2929__LDBL_REDIR_DECL (vswprintf);
3030# if !__GLIBC_USE (DEPRECATED_SCANF)
31# if defined __LDBL_COMPAT
3132__LDBL_REDIR1_DECL (fwscanf, __nldbl___isoc99_fwscanf)
3233__LDBL_REDIR1_DECL (wscanf, __nldbl___isoc99_wscanf)
3334__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
3442# else
3543__LDBL_REDIR_DECL (fwscanf);
3644__LDBL_REDIR_DECL (wscanf);
......@@ -39,11 +47,23 @@ __LDBL_REDIR_DECL (swscanf);
3947#endif
4048
4149#ifdef __USE_ISOC99
50# ifdef __LDBL_COMPAT
4251__LDBL_REDIR1_DECL (wcstold, wcstod);
52# else
53__LDBL_REDIR1_DECL (wcstold, __wcstoieee128)
54# endif
4355# if !__GLIBC_USE (DEPRECATED_SCANF)
56# if defined __LDBL_COMPAT
4457__LDBL_REDIR1_DECL (vfwscanf, __nldbl___isoc99_vfwscanf)
4558__LDBL_REDIR1_DECL (vwscanf, __nldbl___isoc99_vwscanf)
4659__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
4767# else
4868__LDBL_REDIR_DECL (vfwscanf);
4969__LDBL_REDIR_DECL (vwscanf);
......@@ -52,16 +72,20 @@ __LDBL_REDIR_DECL (vswscanf);
5272#endif
5373
5474#ifdef __USE_GNU
75# ifdef __LDBL_COMPAT
5576__LDBL_REDIR1_DECL (wcstold_l, wcstod_l);
77# else
78__LDBL_REDIR1_DECL (wcstold_l, __wcstoieee128_l)
79# endif
5680#endif
5781
5882#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
59__LDBL_REDIR_DECL (__swprintf_chk)
60__LDBL_REDIR_DECL (__vswprintf_chk)
83__LDBL_REDIR2_DECL (swprintf_chk)
84__LDBL_REDIR2_DECL (vswprintf_chk)
6185# if __USE_FORTIFY_LEVEL > 1
62__LDBL_REDIR_DECL (__fwprintf_chk)
63__LDBL_REDIR_DECL (__wprintf_chk)
64__LDBL_REDIR_DECL (__vfwprintf_chk)
65__LDBL_REDIR_DECL (__vwprintf_chk)
86__LDBL_REDIR2_DECL (fwprintf_chk)
87__LDBL_REDIR2_DECL (wprintf_chk)
88__LDBL_REDIR2_DECL (vfwprintf_chk)
89__LDBL_REDIR2_DECL (vwprintf_chk)
6690# endif
6791#endif
\ No newline at end of file
lib/libc/include/generic-glibc/complex.h+27-2
......@@ -95,11 +95,15 @@ __BEGIN_DECLS
9595
9696#define __MATHCALL(function, args) \
9797 __MATHDECL (_Mdouble_complex_,function, args)
98#define __MATHDECL(type, function, args) \
98#define __MATHDECL_IMPL(type, function, args) \
9999 __MATHDECL_1(type, function, args); \
100100 __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) \
102104 extern type __MATH_PRECNAME(function) args __THROW
105#define __MATHDECL_1(type, function, args) \
106 __MATHDECL_1_IMPL(type, function, args)
103107
104108#define _Mdouble_ double
105109#define __MATH_PRECNAME(name) name
......@@ -122,11 +126,31 @@ __BEGIN_DECLS
122126# undef __MATHDECL_1
123127# define __MATHDECL_1(type, function, args) \
124128 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)
125139# endif
126140
127141# define _Mdouble_ long double
128142# define __MATH_PRECNAME(name) name##l
129143# 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
130154#endif
131155#undef _Mdouble_
132156#undef __MATH_PRECNAME
......@@ -215,6 +239,7 @@ __BEGIN_DECLS
215239# undef _Mdouble_complex_
216240#endif
217241
242#undef __MATHDECL_1_IMPL
218243#undef __MATHDECL_1
219244#undef __MATHDECL
220245#undef __MATHCALL
lib/libc/include/generic-glibc/elf.h+78-2
......@@ -330,7 +330,7 @@ typedef struct
330330#define EM_CLOUDSHIELD 192 /* CloudShield */
331331#define EM_COREA_1ST 193 /* KIPO-KAIST Core-A 1st gen. */
332332#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. */
334334#define EM_OPEN8 196 /* Open8 RISC */
335335#define EM_RL78 197 /* Renesas RL78 */
336336#define EM_VIDEOCORE5 198 /* Broadcom VideoCore V */
......@@ -721,6 +721,7 @@ typedef struct
721721#define PT_GNU_EH_FRAME 0x6474e550 /* GCC .eh_frame_hdr segment */
722722#define PT_GNU_STACK 0x6474e551 /* Indicates stack executability */
723723#define PT_GNU_RELRO 0x6474e552 /* Read-only after relocation */
724#define PT_GNU_PROPERTY 0x6474e553 /* GNU property */
724725#define PT_LOSUNW 0x6ffffffa
725726#define PT_SUNWBSS 0x6ffffffa /* Sun Specific segment */
726727#define PT_SUNWSTACK 0x6ffffffb /* Stack segment */
......@@ -1318,6 +1319,12 @@ typedef struct
13181319/* Application-specific semantics, hi */
13191320#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
13211328/* The x86 instruction sets indicated by the corresponding bits are
13221329 used in program. Their support in the hardware is optional. */
13231330#define GNU_PROPERTY_X86_ISA_1_USED 0xc0000000
......@@ -3946,8 +3953,9 @@ enum
39463953#define R_RISCV_SET16 55
39473954#define R_RISCV_SET32 56
39483955#define R_RISCV_32_PCREL 57
3956#define R_RISCV_IRELATIVE 58
39493957
3950#define R_RISCV_NUM 58
3958#define R_RISCV_NUM 59
39513959
39523960/* BPF specific declarations. */
39533961
......@@ -4027,6 +4035,74 @@ enum
40274035#define R_NDS32_TLS_TPOFF 102
40284036#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
40304106__END_DECLS
40314107
40324108#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, ...)
5252extern void verrx (int __status, const char *, __gnuc_va_list)
5353 __attribute__ ((__noreturn__, __format__ (__printf__, 2, 0)));
5454
55#ifdef __LDBL_COMPAT
55#include <bits/floatn.h>
56#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
5657# include <bits/err-ldbl.h>
5758#endif
5859
lib/libc/include/generic-glibc/error.h+4-2
......@@ -47,11 +47,13 @@ extern unsigned int error_message_count;
4747 variable controls whether this mode is selected or not. */
4848extern int error_one_per_line;
4949
50#ifdef __LDBL_COMPAT
50#include <bits/floatn.h>
51#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
5152# include <bits/error-ldbl.h>
5253#else
5354/* 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 the
55 size of double, nor when long double reuses the float128
56 implementation, because that would invalidate the redirections to the
5557 compatibility functions. */
5658# if defined __extern_always_inline && defined __va_arg_pack
5759# include <bits/error.h>
lib/libc/include/generic-glibc/features.h+1-1
......@@ -454,7 +454,7 @@
454454/* Major and minor version number of the GNU C library package. Use
455455 these macros to test for features in specific releases. */
456456#define __GLIBC__ 2
457#define __GLIBC_MINOR__ 31
457#define __GLIBC_MINOR__ 32
458458
459459#define __GLIBC_PREREQ(maj, min) \
460460 ((__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;
140140extern int fesetmode (const femode_t *__modep) __THROW;
141141#endif
142142
143/* Include optimization. */
144#ifdef __OPTIMIZE__
145# include <bits/fenvinline.h>
146#endif
147143
148144/* NaN support. */
149145
lib/libc/include/generic-glibc/gnu/lib-names-32.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-hard.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-n32_hard.h-2
......@@ -19,8 +19,6 @@
1919#define LIBNSS_FILES_SO "libnss_files.so.2"
2020#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2121#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"
2422#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2523#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2624#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-n64_hard.h-2
......@@ -19,8 +19,6 @@
1919#define LIBNSS_FILES_SO "libnss_files.so.2"
2020#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2121#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"
2422#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2523#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2624#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-o32_hard.h-2
......@@ -19,8 +19,6 @@
1919#define LIBNSS_FILES_SO "libnss_files.so.2"
2020#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2121#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"
2422#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2523#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2624#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/lib-names-soft.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/generic-glibc/gnu/stubs-32.h-2
......@@ -10,9 +10,7 @@
1010#define __stub_chflags
1111#define __stub_fchflags
1212#define __stub_gtty
13#define __stub_lchmod
1413#define __stub_revoke
1514#define __stub_setlogin
1615#define __stub_sigreturn
17#define __stub_sstk
1816#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-64.h-2
......@@ -10,9 +10,7 @@
1010#define __stub_chflags
1111#define __stub_fchflags
1212#define __stub_gtty
13#define __stub_lchmod
1413#define __stub_revoke
1514#define __stub_setlogin
1615#define __stub_sigreturn
17#define __stub_sstk
1816#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-hard.h-2
......@@ -13,9 +13,7 @@
1313#define __stub_chflags
1414#define __stub_fchflags
1515#define __stub_gtty
16#define __stub_lchmod
1716#define __stub_revoke
1817#define __stub_setlogin
1918#define __stub_sigreturn
20#define __stub_sstk
2119#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-n32_hard.h-2
......@@ -12,9 +12,7 @@
1212#define __stub_chflags
1313#define __stub_fchflags
1414#define __stub_gtty
15#define __stub_lchmod
1615#define __stub_revoke
1716#define __stub_setlogin
1817#define __stub_sigreturn
19#define __stub_sstk
2018#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-n64_hard.h-2
......@@ -12,9 +12,7 @@
1212#define __stub_chflags
1313#define __stub_fchflags
1414#define __stub_gtty
15#define __stub_lchmod
1615#define __stub_revoke
1716#define __stub_setlogin
1817#define __stub_sigreturn
19#define __stub_sstk
2018#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-o32_hard.h-2
......@@ -10,9 +10,7 @@
1010#define __stub_chflags
1111#define __stub_fchflags
1212#define __stub_gtty
13#define __stub_lchmod
1413#define __stub_revoke
1514#define __stub_setlogin
1615#define __stub_sigreturn
17#define __stub_sstk
1816#define __stub_stty
\ No newline at end of file
lib/libc/include/generic-glibc/gnu/stubs-soft.h-2
......@@ -13,9 +13,7 @@
1313#define __stub_chflags
1414#define __stub_fchflags
1515#define __stub_gtty
16#define __stub_lchmod
1716#define __stub_revoke
1817#define __stub_setlogin
1918#define __stub_sigreturn
20#define __stub_sstk
2119#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,
321321 __THROW __nonnull ((1)) __wur;
322322/* Like `strtol' but convert to `intmax_t'. */
323323__extern_inline intmax_t
324__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
325 int base))
324__NTH (strtoimax (const char *__restrict __nptr, char **__restrict __endptr,
325 int __base))
326326{
327 return __strtol_internal (nptr, endptr, base, 0);
327 return __strtol_internal (__nptr, __endptr, __base, 0);
328328}
329329
330330extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
......@@ -333,10 +333,10 @@ extern unsigned long int __strtoul_internal (const char *__restrict __nptr,
333333 __THROW __nonnull ((1)) __wur;
334334/* Like `strtoul' but convert to `uintmax_t'. */
335335__extern_inline uintmax_t
336__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
337 int base))
336__NTH (strtoumax (const char *__restrict __nptr, char **__restrict __endptr,
337 int __base))
338338{
339 return __strtoul_internal (nptr, endptr, base, 0);
339 return __strtoul_internal (__nptr, __endptr, __base, 0);
340340}
341341
342342extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
......@@ -345,10 +345,10 @@ extern long int __wcstol_internal (const __gwchar_t * __restrict __nptr,
345345 __THROW __nonnull ((1)) __wur;
346346/* Like `wcstol' but convert to `intmax_t'. */
347347__extern_inline intmax_t
348__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
349 __gwchar_t **__restrict endptr, int base))
348__NTH (wcstoimax (const __gwchar_t *__restrict __nptr,
349 __gwchar_t **__restrict __endptr, int __base))
350350{
351 return __wcstol_internal (nptr, endptr, base, 0);
351 return __wcstol_internal (__nptr, __endptr, __base, 0);
352352}
353353
354354extern unsigned long int __wcstoul_internal (const __gwchar_t *
......@@ -359,10 +359,10 @@ extern unsigned long int __wcstoul_internal (const __gwchar_t *
359359 __THROW __nonnull ((1)) __wur;
360360/* Like `wcstoul' but convert to `uintmax_t'. */
361361__extern_inline uintmax_t
362__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
363 __gwchar_t **__restrict endptr, int base))
362__NTH (wcstoumax (const __gwchar_t *__restrict __nptr,
363 __gwchar_t **__restrict __endptr, int __base))
364364{
365 return __wcstoul_internal (nptr, endptr, base, 0);
365 return __wcstoul_internal (__nptr, __endptr, __base, 0);
366366}
367367
368368# else /* __WORDSIZE == 32 */
......@@ -374,10 +374,10 @@ extern long long int __strtoll_internal (const char *__restrict __nptr,
374374 __THROW __nonnull ((1)) __wur;
375375/* Like `strtol' but convert to `intmax_t'. */
376376__extern_inline intmax_t
377__NTH (strtoimax (const char *__restrict nptr, char **__restrict endptr,
378 int base))
377__NTH (strtoimax (const char *__restrict __nptr, char **__restrict __endptr,
378 int __base))
379379{
380 return __strtoll_internal (nptr, endptr, base, 0);
380 return __strtoll_internal (__nptr, __endptr, __base, 0);
381381}
382382
383383__extension__
......@@ -390,10 +390,10 @@ extern unsigned long long int __strtoull_internal (const char *
390390 __THROW __nonnull ((1)) __wur;
391391/* Like `strtoul' but convert to `uintmax_t'. */
392392__extern_inline uintmax_t
393__NTH (strtoumax (const char *__restrict nptr, char **__restrict endptr,
394 int base))
393__NTH (strtoumax (const char *__restrict __nptr, char **__restrict __endptr,
394 int __base))
395395{
396 return __strtoull_internal (nptr, endptr, base, 0);
396 return __strtoull_internal (__nptr, __endptr, __base, 0);
397397}
398398
399399__extension__
......@@ -403,10 +403,10 @@ extern long long int __wcstoll_internal (const __gwchar_t *__restrict __nptr,
403403 __THROW __nonnull ((1)) __wur;
404404/* Like `wcstol' but convert to `intmax_t'. */
405405__extern_inline intmax_t
406__NTH (wcstoimax (const __gwchar_t *__restrict nptr,
407 __gwchar_t **__restrict endptr, int base))
406__NTH (wcstoimax (const __gwchar_t *__restrict __nptr,
407 __gwchar_t **__restrict __endptr, int __base))
408408{
409 return __wcstoll_internal (nptr, endptr, base, 0);
409 return __wcstoll_internal (__nptr, __endptr, __base, 0);
410410}
411411
412412
......@@ -420,10 +420,10 @@ extern unsigned long long int __wcstoull_internal (const __gwchar_t *
420420 __THROW __nonnull ((1)) __wur;
421421/* Like `wcstoul' but convert to `uintmax_t'. */
422422__extern_inline uintmax_t
423__NTH (wcstoumax (const __gwchar_t *__restrict nptr,
424 __gwchar_t **__restrict endptr, int base))
423__NTH (wcstoumax (const __gwchar_t *__restrict __nptr,
424 __gwchar_t **__restrict __endptr, int __base))
425425{
426 return __wcstoull_internal (nptr, endptr, base, 0);
426 return __wcstoull_internal (__nptr, __endptr, __base, 0);
427427}
428428
429429# 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;
7575
7676/* Underlying allocation function; successive calls should return
7777 contiguous pieces of memory. */
78extern void *(*__morecore) (ptrdiff_t __size);
78extern void *(*__morecore) (ptrdiff_t __size) __MALLOC_DEPRECATED;
7979
8080/* Default value of `__morecore'. */
8181extern void *__default_morecore (ptrdiff_t __size)
82__THROW __attribute_malloc__;
82__THROW __attribute_malloc__ __MALLOC_DEPRECATED;
8383
8484/* SVID2/XPG mallinfo structure */
8585
......@@ -156,7 +156,8 @@ extern void *(*__MALLOC_HOOK_VOLATILE __memalign_hook)(size_t __alignment,
156156 size_t __size,
157157 const void *)
158158__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
162163__END_DECLS
lib/libc/include/generic-glibc/math.h+68-20
......@@ -279,8 +279,17 @@ enum
279279#define __MATHDECLX(type, function,suffix, args, attrib) \
280280 __MATHDECL_1(type, function,suffix, args) __attribute__ (attrib); \
281281 __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) \
283283 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
285294#define _Mdouble_ double
286295#define __MATH_PRECNAME(name,r) __CONCAT(name,r)
......@@ -331,11 +340,37 @@ extern long double __REDIRECT_NTH (nexttowardl,
331340# endif
332341
333342# undef __MATHDECL_1
334# define __MATHDECL_2(type, function,suffix, args, alias) \
335 extern type __REDIRECT_NTH(__MATH_PRECNAME(function,suffix), \
336 args, alias)
337343# 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))
339374# endif
340375
341376/* Include the file of declarations again, this time using `long double'
......@@ -348,11 +383,23 @@ extern long double __REDIRECT_NTH (nexttowardl,
348383# define __MATH_DECLARE_LDOUBLE 1
349384# include <bits/mathcalls-helper-functions.h>
350385# include <bits/mathcalls.h>
386
351387# undef _Mdouble_
352388# undef __MATH_PRECNAME
353389# undef __MATH_DECLARING_DOUBLE
354390# 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
356403# endif /* !(__NO_LONG_DOUBLE_MATH && _LIBC) || __LDBL_COMPAT */
357404
358405#endif /* Use ISO C99. */
......@@ -479,7 +526,9 @@ extern long double __REDIRECT_NTH (nexttowardl,
479526# undef __MATH_DECLARING_FLOATN
480527#endif /* __HAVE_DISTINCT_FLOAT128X || (__HAVE_FLOAT128X && !_LIBC). */
481528
529#undef __MATHDECL_1_IMPL
482530#undef __MATHDECL_1
531#undef __MATHDECL_ALIAS
483532#undef __MATHDECL
484533#undef __MATHCALL
485534
......@@ -511,6 +560,11 @@ extern long double __REDIRECT_NTH (nexttowardl,
511560# ifdef __LDBL_COMPAT
512561# define __MATHCALL_REDIR_NAME(name) f ## name
513562# 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
514568# define __MATHCALL_NARROW(func, redir, nargs) \
515569 __MATHCALL_NARROW_REDIR (func, redir, nargs)
516570# endif
......@@ -518,7 +572,8 @@ extern long double __REDIRECT_NTH (nexttowardl,
518572# undef _Mret_
519573# undef _Marg_
520574# undef __MATHCALL_NAME
521# ifdef __LDBL_COMPAT
575# if defined __LDBL_COMPAT \
576 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
522577# undef __MATHCALL_REDIR_NAME
523578# undef __MATHCALL_NARROW
524579# define __MATHCALL_NARROW(func, redir, nargs) \
......@@ -531,6 +586,11 @@ extern long double __REDIRECT_NTH (nexttowardl,
531586# ifdef __LDBL_COMPAT
532587# define __MATHCALL_REDIR_NAME(name) __nldbl_d ## name ## l
533588# 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
534594# define __MATHCALL_NARROW(func, redir, nargs) \
535595 __MATHCALL_NARROW_REDIR (func, redir, nargs)
536596# endif
......@@ -538,7 +598,8 @@ extern long double __REDIRECT_NTH (nexttowardl,
538598# undef _Mret_
539599# undef _Marg_
540600# undef __MATHCALL_NAME
541# ifdef __LDBL_COMPAT
601# if defined __LDBL_COMPAT \
602 || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
542603# undef __MATHCALL_REDIR_NAME
543604# undef __MATHCALL_NARROW
544605# define __MATHCALL_NARROW(func, redir, nargs) \
......@@ -1196,13 +1257,6 @@ iszero (__T __val)
11961257# error "M_* values needed for _Float128x"
11971258#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
12061260#ifdef __USE_ISOC99
12071261# if __GNUC_PREREQ (3, 1)
12081262/* ISO C99 defines some macros to compare number while taking care for
......@@ -1240,12 +1294,6 @@ iszero (__T __val)
12401294# endif
12411295#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
12491297#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
12501298/* An expression whose type has the widest of the evaluation formats
12511299 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,
5050 __THROW __attribute_format_strfmon__ (4, 5);
5151#endif
5252
53#ifdef __LDBL_COMPAT
53#include <bits/floatn.h>
54#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
5455# include <bits/monetary-ldbl.h>
5556#endif
5657
lib/libc/include/generic-glibc/netinet/icmp6.h+4-4
......@@ -85,16 +85,16 @@ struct icmp6_hdr
8585#define ICMP6_PARAMPROB_OPTION 2 /* unrecognized IPv6 option */
8686
8787#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
9090#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
9393#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
9696#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
9999#define ICMP6_FILTER_SETPASSALL(filterp) \
100100 memset (filterp, 0, sizeof (struct icmp6_filter));
lib/libc/include/generic-glibc/netinet/in.h+4
......@@ -87,8 +87,12 @@ enum
8787#define IPPROTO_UDPLITE IPPROTO_UDPLITE
8888 IPPROTO_MPLS = 137, /* MPLS in IP. */
8989#define IPPROTO_MPLS IPPROTO_MPLS
90 IPPROTO_ETHERNET = 143, /* Ethernet-within-IPv6 Encapsulation. */
91#define IPPROTO_ETHERNET IPPROTO_ETHERNET
9092 IPPROTO_RAW = 255, /* Raw IP packets. */
9193#define IPPROTO_RAW IPPROTO_RAW
94 IPPROTO_MPTCP = 262, /* Multipath TCP connection. */
95#define IPPROTO_MPTCP IPPROTO_MPTCP
9296 IPPROTO_MAX
9397 };
9498
lib/libc/include/generic-glibc/nss.h+201-2
......@@ -19,10 +19,12 @@
1919 and for implementors of new services. */
2020
2121#ifndef _NSS_H
22#define _NSS_H 1
22#define _NSS_H 1
2323
2424#include <features.h>
25#include <stddef.h>
2526#include <stdint.h>
27#include <sys/types.h>
2628
2729
2830__BEGIN_DECLS
......@@ -56,7 +58,204 @@ struct gaih_addrtuple
5658 Attention: Using this function repeatedly will slowly eat up the
5759 whole memory since previous selection data cannot be freed. */
5860extern 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
61260__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
182182 __info, size_t __n, int *__restrict __argtypes)
183183 __THROW;
184184
185#ifdef __LDBL_COMPAT
185#include <bits/floatn.h>
186#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
186187# include <bits/printf-ldbl.h>
187188#endif
188189
lib/libc/include/generic-glibc/pthread.h+15
......@@ -27,6 +27,7 @@
2727#include <bits/setjmp.h>
2828#include <bits/wordsize.h>
2929#include <bits/types/struct_timespec.h>
30#include <bits/types/__sigset_t.h>
3031
3132
3233/* Detach state. */
......@@ -385,6 +386,20 @@ extern int pthread_attr_getaffinity_np (const pthread_attr_t *__attr,
385386extern int pthread_getattr_default_np (pthread_attr_t *__attr)
386387 __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
388403/* Set the default attributes to be used by pthread_create in this
389404 process. */
390405extern int pthread_setattr_default_np (const pthread_attr_t *__attr)
lib/libc/include/generic-glibc/signal.h+17-14
......@@ -27,7 +27,7 @@
2727__BEGIN_DECLS
2828
2929#include <bits/types.h>
30#include <bits/signum.h>
30#include <bits/signum-generic.h>
3131
3232#include <bits/types/sig_atomic_t.h>
3333
......@@ -148,7 +148,8 @@ extern void psiginfo (const siginfo_t *__pinfo, const char *__s);
148148
149149#ifdef __USE_XOPEN_EXTENDED
150150# 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");
152153# else
153154extern int __sigpause (int __sig_or_mask, int __is_sig);
154155/* 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);
164165 simply do not work in many situations. Use `sigprocmask' instead. */
165166
166167/* 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
169172/* Block signals in MASK, returning the old mask. */
170173extern int sigblock (int __mask) __THROW __attribute_deprecated__;
......@@ -281,12 +284,6 @@ extern int sigqueue (__pid_t __pid, int __sig, const union sigval __val)
281284
282285#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
290287/* Get machine-dependent `struct sigcontext' and signal subcodes. */
291288# include <bits/sigcontext.h>
292289
......@@ -311,7 +308,8 @@ extern int sigreturn (struct sigcontext *__scp) __THROW;
311308/* If INTERRUPT is nonzero, make signal SIG interrupt system calls
312309 (causing them to fail with EINTR); if INTERRUPT is zero, make system
313310 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
316314# include <bits/sigstack.h>
317315# include <bits/ss_flags.h>
......@@ -340,16 +338,21 @@ extern int sigstack (struct sigstack *__ss, struct sigstack *__oss)
340338/* Simplified interface for signal management. */
341339
342340/* 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
345344/* 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
348348/* 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
351352/* 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");
353356#endif
354357
355358#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,
400400 const char *__restrict __format, ...) __THROW;
401401
402402/* For historical reasons, the C99-compliant versions of the scanf
403 functions are at alternative names. When __LDBL_COMPAT is in
404 effect, this is handled in bits/stdio-ldbl.h. */
405#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT
403 functions are at alternative names. When __LDBL_COMPAT or
404 __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
405 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
406409# ifdef __REDIRECT
407410extern int __REDIRECT (fscanf, (FILE *__restrict __stream,
408411 const char *__restrict __format, ...),
......@@ -447,7 +450,8 @@ extern int vsscanf (const char *__restrict __s,
447450
448451/* Same redirection as above for the v*scanf family. */
449452# if !__GLIBC_USE (DEPRECATED_SCANF)
450# if defined __REDIRECT && !defined __LDBL_COMPAT
453# if defined __REDIRECT && !defined __LDBL_COMPAT \
454 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
451455extern int __REDIRECT (vfscanf,
452456 (FILE *__restrict __s,
453457 const char *__restrict __format, __gnuc_va_list __arg),
......@@ -562,7 +566,7 @@ extern int putw (int __w, FILE *__stream);
562566 This function is a possible cancellation point and therefore not
563567 marked with __THROW. */
564568extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream)
565 __wur;
569 __wur __attr_access ((__write_only__, 1, 2));
566570
567571#if __GLIBC_USE (DEPRECATED_GETS)
568572/* Get a newline-terminated string from stdin, removing the newline.
......@@ -585,7 +589,8 @@ extern char *gets (char *__s) __wur __attribute_deprecated__;
585589 or due to the implementation it is a cancellation point and
586590 therefore not marked with __THROW. */
587591extern 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));
589594#endif
590595
591596
......@@ -774,12 +779,6 @@ extern int ferror_unlocked (FILE *__stream) __THROW __wur;
774779 marked with __THROW. */
775780extern 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
784783#ifdef __USE_POSIX
785784/* Return the system file descriptor for STREAM. */
......@@ -866,7 +865,9 @@ extern int __overflow (FILE *, int);
866865#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
867866# include <bits/stdio2.h>
868867#endif
869#ifdef __LDBL_COMPAT
868
869#include <bits/floatn.h>
870#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
870871# include <bits/stdio-ldbl.h>
871872#endif
872873
lib/libc/include/generic-glibc/stdlib.h+9-6
......@@ -397,7 +397,7 @@ extern long int a64l (const char *__s)
397397 `initstate' and `setstate' functions are those from BSD Unices.
398398 The `rand' and `srand' functions are required by the ANSI standard.
399399 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. */
401401extern long int random (void) __THROW;
402402
403403/* Seed the random number generator with the given number. */
......@@ -931,12 +931,13 @@ extern int wctomb (char *__s, wchar_t __wchar) __THROW;
931931
932932/* Convert a multibyte string to a wide char string. */
933933extern 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));
935936/* Convert a wide char string to multibyte string. */
936937extern size_t wcstombs (char *__restrict __s,
937938 const wchar_t *__restrict __pwcs, size_t __n)
938 __THROW;
939
939 __THROW
940 __attr_access ((__write_only__, 1, 3)) __attr_access ((__read_only__, 2));
940941
941942#ifdef __USE_MISC
942943/* Determine whether the string value of RESPONSE matches the affirmation
......@@ -990,7 +991,7 @@ extern char *ptsname (int __fd) __THROW __wur;
990991 terminal associated with the master FD is open on in BUF.
991992 Return 0 on success, otherwise an error number. */
992993extern 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
995996/* Open a master pseudo terminal and return its file descriptor. */
996997extern int getpt (void);
......@@ -1016,7 +1017,9 @@ extern int ttyslot (void) __THROW;
10161017#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
10171018# include <bits/stdlib.h>
10181019#endif
1019#ifdef __LDBL_COMPAT
1020
1021#include <bits/floatn.h>
1022#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
10201023# include <bits/stdlib-ldbl.h>
10211024#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)
5353#if defined __USE_MISC || defined __USE_XOPEN || __GLIBC_USE (ISOC2X)
5454extern void *memccpy (void *__restrict __dest, const void *__restrict __src,
5555 int __c, size_t __n)
56 __THROW __nonnull ((1, 2));
56 __THROW __nonnull ((1, 2)) __attr_access ((__write_only__, 1, 4));
5757#endif /* Misc || X/Open. */
5858
5959
......@@ -108,12 +108,15 @@ extern void *rawmemchr (const void *__s, int __c)
108108/* Search N bytes of S for the final occurrence of C. */
109109# ifdef __CORRECT_ISO_CPP_STRING_H_PROTO
110110extern "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));
112113extern "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));
114116# else
115117extern 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));
117120# endif
118121#endif
119122
......@@ -146,7 +149,7 @@ extern int strcoll (const char *__s1, const char *__s2)
146149/* Put a transformation of SRC into no more than N bytes of DEST. */
147150extern size_t strxfrm (char *__restrict __dest,
148151 const char *__restrict __src, size_t __n)
149 __THROW __nonnull ((2));
152 __THROW __nonnull ((2)) __attr_access ((__write_only__, 1, 3));
150153
151154#ifdef __USE_XOPEN2K8
152155/* 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)
158161/* Put a transformation of SRC into no more than N bytes of DEST,
159162 using sorting rules from L. */
160163extern 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));
162166#endif
163167
164168#if (defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 \
......@@ -368,7 +372,9 @@ extern char *strcasestr (const char *__haystack, const char *__needle)
368372 HAYSTACK is HAYSTACKLEN bytes long. */
369373extern void *memmem (const void *__haystack, size_t __haystacklen,
370374 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
373379/* Copy N bytes of SRC to DEST, return pointer to bytes after the
374380 last written byte. */
......@@ -409,17 +415,25 @@ extern char *strerror (int __errnum) __THROW;
409415# ifdef __REDIRECT_NTH
410416extern int __REDIRECT_NTH (strerror_r,
411417 (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));
413420# else
414421extern 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));
416423# define strerror_r __xpg_strerror_r
417424# endif
418425# else
419426/* If a temporary buffer is required, at most BUFLEN bytes of BUF will be
420427 used. */
421428extern 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;
423437# endif
424438#endif
425439
......@@ -433,7 +447,8 @@ extern char *strerror_l (int __errnum, locale_t __l) __THROW;
433447
434448/* Set N bytes of S to 0. The compiler will not delete a call to this
435449 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
438453/* Return the next DELIM-delimited token from *STRINGP,
439454 terminating it with a '\0', and update *STRINGP to point past it. */
......@@ -446,6 +461,14 @@ extern char *strsep (char **__restrict __stringp,
446461/* Return a string describing the meaning of the signal number in SIG. */
447462extern 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
449472/* Copy SRC to DEST, returning the address of the terminating '\0' in DEST. */
450473extern char *__stpcpy (char *__restrict __dest, const char *__restrict __src)
451474 __THROW __nonnull ((1, 2));
......@@ -471,7 +494,8 @@ extern int strverscmp (const char *__s1, const char *__s2)
471494extern char *strfry (char *__string) __THROW __nonnull ((1));
472495
473496/* 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
476500# ifndef basename
477501/* 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 @@
452452#include <bits/wordsize.h>
453453#include <bits/long-double.h>
454454
455#if defined __LONG_DOUBLE_MATH_OPTIONAL && defined __NO_LONG_DOUBLE_MATH
455#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
456486# define __LDBL_COMPAT 1
457487# ifdef __REDIRECT
458488# define __LDBL_REDIR1(name, proto, alias) __REDIRECT (name, proto, alias)
......@@ -461,6 +491,8 @@
461491# define __LDBL_REDIR1_NTH(name, proto, alias) __REDIRECT_NTH (name, proto, alias)
462492# define __LDBL_REDIR_NTH(name, proto) \
463493 __LDBL_REDIR1_NTH (name, proto, __nldbl_##name)
494# define __LDBL_REDIR2_DECL(name) \
495 extern __typeof (__##name) __##name __asm (__ASMNAME ("__nldbl___" #name));
464496# define __LDBL_REDIR1_DECL(name, alias) \
465497 extern __typeof (name) name __asm (__ASMNAME (#alias));
466498# define __LDBL_REDIR_DECL(name) \
......@@ -471,11 +503,13 @@
471503 __LDBL_REDIR1_NTH (name, proto, __nldbl_##alias)
472504# endif
473505#endif
474#if !defined __LDBL_COMPAT || !defined __REDIRECT
506#if (!defined __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0) \
507 || !defined __REDIRECT
475508# define __LDBL_REDIR1(name, proto, alias) name proto
476509# define __LDBL_REDIR(name, proto) name proto
477510# define __LDBL_REDIR1_NTH(name, proto, alias) name proto __THROW
478511# define __LDBL_REDIR_NTH(name, proto) name proto __THROW
512# define __LDBL_REDIR2_DECL(name)
479513# define __LDBL_REDIR_DECL(name)
480514# ifdef __REDIRECT
481515# define __REDIRECT_LDBL(name, proto, alias) __REDIRECT (name, proto, alias)
......@@ -514,4 +548,15 @@
514548# define __HAVE_GENERIC_SELECTION 0
515549#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
517562#endif /* sys/cdefs.h */
\ No newline at end of file
lib/libc/include/generic-glibc/sys/random.h+1
......@@ -25,6 +25,7 @@
2525/* Flags for use with getrandom. */
2626#define GRND_NONBLOCK 0x01
2727#define GRND_RANDOM 0x02
28#define GRND_INSECURE 0x04
2829
2930__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)
206206#if __USE_FORTIFY_LEVEL > 0 && defined __fortify_function
207207# include <bits/syslog.h>
208208#endif
209#ifdef __LDBL_COMPAT
209
210#include <bits/floatn.h>
211#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
210212# include <bits/syslog-ldbl.h>
211213#endif
212214
lib/libc/include/generic-glibc/threads.h+5-8
......@@ -24,7 +24,7 @@
2424
2525__BEGIN_DECLS
2626
27#include <bits/pthreadtypes-arch.h>
27#include <bits/thread-shared-types.h>
2828#include <bits/types/struct_timespec.h>
2929
3030#ifndef __cplusplus
......@@ -32,10 +32,10 @@ __BEGIN_DECLS
3232#endif
3333
3434#define TSS_DTOR_ITERATIONS 4
35typedef unsigned int tss_t;
35typedef __tss_t tss_t;
3636typedef void (*tss_dtor_t) (void*);
3737
38typedef unsigned long int thrd_t;
38typedef __thrd_t thrd_t;
3939typedef int (*thrd_start_t) (void*);
4040
4141/* Exit and error codes. */
......@@ -56,11 +56,8 @@ enum
5656 mtx_timed = 2
5757};
5858
59typedef struct
60{
61 int __data __ONCE_ALIGNMENT;
62} once_flag;
63#define ONCE_FLAG_INIT { 0 }
59typedef __once_flag once_flag;
60#define ONCE_FLAG_INIT __ONCE_FLAG_INIT
6461
6562typedef union
6663{
lib/libc/include/generic-glibc/unistd.h+41-24
......@@ -357,13 +357,15 @@ extern int close (int __fd);
357357
358358 This function is a cancellation point and therefore not marked with
359359 __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
362363/* Write N bytes of BUF to FD. Return the number written, or -1.
363364
364365 This function is a cancellation point and therefore not marked with
365366 __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
368370#if defined __USE_UNIX98 || defined __USE_XOPEN2K8
369371# ifndef __USE_FILE_OFFSET64
......@@ -374,7 +376,8 @@ extern ssize_t write (int __fd, const void *__buf, size_t __n) __wur;
374376 This function is a cancellation point and therefore not marked with
375377 __THROW. */
376378extern 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
379382/* Write N bytes of BUF to FD at the given position OFFSET without
380383 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,
382385 This function is a cancellation point and therefore not marked with
383386 __THROW. */
384387extern 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
386391# else
387392# ifdef __REDIRECT
388393extern ssize_t __REDIRECT (pread, (int __fd, void *__buf, size_t __nbytes,
389394 __off64_t __offset),
390 pread64) __wur;
395 pread64) __wur
396 __attr_access ((__write_only__, 2, 3));
391397extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
392398 size_t __nbytes, __off64_t __offset),
393 pwrite64) __wur;
399 pwrite64) __wur
400 __attr_access ((__read_only__, 2, 3));
394401# else
395402# define pread pread64
396403# define pwrite pwrite64
......@@ -402,11 +409,13 @@ extern ssize_t __REDIRECT (pwrite, (int __fd, const void *__buf,
402409 changing the file pointer. Return the number read, -1 for errors
403410 or 0 for EOF. */
404411extern 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));
406414/* Write N bytes of BUF to FD at the given position OFFSET without
407415 changing the file pointer. Return the number written, or -1. */
408416extern 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));
410419# endif
411420#endif
412421
......@@ -508,7 +517,8 @@ extern int fchdir (int __fd) __THROW __wur;
508517 an array is allocated with `malloc'; the array is SIZE
509518 bytes long, unless SIZE == 0, in which case it is as
510519 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
513523#ifdef __USE_GNU
514524/* Return a malloc'd string containing the current directory name.
......@@ -523,7 +533,8 @@ extern char *get_current_dir_name (void) __THROW;
523533 If successful, return BUF. If not, put an error message in
524534 BUF and return NULL. BUF should be at least PATH_MAX bytes long. */
525535extern char *getwd (char *__buf)
526 __THROW __nonnull ((1)) __attribute_deprecated__ __wur;
536 __THROW __nonnull ((1)) __attribute_deprecated__ __wur
537 __attr_access ((__write_only__, 1));
527538#endif
528539
529540
......@@ -620,7 +631,8 @@ extern long int sysconf (int __name) __THROW;
620631
621632#ifdef __USE_POSIX2
622633/* 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));
624636#endif
625637
626638
......@@ -686,8 +698,8 @@ extern __gid_t getegid (void) __THROW;
686698/* If SIZE is zero, return the number of supplementary groups
687699 the calling process is in. Otherwise, fill in the group IDs
688700 of its supplementary groups in LIST and return the number written. */
689extern int getgroups (int __size, __gid_t __list[]) __THROW __wur;
690
701extern int getgroups (int __size, __gid_t __list[]) __THROW __wur
702 __attr_access ((__write_only__, 2, 1));
691703#ifdef __USE_GNU
692704/* Return nonzero iff the calling process is in group GID. */
693705extern int group_member (__gid_t __gid) __THROW;
......@@ -772,7 +784,7 @@ extern char *ttyname (int __fd) __THROW;
772784/* Store at most BUFLEN characters of the pathname of the terminal FD is
773785 open on in BUF. Return 0 on success, otherwise an error number. */
774786extern 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
777789/* Return 1 if FD is a valid descriptor associated
778790 with a terminal, zero if not. */
......@@ -807,7 +819,8 @@ extern int symlink (const char *__from, const char *__to)
807819 Returns the number of characters read, or -1 for errors. */
808820extern ssize_t readlink (const char *__restrict __path,
809821 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
811824#endif /* Use POSIX.1-2001. */
812825
813826#ifdef __USE_ATFILE
......@@ -818,7 +831,7 @@ extern int symlinkat (const char *__from, int __tofd,
818831/* Like readlink but a relative PATH is interpreted relative to FD. */
819832extern ssize_t readlinkat (int __fd, const char *__restrict __path,
820833 char *__restrict __buf, size_t __len)
821 __THROW __nonnull ((2, 3)) __wur;
834 __THROW __nonnull ((2, 3)) __wur __attr_access ((__read_only__, 3, 4));
822835#endif
823836
824837/* Remove the link NAME. */
......@@ -853,7 +866,8 @@ extern char *getlogin (void);
853866
854867 This function is a possible cancellation point and therefore not
855868 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));
857871#endif
858872
859873#ifdef __USE_MISC
......@@ -874,7 +888,8 @@ extern int setlogin (const char *__name) __THROW __nonnull ((1));
874888/* Put the name of the current host in no more than LEN bytes of NAME.
875889 The result is null-terminated if LEN is large enough for the full
876890 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));
878893#endif
879894
880895
......@@ -882,7 +897,7 @@ extern int gethostname (char *__name, size_t __len) __THROW __nonnull ((1));
882897/* Set the name of the current host to NAME, which is LEN bytes long.
883898 This call is restricted to the super-user. */
884899extern 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
887902/* Set the current machine's Internet number to ID.
888903 This call is restricted to the super-user. */
......@@ -893,10 +908,9 @@ extern int sethostid (long int __id) __THROW __wur;
893908 Called just like `gethostname' and `sethostname'.
894909 The NIS domain name is usually the empty string when not using NIS. */
895910extern int getdomainname (char *__name, size_t __len)
896 __THROW __nonnull ((1)) __wur;
911 __THROW __nonnull ((1)) __wur __attr_access ((__write_only__, 1, 2));
897912extern int setdomainname (const char *__name, size_t __len)
898 __THROW __nonnull ((1)) __wur;
899
913 __THROW __nonnull ((1)) __wur __attr_access ((__read_only__, 1, 2));
900914
901915/* Revoke access permissions to all processes currently communicating
902916 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)
11311145 range [FROM - N + 1, FROM - 1]. If N is odd the first byte in FROM
11321146 is without partner. */
11331147extern 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));
11351151#endif
11361152
11371153
......@@ -1158,7 +1174,8 @@ extern int pthread_atfork (void (*__prepare) (void),
11581174#ifdef __USE_MISC
11591175/* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on
11601176 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));
11621179#endif
11631180
11641181/* 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,
633633 __THROW /* __attribute__ ((__format__ (__wscanf__, 2, 3))) */;
634634
635635/* For historical reasons, the C99-compliant versions of the scanf
636 functions are at alternative names. When __LDBL_COMPAT is in
637 effect, this is handled in bits/wchar-ldbl.h. */
638#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT
636 functions are at alternative names. When __LDBL_COMPAT or
637 __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI are in effect, this is handled in
638 bits/wchar-ldbl.h. */
639#if !__GLIBC_USE (DEPRECATED_SCANF) && !defined __LDBL_COMPAT \
640 && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0
639641# ifdef __REDIRECT
640642extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream,
641643 const wchar_t *__restrict __format, ...),
......@@ -688,7 +690,8 @@ extern int vswscanf (const wchar_t *__restrict __s,
688690/* Same redirection as above for the v*wscanf family. */
689691# if !__GLIBC_USE (DEPRECATED_SCANF) \
690692 && (!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
692695# ifdef __REDIRECT
693696extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
694697 const wchar_t *__restrict __format,
......@@ -849,7 +852,8 @@ extern size_t wcsftime_l (wchar_t *__restrict __s, size_t __maxsize,
849852# include <bits/wchar2.h>
850853#endif
851854
852#ifdef __LDBL_COMPAT
855#include <bits/floatn.h>
856#if defined __LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
853857# include <bits/wchar-ldbl.h>
854858#endif
855859
lib/libc/include/i386-linux-gnu/bits/fenv.h-54
......@@ -113,58 +113,4 @@ femode_t;
113113
114114/* Default floating-point control modes. */
115115# 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
170116#endif
\ No newline at end of file
lib/libc/include/i386-linux-gnu/bits/long-double.h+1-1
......@@ -18,4 +18,4 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
6464#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
6565#define __USECONDS_T_TYPE __U32_TYPE
6666#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
6768#define __DADDR_T_TYPE __S32_TYPE
6869#define __KEY_T_TYPE __S32_TYPE
6970#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -87,10 +88,15 @@
8788
8889/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
8990# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
9094#else
9195# define __RLIM_T_MATCHES_RLIM64_T 0
9296
9397# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94100#endif
95101
96102/* 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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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 @@
7373#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
7474#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
7575#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 @@
2020# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
2121#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
2424# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
2525#else
2626extern int __iscanonicall (long double __x)
lib/libc/include/powerpc-linux-gnu/bits/long-double.h+1-1
......@@ -22,4 +22,4 @@
2222# define __NO_LONG_DOUBLE_MATH 1
2323# endif
2424#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 @@
1919#define LIBNSS_FILES_SO "libnss_files.so.2"
2020#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2121#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"
2422#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2523#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2624#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc-linux-gnu/ieee754.h+66-2
......@@ -21,6 +21,7 @@
2121#include <features.h>
2222
2323#include <bits/endian.h>
24#include <bits/floatn.h>
2425
2526__BEGIN_DECLS
2627
......@@ -111,6 +112,65 @@ union ieee754_double
111112#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)
114174/* IBM extended format for long double.
115175
116176 Each long double is made up of two IEEE doubles. The value of the
......@@ -121,12 +181,16 @@ union ieee754_double
121181 -0.0. No other requirements are made; so, for example, 1.0 may be
122182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123183 NaN is don't-care. */
124
125184union ibm_extended_long_double
126185 {
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
128191 union ieee754_double d[2];
129192 };
193#endif
130194
131195__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 @@
7373#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
7474#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
7575#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 @@
2020# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
2121#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
2424# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
2525#else
2626extern int __iscanonicall (long double __x)
lib/libc/include/powerpc64-linux-gnu/bits/long-double.h+1-1
......@@ -22,4 +22,4 @@
2222# define __NO_LONG_DOUBLE_MATH 1
2323# endif
2424#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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc64-linux-gnu/gnu/stubs-64-v1.h-2
......@@ -10,9 +10,7 @@
1010#define __stub_chflags
1111#define __stub_fchflags
1212#define __stub_gtty
13#define __stub_lchmod
1413#define __stub_revoke
1514#define __stub_setlogin
1615#define __stub_sigreturn
17#define __stub_sstk
1816#define __stub_stty
\ No newline at end of file
lib/libc/include/powerpc64-linux-gnu/ieee754.h+66-2
......@@ -21,6 +21,7 @@
2121#include <features.h>
2222
2323#include <bits/endian.h>
24#include <bits/floatn.h>
2425
2526__BEGIN_DECLS
2627
......@@ -111,6 +112,65 @@ union ieee754_double
111112#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)
114174/* IBM extended format for long double.
115175
116176 Each long double is made up of two IEEE doubles. The value of the
......@@ -121,12 +181,16 @@ union ieee754_double
121181 -0.0. No other requirements are made; so, for example, 1.0 may be
122182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123183 NaN is don't-care. */
124
125184union ibm_extended_long_double
126185 {
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
128191 union ieee754_double d[2];
129192 };
193#endif
130194
131195__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 @@
7373#define PPC_FEATURE2_DARN 0x00200000 /* darn instruction. */
7474#define PPC_FEATURE2_SCV 0x00100000 /* scv syscall. */
7575#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 @@
2020# error "Never use <bits/iscanonical.h> directly; include <math.h> instead."
2121#endif
2222
23#ifdef __NO_LONG_DOUBLE_MATH
23#if defined (__NO_LONG_DOUBLE_MATH) || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1
2424# define iscanonical(x) ((void) (__typeof (x)) (x), 1)
2525#else
2626extern int __iscanonicall (long double __x)
lib/libc/include/powerpc64le-linux-gnu/bits/long-double.h+3-2
......@@ -1,5 +1,5 @@
11/* 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.
33 This file is part of the GNU C Library.
44
55 The GNU C Library is free software; you can redistribute it and/or
......@@ -22,4 +22,5 @@
2222# define __NO_LONG_DOUBLE_MATH 1
2323# endif
2424#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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/powerpc64le-linux-gnu/gnu/stubs-64-v2.h-2
......@@ -10,9 +10,7 @@
1010#define __stub_chflags
1111#define __stub_fchflags
1212#define __stub_gtty
13#define __stub_lchmod
1413#define __stub_revoke
1514#define __stub_setlogin
1615#define __stub_sigreturn
17#define __stub_sstk
1816#define __stub_stty
\ No newline at end of file
lib/libc/include/powerpc64le-linux-gnu/ieee754.h+66-2
......@@ -21,6 +21,7 @@
2121#include <features.h>
2222
2323#include <bits/endian.h>
24#include <bits/floatn.h>
2425
2526__BEGIN_DECLS
2627
......@@ -111,6 +112,65 @@ union ieee754_double
111112#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)
114174/* IBM extended format for long double.
115175
116176 Each long double is made up of two IEEE doubles. The value of the
......@@ -121,12 +181,16 @@ union ieee754_double
121181 -0.0. No other requirements are made; so, for example, 1.0 may be
122182 represented as (1.0, +0.0) or (1.0, -0.0), and the low part of a
123183 NaN is don't-care. */
124
125184union ibm_extended_long_double
126185 {
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
128191 union ieee754_double d[2];
129192 };
193#endif
130194
131195__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 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
2626
2727/* See <bits/types.h> for the meaning of these macros. This file exists so
2828 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
3051#define __DEV_T_TYPE __UQUAD_TYPE
3152#define __UID_T_TYPE __U32_TYPE
3253#define __GID_T_TYPE __U32_TYPE
33#define __INO_T_TYPE __ULONGWORD_TYPE
3454#define __INO64_T_TYPE __UQUAD_TYPE
3555#define __MODE_T_TYPE __U32_TYPE
3656#define __NLINK_T_TYPE __U32_TYPE
37#define __OFF_T_TYPE __SLONGWORD_TYPE
3857#define __OFF64_T_TYPE __SQUAD_TYPE
3958#define __PID_T_TYPE __S32_TYPE
40#define __RLIM_T_TYPE __ULONGWORD_TYPE
4159#define __RLIM64_T_TYPE __UQUAD_TYPE
42#define __BLKCNT_T_TYPE __SLONGWORD_TYPE
4360#define __BLKCNT64_T_TYPE __SQUAD_TYPE
44#define __FSBLKCNT_T_TYPE __ULONGWORD_TYPE
4561#define __FSBLKCNT64_T_TYPE __UQUAD_TYPE
46#define __FSFILCNT_T_TYPE __ULONGWORD_TYPE
4762#define __FSFILCNT64_T_TYPE __UQUAD_TYPE
4863#define __FSWORD_T_TYPE __SWORD_TYPE
4964#define __ID_T_TYPE __U32_TYPE
5065#define __CLOCK_T_TYPE __SLONGWORD_TYPE
51#define __TIME_T_TYPE __SLONGWORD_TYPE
5266#define __USECONDS_T_TYPE __U32_TYPE
53#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5468#define __DADDR_T_TYPE __S32_TYPE
5569#define __KEY_T_TYPE __S32_TYPE
5670#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -62,7 +76,7 @@
6276#define __SYSCALL_ULONG_TYPE __ULONGWORD_TYPE
6377#define __CPU_MASK_TYPE __ULONGWORD_TYPE
6478
65#ifdef __LP64__
79#if defined __LP64__ || (__TIMESIZE == 64 && __WORDSIZE == 32)
6680/* Tell the libc code that off_t and off64_t are actually the same type
6781 for all ABI purposes, even if possibly expressed as different base types
6882 for C type-checking purposes. */
......@@ -76,11 +90,17 @@
7690
7791/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7892# define __STATFS_MATCHES_STATFS64 1
93
94/* And for getitimer, setitimer and rusage */
95# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 (__WORDSIZE == 64)
7996#else
8097# define __RLIM_T_MATCHES_RLIM64_T 0
8198
8299# define __STATFS_MATCHES_STATFS64 0
100
101# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
83102#endif
103
84104/* Number of descriptors that can fit in an `fd_set'. */
85105#define __FD_SETSIZE 1024
86106
lib/libc/include/riscv64-linux-gnu/gnu/lib-names-lp64.h-2
......@@ -20,8 +20,6 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/riscv64-linux-gnu/gnu/stubs-lp64.h+1-4
......@@ -32,10 +32,7 @@
3232#define __stub_fetestexcept
3333#define __stub_feupdateenv
3434#define __stub_gtty
35#define __stub_lchmod
3635#define __stub_revoke
3736#define __stub_setlogin
3837#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 */
7373
7474
7575/* 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. */
7777typedef struct
7878{
7979 fexcept_t __fpc;
8080 void *__unused;
8181 /* The field __unused (formerly __ieee_instruction_pointer) is a relict from
8282 commit "Remove PTRACE_PEEKUSER" (87b9b50f0d4b92248905e95a06a13c513dc45e59)
83 and isn´t used anymore. */
83 and isn't used anymore. */
8484} fenv_t;
8585
8686/* 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 @@
2222# define __NO_LONG_DOUBLE_MATH 1
2323# endif
2424#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 @@
5050#define __TIME_T_TYPE __SLONGWORD_TYPE
5151#define __USECONDS_T_TYPE __U32_TYPE
5252#define __SUSECONDS_T_TYPE __SLONGWORD_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5354#define __DADDR_T_TYPE __S32_TYPE
5455#define __KEY_T_TYPE __S32_TYPE
5556#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -81,10 +82,16 @@
8182
8283/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
8384# define __STATFS_MATCHES_STATFS64 1
85
86/* And for getitimer, setitimer and rusage */
87# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
8488#else
8589# define __RLIM_T_MATCHES_RLIM64_T 0
8690
8791# define __STATFS_MATCHES_STATFS64 0
92
93/* And for getitimer, setitimer and rusage */
94# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
8895#endif
8996
9097/* 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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#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;
8383# define FE_NOMASK_ENV ((const fenv_t *) -2)
8484#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
9586#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
9687/* Type representing floating-point control modes. */
9788typedef 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 @@
2424# define __NO_LONG_DOUBLE_MATH 1
2525# endif
2626#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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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 @@
5050#define __TIME_T_TYPE __SLONGWORD_TYPE
5151#define __USECONDS_T_TYPE __U32_TYPE
5252#define __SUSECONDS_T_TYPE __S32_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5354#define __DADDR_T_TYPE __S32_TYPE
5455#define __KEY_T_TYPE __S32_TYPE
5556#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -75,10 +76,16 @@
7576
7677/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7778# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
7882#else
7983# define __RLIM_T_MATCHES_RLIM64_T 0
8084
8185# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
8289#endif
8390
8491/* 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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#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;
8383# define FE_NOMASK_ENV ((const fenv_t *) -2)
8484#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
9586#if __GLIBC_USE (IEC_60559_BFP_EXT_C2X)
9687/* Type representing floating-point control modes. */
9788typedef 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 @@
2424# define __NO_LONG_DOUBLE_MATH 1
2525# endif
2626#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
9898 __RLIMIT_RTPRIO = 14,
9999#define RLIMIT_RTPRIO __RLIMIT_RTPRIO
100100
101 /* Maximum CPU time in µs that a process scheduled under a real-time
101 /* Maximum CPU time in microseconds that a process scheduled under a real-time
102102 scheduling policy may consume without making a blocking system
103103 call before being forcibly descheduled. */
104104 __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 @@
5050#define __TIME_T_TYPE __SLONGWORD_TYPE
5151#define __USECONDS_T_TYPE __U32_TYPE
5252#define __SUSECONDS_T_TYPE __S32_TYPE
53#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
5354#define __DADDR_T_TYPE __S32_TYPE
5455#define __KEY_T_TYPE __S32_TYPE
5556#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -75,10 +76,16 @@
7576
7677/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
7778# define __STATFS_MATCHES_STATFS64 1
79
80/* And for getitimer, setitimer and rusage */
81# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
7882#else
7983# define __RLIM_T_MATCHES_RLIM64_T 0
8084
8185# define __STATFS_MATCHES_STATFS64 0
86
87/* And for getitimer, setitimer and rusage */
88# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
8289#endif
8390
8491/* 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;
113113
114114/* Default floating-point control modes. */
115115# 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
170116#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnu/bits/long-double.h+1-1
......@@ -18,4 +18,4 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
6464#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
6565#define __USECONDS_T_TYPE __U32_TYPE
6666#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
6768#define __DADDR_T_TYPE __S32_TYPE
6869#define __KEY_T_TYPE __S32_TYPE
6970#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -87,10 +88,15 @@
8788
8889/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
8990# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
9094#else
9195# define __RLIM_T_MATCHES_RLIM64_T 0
9296
9397# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94100#endif
95101
96102/* 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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/x86_64-linux-gnu/gnu/stubs-64.h-2
......@@ -11,9 +11,7 @@
1111#define __stub_chflags
1212#define __stub_fchflags
1313#define __stub_gtty
14#define __stub_lchmod
1514#define __stub_revoke
1615#define __stub_setlogin
1716#define __stub_sigreturn
18#define __stub_sstk
1917#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;
113113
114114/* Default floating-point control modes. */
115115# 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
170116#endif
\ No newline at end of file
lib/libc/include/x86_64-linux-gnux32/bits/long-double.h+1-1
......@@ -18,4 +18,4 @@
1818
1919/* long double is distinct from double, so there is nothing to
2020 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 @@
6464#define __TIME_T_TYPE __SYSCALL_SLONG_TYPE
6565#define __USECONDS_T_TYPE __U32_TYPE
6666#define __SUSECONDS_T_TYPE __SYSCALL_SLONG_TYPE
67#define __SUSECONDS64_T_TYPE __SQUAD_TYPE
6768#define __DADDR_T_TYPE __S32_TYPE
6869#define __KEY_T_TYPE __S32_TYPE
6970#define __CLOCKID_T_TYPE __S32_TYPE
......@@ -87,10 +88,15 @@
8788
8889/* And for fsblkcnt_t, fsblkcnt64_t, fsfilcnt_t and fsfilcnt64_t. */
8990# define __STATFS_MATCHES_STATFS64 1
91
92/* And for getitimer, setitimer and rusage */
93# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 1
9094#else
9195# define __RLIM_T_MATCHES_RLIM64_T 0
9296
9397# define __STATFS_MATCHES_STATFS64 0
98
99# define __KERNEL_OLD_TIMEVAL_MATCHES_TIMEVAL64 0
94100#endif
95101
96102/* 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 @@
2020#define LIBNSS_FILES_SO "libnss_files.so.2"
2121#define LIBNSS_HESIOD_SO "libnss_hesiod.so.2"
2222#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"
2523#define LIBNSS_TEST1_SO "libnss_test1.so.2"
2624#define LIBNSS_TEST2_SO "libnss_test2.so.2"
2725#define LIBPTHREAD_SO "libpthread.so.0"
lib/libc/include/x86_64-linux-gnux32/gnu/stubs-x32.h-2
......@@ -16,9 +16,7 @@
1616#define __stub_chflags
1717#define __stub_fchflags
1818#define __stub_gtty
19#define __stub_lchmod
2019#define __stub_revoke
2120#define __stub_setlogin
2221#define __stub_sigreturn
23#define __stub_sstk
2422#define __stub_stty
\ No newline at end of file
lib/std/child_process.zig+2-2
......@@ -396,12 +396,12 @@ pub const ChildProcess = struct {
396396 // and execve from the child process to the parent process.
397397 const err_pipe = blk: {
398398 if (builtin.os.tag == .linux) {
399 const fd = try os.eventfd(0, 0);
399 const fd = try os.eventfd(0, os.EFD_CLOEXEC);
400400 // There's no distinction between the readable and the writeable
401401 // end with eventfd
402402 break :blk [2]os.fd_t{ fd, fd };
403403 } else {
404 break :blk try os.pipe();
404 break :blk try os.pipe2(os.O_CLOEXEC);
405405 }
406406 };
407407 errdefer destroyPipe(err_pipe);
lib/std/crypto/benchmark.zig+59-13
......@@ -7,6 +7,7 @@
77
88const builtin = @import("builtin");
99const std = @import("std");
10const mem = std.mem;
1011const time = std.time;
1112const Timer = time.Timer;
1213const crypto = std.crypto;
......@@ -46,6 +47,7 @@ pub fn benchmarkHash(comptime Hash: anytype, comptime bytes: comptime_int) !u64
4647 while (offset < bytes) : (offset += block.len) {
4748 h.update(block[0..]);
4849 }
50 mem.doNotOptimizeAway(&h);
4951 const end = timer.read();
5052
5153 const elapsed_s = @intToFloat(f64, end - start) / time.ns_per_s;
......@@ -67,19 +69,20 @@ const macs = [_]Crypto{
6769};
6870
6971pub fn benchmarkMac(comptime Mac: anytype, comptime bytes: comptime_int) !u64 {
70 std.debug.assert(64 >= Mac.mac_length and 32 >= Mac.minimum_key_length);
71
72 var in: [1 * MiB]u8 = undefined;
72 var in: [512 * KiB]u8 = undefined;
7373 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;
7677 prng.random.bytes(key[0..]);
7778
79 var mac: [Mac.mac_length]u8 = undefined;
7880 var offset: usize = 0;
7981 var timer = try Timer.start();
8082 const start = timer.lap();
8183 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);
8386 }
8487 const end = timer.read();
8588
......@@ -106,6 +109,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
106109 var i: usize = 0;
107110 while (i < exchange_count) : (i += 1) {
108111 _ = DhKeyExchange.create(out[0..], out[0..], in[0..]);
112 mem.doNotOptimizeAway(&out);
109113 }
110114 }
111115 const end = timer.read();
......@@ -118,7 +122,7 @@ pub fn benchmarkKeyExchange(comptime DhKeyExchange: anytype, comptime exchange_c
118122
119123const 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 {
122126 var seed: [Signature.seed_length]u8 = undefined;
123127 prng.random.bytes(seed[0..]);
124128 const msg = [_]u8{0} ** 64;
......@@ -129,7 +133,8 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun
129133 {
130134 var i: usize = 0;
131135 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);
133138 }
134139 }
135140 const end = timer.read();
......@@ -140,6 +145,40 @@ pub fn benchmarkSignatures(comptime Signature: anytype, comptime signatures_coun
140145 return throughput;
141146}
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
143182fn usage() void {
144183 std.debug.warn(
145184 \\throughput_test [options]
......@@ -198,29 +237,36 @@ pub fn main() !void {
198237
199238 inline for (hashes) |H| {
200239 if (filter == null or std.mem.indexOf(u8, H.name, filter.?) != null) {
201 const throughput = try benchmarkHash(H.ty, mode(32 * MiB));
202 try stdout.print("{:>11}: {:5} MiB/s\n", .{ H.name, throughput / (1 * MiB) });
240 const throughput = try benchmarkHash(H.ty, mode(128 * MiB));
241 try stdout.print("{:>17}: {:7} MiB/s\n", .{ H.name, throughput / (1 * MiB) });
203242 }
204243 }
205244
206245 inline for (macs) |M| {
207246 if (filter == null or std.mem.indexOf(u8, M.name, filter.?) != null) {
208247 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) });
210249 }
211250 }
212251
213252 inline for (exchanges) |E| {
214253 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {
215254 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 });
217256 }
218257 }
219258
220259 inline for (signatures) |E| {
221260 if (filter == null or std.mem.indexOf(u8, E.name, filter.?) != null) {
222 const throughput = try benchmarkSignatures(E.ty, mode(1000));
223 try stdout.print("{:>11}: {:5} signatures/s\n", .{ E.name, throughput });
261 const throughput = try benchmarkSignature(E.ty, mode(1000));
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) });
224270 }
225271 }
226272}
lib/std/crypto/chacha20.zig+13-13
......@@ -47,7 +47,7 @@ fn initContext(key: [8]u32, d: [4]u32) [16]u32 {
4747}
4848
4949// 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 {
5151 for (x) |_, i|
5252 x[i] = input[i];
5353
......@@ -744,26 +744,26 @@ pub const Chacha20Poly1305 = struct {
744744 pub const key_length = 32;
745745
746746 /// c: ciphertext: output buffer should be of size m.len
747 /// at: authentication tag: output MAC
747 /// tag: authentication tag: output MAC
748748 /// m: message
749749 /// ad: Associated Data
750750 /// npub: public nonce
751751 /// 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 {
753753 assert(c.len == m.len);
754 return chacha20poly1305SealDetached(c, at, m, ad, k, npub);
754 return chacha20poly1305SealDetached(c, tag, m, ad, k, npub);
755755 }
756756
757757 /// m: message: output buffer should be of size c.len
758758 /// c: ciphertext
759 /// at: authentication tag
759 /// tag: authentication tag
760760 /// ad: Associated Data
761761 /// npub: public nonce
762762 /// k: private key
763763 /// 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 {
765765 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);
767767 }
768768};
769769
......@@ -773,26 +773,26 @@ pub const XChacha20Poly1305 = struct {
773773 pub const key_length = 32;
774774
775775 /// c: ciphertext: output buffer should be of size m.len
776 /// at: authentication tag: output MAC
776 /// tag: authentication tag: output MAC
777777 /// m: message
778778 /// ad: Associated Data
779779 /// npub: public nonce
780780 /// 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 {
782782 assert(c.len == m.len);
783 return xchacha20poly1305SealDetached(c, at, m, ad, k, npub);
783 return xchacha20poly1305SealDetached(c, tag, m, ad, k, npub);
784784 }
785785
786786 /// m: message: output buffer should be of size c.len
787787 /// c: ciphertext
788 /// at: authentication tag
788 /// tag: authentication tag
789789 /// ad: Associated Data
790790 /// npub: public nonce
791791 /// k: private key
792792 /// 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 {
794794 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);
796796 }
797797};
798798
lib/std/crypto/gimli.zig+31-27
......@@ -180,10 +180,14 @@ test "hash" {
180180}
181181
182182pub const Aead = struct {
183 pub const tag_length = State.RATE;
184 pub const nonce_length = 16;
185 pub const key_length = 32;
186
183187 /// ad: Associated Data
184188 /// npub: public nonce
185189 /// 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 {
187191 var state = State{
188192 .data = undefined,
189193 };
......@@ -224,12 +228,12 @@ pub const Aead = struct {
224228 }
225229
226230 /// c: ciphertext: output buffer should be of size m.len
227 /// at: authentication tag: output MAC
231 /// tag: authentication tag: output MAC
228232 /// m: message
229233 /// ad: Associated Data
230234 /// npub: public nonce
231235 /// 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 {
233237 assert(c.len == m.len);
234238
235239 var state = Aead.init(ad, npub, k);
......@@ -265,17 +269,17 @@ pub const Aead = struct {
265269
266270 // After the final non-full block of plaintext, the first 16 bytes
267271 // 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]);
269273 }
270274
271275 /// m: message: output buffer should be of size c.len
272276 /// c: ciphertext
273 /// at: authentication tag
277 /// tag: authentication tag
274278 /// ad: Associated Data
275279 /// npub: public nonce
276280 /// k: private key
277281 /// 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 {
279283 assert(c.len == m.len);
280284
281285 var state = Aead.init(ad, npub, k);
......@@ -308,7 +312,7 @@ pub const Aead = struct {
308312 // After the final non-full block of plaintext, the first 16 bytes
309313 // of the state are the authentication tag.
310314 // 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)) {
312316 @memset(m.ptr, undefined, m.len);
313317 return error.InvalidMessage;
314318 }
......@@ -328,13 +332,13 @@ test "cipher" {
328332 const pt: [0]u8 = undefined;
329333
330334 var ct: [pt.len]u8 = undefined;
331 var at: [16]u8 = undefined;
332 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);
335 var tag: [16]u8 = undefined;
336 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
333337 htest.assertEqual("", &ct);
334 htest.assertEqual("14DA9BB7120BF58B985A8E00FDEBA15B", &at);
338 htest.assertEqual("14DA9BB7120BF58B985A8E00FDEBA15B", &tag);
335339
336340 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);
338342 testing.expectEqualSlices(u8, &pt, &pt2);
339343 }
340344 { // test vector (34) from NIST KAT submission.
......@@ -343,13 +347,13 @@ test "cipher" {
343347 try std.fmt.hexToBytes(&pt, "00");
344348
345349 var ct: [pt.len]u8 = undefined;
346 var at: [16]u8 = undefined;
347 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);
350 var tag: [16]u8 = undefined;
351 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
348352 htest.assertEqual("7F", &ct);
349 htest.assertEqual("80492C317B1CD58A1EDC3A0D3E9876FC", &at);
353 htest.assertEqual("80492C317B1CD58A1EDC3A0D3E9876FC", &tag);
350354
351355 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);
353357 testing.expectEqualSlices(u8, &pt, &pt2);
354358 }
355359 { // test vector (106) from NIST KAT submission.
......@@ -359,13 +363,13 @@ test "cipher" {
359363 try std.fmt.hexToBytes(&pt, "000102");
360364
361365 var ct: [pt.len]u8 = undefined;
362 var at: [16]u8 = undefined;
363 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);
366 var tag: [16]u8 = undefined;
367 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
364368 htest.assertEqual("484D35", &ct);
365 htest.assertEqual("030BBEA23B61C00CED60A923BDCF9147", &at);
369 htest.assertEqual("030BBEA23B61C00CED60A923BDCF9147", &tag);
366370
367371 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);
369373 testing.expectEqualSlices(u8, &pt, &pt2);
370374 }
371375 { // test vector (790) from NIST KAT submission.
......@@ -375,13 +379,13 @@ test "cipher" {
375379 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F10111213141516");
376380
377381 var ct: [pt.len]u8 = undefined;
378 var at: [16]u8 = undefined;
379 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);
382 var tag: [16]u8 = undefined;
383 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
380384 htest.assertEqual("6815B4A0ECDAD01596EAD87D9E690697475D234C6A13D1", &ct);
381 htest.assertEqual("DFE23F1642508290D68245279558B2FB", &at);
385 htest.assertEqual("DFE23F1642508290D68245279558B2FB", &tag);
382386
383387 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);
385389 testing.expectEqualSlices(u8, &pt, &pt2);
386390 }
387391 { // test vector (1057) from NIST KAT submission.
......@@ -390,13 +394,13 @@ test "cipher" {
390394 try std.fmt.hexToBytes(&pt, "000102030405060708090A0B0C0D0E0F101112131415161718191A1B1C1D1E1F");
391395
392396 var ct: [pt.len]u8 = undefined;
393 var at: [16]u8 = undefined;
394 Aead.encrypt(&ct, &at, &pt, &ad, nonce, key);
397 var tag: [16]u8 = undefined;
398 Aead.encrypt(&ct, &tag, &pt, &ad, nonce, key);
395399 htest.assertEqual("7F8A2CF4F52AA4D6B2E74105C30A2777B9D0C8AEFDD555DE35861BD3011F652F", &ct);
396 htest.assertEqual("7256456FA935AC34BBF55AE135F33257", &at);
400 htest.assertEqual("7256456FA935AC34BBF55AE135F33257", &tag);
397401
398402 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);
400404 testing.expectEqualSlices(u8, &pt, &pt2);
401405 }
402406}
lib/std/fs/test.zig+20-4
......@@ -25,12 +25,20 @@ test "Dir.readLink" {
2525
2626 {
2727 // 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 };
2933 try testReadLink(tmp.dir, "file.txt", "symlink1");
3034 }
3135 {
3236 // 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 };
3442 try testReadLink(tmp.dir, "subdir", "symlink2");
3543 }
3644}
......@@ -66,7 +74,11 @@ test "readLinkAbsolute" {
6674 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink1" });
6775
6876 // 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 };
7082 try testReadLinkAbsolute(target_path, symlink_path);
7183 }
7284 {
......@@ -74,7 +86,11 @@ test "readLinkAbsolute" {
7486 const symlink_path = try fs.path.join(allocator, &[_][]const u8{ base_path, "symlink2" });
7587
7688 // 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 };
7894 try testReadLinkAbsolute(target_path, symlink_path);
7995 }
8096}
lib/std/heap/general_purpose_allocator.zig+30-16
......@@ -561,24 +561,25 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
561561 return error.OutOfMemory;
562562 }
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
564577 fn alloc(allocator: *Allocator, len: usize, ptr_align: u29, len_align: u29, ret_addr: usize) Error![]u8 {
565578 const self = @fieldParentPtr(Self, "allocator", allocator);
566579
567580 const held = self.mutex.acquire();
568581 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
582583 const new_aligned_size = math.max(len, ptr_align);
583584 if (new_aligned_size > largest_bucket_object_size) {
584585 try self.large_allocations.ensureCapacity(
......@@ -588,17 +589,30 @@ pub fn GeneralPurposeAllocator(comptime config: Config) type {
588589
589590 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
591601 const gop = self.large_allocations.getOrPutAssumeCapacity(@ptrToInt(slice.ptr));
592602 assert(!gop.found_existing); // This would mean the kernel double-mapped pages.
593603 gop.entry.value.bytes = slice;
594604 collectStackTrace(ret_addr, &gop.entry.value.stack_addresses);
595605
596606 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];
601607 }
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];
602616 }
603617
604618 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(
231231 return mem.readVarInt(ReturnType, bytes, endian);
232232 }
233233
234 pub fn skipBytes(self: Self, num_bytes: u64) !void {
235 var i: u64 = 0;
236 while (i < num_bytes) : (i += 1) {
237 _ = try self.readByte();
234 /// Optional parameters for `skipBytes`
235 pub const SkipBytesOptions = struct {
236 buf_size: usize = 512,
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;
238248 }
239249 }
240250
......@@ -298,3 +308,11 @@ test "Reader.isBytes" {
298308 testing.expectEqual(true, try reader.isBytes("foo"));
299309 testing.expectEqual(false, try reader.isBytes("qux"));
300310}
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 {
8181 strsize: u32,
8282};
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
84260/// The linkedit_data_command contains the offsets and sizes of a blob
85261/// of data in the __LINKEDIT segment.
86262pub const linkedit_data_command = extern struct {
......@@ -97,6 +273,127 @@ pub const linkedit_data_command = extern struct {
97273 datasize: u32,
98274};
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
100397/// A program that uses a dynamic linker contains a dylinker_command to identify
101398/// the name of the dynamic linker (LC_LOAD_DYLINKER). And a dynamic linker
102399/// contains a dylinker_command to identify the dynamic linker (LC_ID_DYLINKER).
......@@ -681,6 +978,24 @@ pub const N_TYPE = 0x0e;
681978/// external symbol bit, set for external symbols
682979pub 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
684999/// global symbol: name,,NO_SECT,type,0
6851000pub const N_GSYM = 0x20;
6861001
......@@ -781,6 +1096,35 @@ pub const N_LENG = 0xfe;
7811096/// a debug section
7821097pub 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
7841128pub const cpu_type_t = integer_t;
7851129pub const cpu_subtype_t = integer_t;
7861130pub const integer_t = c_int;
......@@ -797,3 +1141,16 @@ pub const CPU_SUBTYPE_X86_64_ALL: cpu_subtype_t = 0x3;
7971141
7981142/// All ARM-based Macs
7991143pub 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 @@
55// and substantial portions of the software.
66const std = @import("std.zig");
77const assert = std.debug.assert;
8const mem = std.mem;
89const testing = std.testing;
910
1011/// Euler's number (e)
......@@ -108,34 +109,8 @@ pub fn approxEq(comptime T: type, x: T, y: T, epsilon: T) bool {
108109 return fabs(x - y) < epsilon;
109110}
110111
111// TODO: Hide the following in an internal module.
112pub fn forceEval(value: anytype) void {
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 }
112pub fn doNotOptimizeAway(value: anytype) void {
113 mem.doNotOptimizeAway(value);
139114}
140115
141116pub fn raiseInvalid() void {
......@@ -621,6 +596,59 @@ fn testDivFloor() void {
621596 testing.expect((divFloor(f32, -5.0, 3.0) catch unreachable) == -2.0);
622597}
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
624652pub fn divExact(comptime T: type, numerator: T, denominator: T) !T {
625653 @setRuntimeSafety(false);
626654 if (denominator == 0) return error.DivisionByZero;
lib/std/math/asinh.zig+2-2
......@@ -56,7 +56,7 @@ fn asinh32(x: f32) f32 {
5656 }
5757 // |x| < 0x1p-12, inexact if x != 0
5858 else {
59 math.forceEval(x + 0x1.0p120);
59 math.doNotOptimizeAway(x + 0x1.0p120);
6060 }
6161
6262 return if (s != 0) -rx else rx;
......@@ -87,7 +87,7 @@ fn asinh64(x: f64) f64 {
8787 }
8888 // |x| < 0x1p-12, inexact if x != 0
8989 else {
90 math.forceEval(x + 0x1.0p120);
90 math.doNotOptimizeAway(x + 0x1.0p120);
9191 }
9292
9393 return if (s != 0) -rx else rx;
lib/std/math/atan.zig+2-2
......@@ -72,7 +72,7 @@ fn atan32(x_: f32) f32 {
7272 // |x| < 2^(-12)
7373 if (ix < 0x39800000) {
7474 if (ix < 0x00800000) {
75 math.forceEval(x * x);
75 math.doNotOptimizeAway(x * x);
7676 }
7777 return x;
7878 }
......@@ -170,7 +170,7 @@ fn atan64(x_: f64) f64 {
170170 // |x| < 2^(-27)
171171 if (ix < 0x3E400000) {
172172 if (ix < 0x00100000) {
173 math.forceEval(@floatCast(f32, x));
173 math.doNotOptimizeAway(@floatCast(f32, x));
174174 }
175175 return x;
176176 }
lib/std/math/atanh.zig+2-2
......@@ -45,7 +45,7 @@ fn atanh_32(x: f32) f32 {
4545 if (u < 0x3F800000 - (32 << 23)) {
4646 // underflow
4747 if (u < (1 << 23)) {
48 math.forceEval(y * y);
48 math.doNotOptimizeAway(y * y);
4949 }
5050 }
5151 // |x| < 0.5
......@@ -74,7 +74,7 @@ fn atanh_64(x: f64) f64 {
7474 if (e < 0x3FF - 32) {
7575 // underflow
7676 if (e == 0) {
77 math.forceEval(@floatCast(f32, y));
77 math.doNotOptimizeAway(@floatCast(f32, y));
7878 }
7979 }
8080 // |x| < 0.5
lib/std/math/ceil.zig+4-4
......@@ -47,14 +47,14 @@ fn ceil32(x: f32) f32 {
4747 if (u & m == 0) {
4848 return x;
4949 }
50 math.forceEval(x + 0x1.0p120);
50 math.doNotOptimizeAway(x + 0x1.0p120);
5151 if (u >> 31 == 0) {
5252 u += m;
5353 }
5454 u &= ~m;
5555 return @bitCast(f32, u);
5656 } else {
57 math.forceEval(x + 0x1.0p120);
57 math.doNotOptimizeAway(x + 0x1.0p120);
5858 if (u >> 31 != 0) {
5959 return -0.0;
6060 } else {
......@@ -79,7 +79,7 @@ fn ceil64(x: f64) f64 {
7979 }
8080
8181 if (e <= 0x3FF - 1) {
82 math.forceEval(y);
82 math.doNotOptimizeAway(y);
8383 if (u >> 63 != 0) {
8484 return -0.0;
8585 } else {
......@@ -106,7 +106,7 @@ fn ceil128(x: f128) f128 {
106106 }
107107
108108 if (e <= 0x3FFF - 1) {
109 math.forceEval(y);
109 math.doNotOptimizeAway(y);
110110 if (u >> 127 != 0) {
111111 return -0.0;
112112 } else {
lib/std/math/exp.zig+4-4
......@@ -56,7 +56,7 @@ fn exp32(x_: f32) f32 {
5656 return x * 0x1.0p127;
5757 }
5858 if (sign != 0) {
59 math.forceEval(-0x1.0p-149 / x); // overflow
59 math.doNotOptimizeAway(-0x1.0p-149 / x); // overflow
6060 // x <= -103.972084
6161 if (hx >= 0x42CFF1B5) {
6262 return 0;
......@@ -88,7 +88,7 @@ fn exp32(x_: f32) f32 {
8888 hi = x;
8989 lo = 0;
9090 } else {
91 math.forceEval(0x1.0p127 + x); // inexact
91 math.doNotOptimizeAway(0x1.0p127 + x); // inexact
9292 return 1 + x;
9393 }
9494
......@@ -139,7 +139,7 @@ fn exp64(x_: f64) f64 {
139139 }
140140 if (x < -708.39641853226410622) {
141141 // underflow if x != -inf
142 // math.forceEval(@as(f32, -0x1.0p-149 / x));
142 // math.doNotOptimizeAway(@as(f32, -0x1.0p-149 / x));
143143 if (x < -745.13321910194110842) {
144144 return 0;
145145 }
......@@ -172,7 +172,7 @@ fn exp64(x_: f64) f64 {
172172 lo = 0;
173173 } else {
174174 // inexact if x != 0
175 // math.forceEval(0x1.0p1023 + x);
175 // math.doNotOptimizeAway(0x1.0p1023 + x);
176176 return 1 + x;
177177 }
178178
lib/std/math/exp2.zig+2-2
......@@ -70,7 +70,7 @@ fn exp2_32(x: f32) f32 {
7070 // x < -126
7171 if (u >= 0x80000000) {
7272 if (u >= 0xC3160000 or u & 0x000FFFF != 0) {
73 math.forceEval(-0x1.0p-149 / x);
73 math.doNotOptimizeAway(-0x1.0p-149 / x);
7474 }
7575 // x <= -150
7676 if (u >= 0x3160000) {
......@@ -393,7 +393,7 @@ fn exp2_64(x: f64) f64 {
393393 if (ux >> 63 != 0) {
394394 // underflow
395395 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));
397397 }
398398 if (x <= -1075) {
399399 return 0;
lib/std/math/expm1.zig+2-2
......@@ -106,7 +106,7 @@ fn expm1_32(x_: f32) f32 {
106106 // |x| < 2^(-25)
107107 else if (hx < 0x33000000) {
108108 if (hx < 0x00800000) {
109 math.forceEval(x * x);
109 math.doNotOptimizeAway(x * x);
110110 }
111111 return x;
112112 } else {
......@@ -237,7 +237,7 @@ fn expm1_64(x_: f64) f64 {
237237 // |x| < 2^(-54)
238238 else if (hx < 0x3C900000) {
239239 if (hx < 0x00100000) {
240 math.forceEval(@floatCast(f32, x));
240 math.doNotOptimizeAway(@floatCast(f32, x));
241241 }
242242 return x;
243243 } else {
lib/std/math/floor.zig+6-6
......@@ -50,13 +50,13 @@ fn floor16(x: f16) f16 {
5050 if (u & m == 0) {
5151 return x;
5252 }
53 math.forceEval(x + 0x1.0p120);
53 math.doNotOptimizeAway(x + 0x1.0p120);
5454 if (u >> 15 != 0) {
5555 u += m;
5656 }
5757 return @bitCast(f16, u & ~m);
5858 } else {
59 math.forceEval(x + 0x1.0p120);
59 math.doNotOptimizeAway(x + 0x1.0p120);
6060 if (u >> 15 == 0) {
6161 return 0.0;
6262 } else {
......@@ -84,13 +84,13 @@ fn floor32(x: f32) f32 {
8484 if (u & m == 0) {
8585 return x;
8686 }
87 math.forceEval(x + 0x1.0p120);
87 math.doNotOptimizeAway(x + 0x1.0p120);
8888 if (u >> 31 != 0) {
8989 u += m;
9090 }
9191 return @bitCast(f32, u & ~m);
9292 } else {
93 math.forceEval(x + 0x1.0p120);
93 math.doNotOptimizeAway(x + 0x1.0p120);
9494 if (u >> 31 == 0) {
9595 return 0.0;
9696 } else {
......@@ -115,7 +115,7 @@ fn floor64(x: f64) f64 {
115115 }
116116
117117 if (e <= 0x3FF - 1) {
118 math.forceEval(y);
118 math.doNotOptimizeAway(y);
119119 if (u >> 63 != 0) {
120120 return -1.0;
121121 } else {
......@@ -142,7 +142,7 @@ fn floor128(x: f128) f128 {
142142 }
143143
144144 if (e <= 0x3FFF - 1) {
145 math.forceEval(y);
145 math.doNotOptimizeAway(y);
146146 if (u >> 127 != 0) {
147147 return -1.0;
148148 } else {
lib/std/math/log1p.zig+1-1
......@@ -62,7 +62,7 @@ fn log1p_32(x: f32) f32 {
6262 if ((ix << 1) < (0x33800000 << 1)) {
6363 // underflow if subnormal
6464 if (ix & 0x7F800000 == 0) {
65 math.forceEval(x * x);
65 math.doNotOptimizeAway(x * x);
6666 }
6767 return x;
6868 }
lib/std/math/round.zig+3-3
......@@ -43,7 +43,7 @@ fn round32(x_: f32) f32 {
4343 x = -x;
4444 }
4545 if (e < 0x7F - 1) {
46 math.forceEval(x + math.f32_toint);
46 math.doNotOptimizeAway(x + math.f32_toint);
4747 return 0 * @bitCast(f32, u);
4848 }
4949
......@@ -76,7 +76,7 @@ fn round64(x_: f64) f64 {
7676 x = -x;
7777 }
7878 if (e < 0x3ff - 1) {
79 math.forceEval(x + math.f64_toint);
79 math.doNotOptimizeAway(x + math.f64_toint);
8080 return 0 * @bitCast(f64, u);
8181 }
8282
......@@ -109,7 +109,7 @@ fn round128(x_: f128) f128 {
109109 x = -x;
110110 }
111111 if (e < 0x3FFF - 1) {
112 math.forceEval(x + math.f64_toint);
112 math.doNotOptimizeAway(x + math.f64_toint);
113113 return 0 * @bitCast(f128, u);
114114 }
115115
lib/std/math/tanh.zig+2-2
......@@ -67,7 +67,7 @@ fn tanh32(x: f32) f32 {
6767 }
6868 // |x| is subnormal
6969 else {
70 math.forceEval(x * x);
70 math.doNotOptimizeAway(x * x);
7171 t = x;
7272 }
7373
......@@ -112,7 +112,7 @@ fn tanh64(x: f64) f64 {
112112 }
113113 // |x| is subnormal
114114 else {
115 math.forceEval(@floatCast(f32, x));
115 math.doNotOptimizeAway(@floatCast(f32, x));
116116 t = x;
117117 }
118118
lib/std/math/trunc.zig+3-3
......@@ -46,7 +46,7 @@ fn trunc32(x: f32) f32 {
4646 if (u & m == 0) {
4747 return x;
4848 } else {
49 math.forceEval(x + 0x1p120);
49 math.doNotOptimizeAway(x + 0x1p120);
5050 return @bitCast(f32, u & ~m);
5151 }
5252}
......@@ -67,7 +67,7 @@ fn trunc64(x: f64) f64 {
6767 if (u & m == 0) {
6868 return x;
6969 } else {
70 math.forceEval(x + 0x1p120);
70 math.doNotOptimizeAway(x + 0x1p120);
7171 return @bitCast(f64, u & ~m);
7272 }
7373}
......@@ -88,7 +88,7 @@ fn trunc128(x: f128) f128 {
8888 if (u & m == 0) {
8989 return x;
9090 } else {
91 math.forceEval(x + 0x1p120);
91 math.doNotOptimizeAway(x + 0x1p120);
9292 return @bitCast(f128, u & ~m);
9393 }
9494}
lib/std/mem.zig+41
......@@ -893,6 +893,36 @@ test "mem.indexOf" {
893893 testing.expect(lastIndexOfScalar(u8, "boo", 'o').? == 2);
894894}
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
896926/// Reads an integer from memory with size equal to bytes.len.
897927/// T specifies the return type, which must be large enough to store
898928/// the result.
......@@ -2158,6 +2188,17 @@ pub fn alignForwardGeneric(comptime T: type, addr: T, alignment: T) T {
21582188 return alignBackwardGeneric(T, addr + (alignment - 1), alignment);
21592189}
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
21612202test "alignForward" {
21622203 testing.expect(alignForward(1, 1) == 1);
21632204 testing.expect(alignForward(2, 1) == 2);
lib/std/meta/trailer_flags.zig+86-49
......@@ -8,6 +8,7 @@ const meta = std.meta;
88const testing = std.testing;
99const mem = std.mem;
1010const assert = std.debug.assert;
11const TypeInfo = std.builtin.TypeInfo;
1112
1213/// This is useful for saving memory when allocating an object that has many
1314/// optional components. The optional objects are allocated sequentially in
......@@ -17,91 +18,125 @@ pub fn TrailerFlags(comptime Fields: type) type {
1718 return struct {
1819 bits: Int,
1920
20 pub const Int = @Type(.{ .Int = .{ .bits = bit_count, .is_signed = false } });
21 pub const Int = meta.Int(false, bit_count);
2122 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
2361 pub const Self = @This();
2462
25 pub fn has(self: Self, comptime name: []const u8) bool {
26 const field_index = meta.fieldIndex(Fields, name).?;
63 pub fn has(self: Self, comptime field: FieldEnum) bool {
64 const field_index = @enumToInt(field);
2765 return (self.bits & (1 << field_index)) != 0;
2866 }
2967
30 pub fn get(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime name: []const u8) ?Field(name) {
31 if (!self.has(name))
68 pub fn get(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime field: FieldEnum) ?Field(field) {
69 if (!self.has(field))
3270 return null;
33 return self.ptrConst(p, name).*;
71 return self.ptrConst(p, field).*;
3472 }
3573
36 pub fn setFlag(self: *Self, comptime name: []const u8) void {
37 const field_index = meta.fieldIndex(Fields, name).?;
74 pub fn setFlag(self: *Self, comptime field: FieldEnum) void {
75 const field_index = @enumToInt(field);
3876 self.bits |= 1 << field_index;
3977 }
4078
4179 /// `fields` is a struct with each field set to an optional value.
42 /// Missing fields are assumed to be `null`.
4380 /// 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 {
4582 var self: Self = .{ .bits = 0 };
46 inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
47 const opt: ?Field(field.name) = @field(fields, field.name);
48 const field_index = meta.fieldIndex(Fields, field.name).?;
49 self.bits |= @as(Int, @boolToInt(opt != null)) << field_index;
83 inline for (@typeInfo(Fields).Struct.fields) |field, i| {
84 if (@field(fields, field.name)) |_|
85 self.bits |= 1 << i;
5086 }
5187 return self;
5288 }
5389
5490 /// `fields` is a struct with each field set to an optional value (same as `init`).
55 /// Missing fields are assumed to be `null`.
56 pub fn setMany(self: Self, p: [*]align(@alignOf(Fields)) u8, fields: anytype) void {
57 inline for (@typeInfo(@TypeOf(fields)).Struct.fields) |field| {
58 const opt: ?Field(field.name) = @field(fields, field.name);
59 if (opt) |value| {
60 self.set(p, field.name, value);
61 }
91 pub fn setMany(self: Self, p: [*]align(@alignOf(Fields)) u8, fields: InitStruct) void {
92 inline for (@typeInfo(Fields).Struct.fields) |field, i| {
93 if (@field(fields, field.name)) |value|
94 self.set(p, @intToEnum(FieldEnum, i), value);
6295 }
6396 }
6497
6598 pub fn set(
6699 self: Self,
67100 p: [*]align(@alignOf(Fields)) u8,
68 comptime name: []const u8,
69 value: Field(name),
101 comptime field: FieldEnum,
102 value: Field(field),
70103 ) void {
71 self.ptr(p, name).* = value;
104 self.ptr(p, field).* = value;
72105 }
73106
74 pub fn ptr(self: Self, p: [*]align(@alignOf(Fields)) u8, comptime name: []const u8) *Field(name) {
75 if (@sizeOf(Field(name)) == 0)
107 pub fn ptr(self: Self, p: [*]align(@alignOf(Fields)) u8, comptime field: FieldEnum) *Field(field) {
108 if (@sizeOf(Field(field)) == 0)
76109 return undefined;
77 const off = self.offset(p, name);
78 return @ptrCast(*Field(name), @alignCast(@alignOf(Field(name)), p + off));
110 const off = self.offset(p, field);
111 return @ptrCast(*Field(field), @alignCast(@alignOf(Field(field)), p + off));
79112 }
80113
81 pub fn ptrConst(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime name: []const u8) *const Field(name) {
82 if (@sizeOf(Field(name)) == 0)
114 pub fn ptrConst(self: Self, p: [*]align(@alignOf(Fields)) const u8, comptime field: FieldEnum) *const Field(field) {
115 if (@sizeOf(Field(field)) == 0)
83116 return undefined;
84 const off = self.offset(p, name);
85 return @ptrCast(*const Field(name), @alignCast(@alignOf(Field(name)), p + off));
117 const off = self.offset(p, field);
118 return @ptrCast(*const Field(field), @alignCast(@alignOf(Field(field)), p + off));
86119 }
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 {
89122 var off: usize = 0;
90 inline for (@typeInfo(Fields).Struct.fields) |field, i| {
123 inline for (@typeInfo(Fields).Struct.fields) |field_info, i| {
91124 const active = (self.bits & (1 << i)) != 0;
92 if (comptime mem.eql(u8, field.name, name)) {
125 if (i == @enumToInt(field)) {
93126 assert(active);
94 return mem.alignForwardGeneric(usize, off, @alignOf(field.field_type));
127 return mem.alignForwardGeneric(usize, off, @alignOf(field_info.field_type));
95128 } else if (active) {
96 off = mem.alignForwardGeneric(usize, off, @alignOf(field.field_type));
97 off += @sizeOf(field.field_type);
129 off = mem.alignForwardGeneric(usize, off, @alignOf(field_info.field_type));
130 off += @sizeOf(field_info.field_type);
98131 }
99132 }
100 @compileError("no field named " ++ name ++ " in type " ++ @typeName(Fields));
101133 }
102134
103 pub fn Field(comptime name: []const u8) type {
104 return meta.fieldInfo(Fields, name).field_type;
135 pub fn Field(comptime field: FieldEnum) type {
136 inline for (@typeInfo(Fields).Struct.fields) |field_info, i| {
137 if (i == @enumToInt(field))
138 return field_info.field_type;
139 }
105140 }
106141
107142 pub fn sizeInBytes(self: Self) usize {
......@@ -125,6 +160,8 @@ test "TrailerFlags" {
125160 b: bool,
126161 c: u64,
127162 });
163 testing.expectEqual(u2, @TagType(Flags.FieldEnum));
164
128165 var flags = Flags.init(.{
129166 .b = true,
130167 .c = 1234,
......@@ -132,19 +169,19 @@ test "TrailerFlags" {
132169 const slice = try testing.allocator.allocAdvanced(u8, 8, flags.sizeInBytes(), .exact);
133170 defer testing.allocator.free(slice);
134171
135 flags.set(slice.ptr, "b", false);
136 flags.set(slice.ptr, "c", 12345678);
172 flags.set(slice.ptr, .b, false);
173 flags.set(slice.ptr, .c, 12345678);
137174
138 testing.expect(flags.get(slice.ptr, "a") == null);
139 testing.expect(!flags.get(slice.ptr, "b").?);
140 testing.expect(flags.get(slice.ptr, "c").? == 12345678);
175 testing.expect(flags.get(slice.ptr, .a) == null);
176 testing.expect(!flags.get(slice.ptr, .b).?);
177 testing.expect(flags.get(slice.ptr, .c).? == 12345678);
141178
142179 flags.setMany(slice.ptr, .{
143180 .b = true,
144181 .c = 5678,
145182 });
146183
147 testing.expect(flags.get(slice.ptr, "a") == null);
148 testing.expect(flags.get(slice.ptr, "b").?);
149 testing.expect(flags.get(slice.ptr, "c").? == 5678);
184 testing.expect(flags.get(slice.ptr, .a) == null);
185 testing.expect(flags.get(slice.ptr, .b).?);
186 testing.expect(flags.get(slice.ptr, .c).? == 5678);
150187}
lib/std/os/test.zig+24-2
......@@ -125,7 +125,20 @@ test "symlink with relative paths" {
125125 try cwd.writeFile("file.txt", "nonsense");
126126
127127 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 };
129142 } else {
130143 try os.symlink("file.txt", "symlinked");
131144 }
......@@ -183,7 +196,16 @@ test "readlinkat" {
183196
184197 // create a symbolic link
185198 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 };
187209 } else {
188210 try os.symlinkat("file.txt", tmp.dir.fd, "link");
189211 }
lib/std/os/uefi/protocols/simple_text_input_protocol.zig+1-1
......@@ -11,7 +11,7 @@ const Status = uefi.Status;
1111
1212/// Character input devices, e.g. Keyboard
1313pub const SimpleTextInputProtocol = extern struct {
14 _reset: fn (*const SimpleTextInputProtocol, bool) callconv(.C) usize,
14 _reset: fn (*const SimpleTextInputProtocol, bool) callconv(.C) Status,
1515 _read_key_stroke: fn (*const SimpleTextInputProtocol, *InputKey) callconv(.C) Status,
1616 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,
164164 }
165165}
166166
167pub const DeviceIoControlError = error{Unexpected};
167pub const DeviceIoControlError = error{ AccessDenied, Unexpected };
168168
169169/// A Zig wrapper around `NtDeviceIoControlFile` and `NtFsControlFile` syscalls.
170170/// It implements similar behavior to `DeviceIoControl` and is meant to serve
......@@ -216,6 +216,7 @@ pub fn DeviceIoControl(
216216 };
217217 switch (rc) {
218218 .SUCCESS => {},
219 .PRIVILEGE_NOT_HELD => return error.AccessDenied,
219220 .INVALID_PARAMETER => unreachable,
220221 else => return unexpectedStatus(rc),
221222 }
......@@ -593,6 +594,12 @@ pub const CreateSymbolicLinkError = error{
593594 Unexpected,
594595};
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.
596603pub fn CreateSymbolicLink(
597604 dir: ?HANDLE,
598605 sym_link_path: []const u16,
......@@ -710,7 +717,10 @@ pub fn ReadLink(dir: ?HANDLE, sub_path_w: []const u16, out_buffer: []u8) ReadLin
710717 defer CloseHandle(result_handle);
711718
712719 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
715725 const reparse_struct = @ptrCast(*const REPARSE_DATA_BUFFER, @alignCast(@alignOf(REPARSE_DATA_BUFFER), &reparse_buf[0]));
716726 switch (reparse_struct.ReparseTag) {
......@@ -992,7 +1002,10 @@ pub fn GetFinalPathNameByHandle(
9921002 input_struct.DeviceNameLength = @intCast(USHORT, volume_name.FileNameLength);
9931003 @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 };
9961009 const mount_points_struct = @ptrCast(*const MOUNTMGR_MOUNT_POINTS, &output_buf[0]);
9971010
9981011 const mount_points = @ptrCast(
lib/std/special/compiler_rt.zig+3-1
......@@ -100,7 +100,8 @@ comptime {
100100 @export(@import("compiler_rt/floatditf.zig").__floatditf, .{ .name = "__floatditf", .linkage = linkage });
101101 @export(@import("compiler_rt/floattitf.zig").__floattitf, .{ .name = "__floattitf", .linkage = linkage });
102102 @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
105106 @export(@import("compiler_rt/floatunditf.zig").__floatunditf, .{ .name = "__floatunditf", .linkage = linkage });
106107 @export(@import("compiler_rt/floatunsitf.zig").__floatunsitf, .{ .name = "__floatunsitf", .linkage = linkage });
......@@ -204,6 +205,7 @@ comptime {
204205 @export(@import("compiler_rt/extendXfYf2.zig").__aeabi_f2d, .{ .name = "__aeabi_f2d", .linkage = linkage });
205206 @export(@import("compiler_rt/floatsiXf.zig").__aeabi_i2d, .{ .name = "__aeabi_i2d", .linkage = linkage });
206207 @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 });
207209 @export(@import("compiler_rt/floatunsidf.zig").__aeabi_ui2d, .{ .name = "__aeabi_ui2d", .linkage = linkage });
208210 @export(@import("compiler_rt/floatundidf.zig").__aeabi_ul2d, .{ .name = "__aeabi_ul2d", .linkage = linkage });
209211 @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 @@
33// This file is part of [zig](https://ziglang.org/), which is MIT licensed.
44// The MIT license requires this copyright notice to be included in all copies
55// and substantial portions of the software.
6const __floattisf = @import("floattisf.zig").__floattisf;
6const __floattisf = @import("floatXisf.zig").__floattisf;
77const testing = @import("std").testing;
88
99fn test__floattisf(a: i128, expected: f32) void {
lib/std/start.zig+2-2
......@@ -248,7 +248,7 @@ pub fn callMain() u8 {
248248 return 0;
249249 },
250250 .Int => |info| {
251 if (info.bits != 8) {
251 if (info.bits != 8 or info.is_signed) {
252252 @compileError(bad_main_ret);
253253 }
254254 return root.main();
......@@ -264,7 +264,7 @@ pub fn callMain() u8 {
264264 switch (@typeInfo(@TypeOf(result))) {
265265 .Void => return 0,
266266 .Int => |info| {
267 if (info.bits != 8) {
267 if (info.bits != 8 or info.is_signed) {
268268 @compileError(bad_main_ret);
269269 }
270270 return result;
lib/std/zig/ast.zig+226-38
......@@ -915,23 +915,111 @@ pub const Node = struct {
915915 init_node: *Node,
916916 });
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
9181006 pub const RequiredFields = struct {
9191007 mut_token: TokenIndex,
9201008 name_token: TokenIndex,
9211009 semicolon_token: TokenIndex,
9221010 };
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) {
9251013 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);
9271015 }
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 {
9301018 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);
9321020 }
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 {
9351023 const trailer_flags = TrailerFlags.init(trailers);
9361024 const bytes = try allocator.alignedAlloc(u8, @alignOf(VarDecl), sizeInBytes(trailer_flags));
9371025 const var_decl = @ptrCast(*VarDecl, bytes.ptr);
......@@ -954,22 +1042,22 @@ pub const Node = struct {
9541042 pub fn iterate(self: *const VarDecl, index: usize) ?*Node {
9551043 var i = index;
9561044
957 if (self.getTrailer("type_node")) |type_node| {
1045 if (self.getTypeNode()) |type_node| {
9581046 if (i < 1) return type_node;
9591047 i -= 1;
9601048 }
9611049
962 if (self.getTrailer("align_node")) |align_node| {
1050 if (self.getAlignNode()) |align_node| {
9631051 if (i < 1) return align_node;
9641052 i -= 1;
9651053 }
9661054
967 if (self.getTrailer("section_node")) |section_node| {
1055 if (self.getSectionNode()) |section_node| {
9681056 if (i < 1) return section_node;
9691057 i -= 1;
9701058 }
9711059
972 if (self.getTrailer("init_node")) |init_node| {
1060 if (self.getInitNode()) |init_node| {
9731061 if (i < 1) return init_node;
9741062 i -= 1;
9751063 }
......@@ -978,11 +1066,11 @@ pub const Node = struct {
9781066 }
9791067
9801068 pub fn firstToken(self: *const VarDecl) TokenIndex {
981 if (self.getTrailer("visib_token")) |visib_token| return visib_token;
982 if (self.getTrailer("thread_local_token")) |thread_local_token| return thread_local_token;
983 if (self.getTrailer("comptime_token")) |comptime_token| return comptime_token;
984 if (self.getTrailer("extern_export_token")) |extern_export_token| return extern_export_token;
985 assert(self.getTrailer("lib_name") == null);
1069 if (self.getVisibToken()) |visib_token| return visib_token;
1070 if (self.getThreadLocalToken()) |thread_local_token| return thread_local_token;
1071 if (self.getComptimeToken()) |comptime_token| return comptime_token;
1072 if (self.getExternExportToken()) |extern_export_token| return extern_export_token;
1073 assert(self.getLibName() == null);
9861074 return self.mut_token;
9871075 }
9881076
......@@ -1320,34 +1408,126 @@ pub const Node = struct {
13201408 std.debug.print("{*} flags: {b} name_token: {} {*} params_len: {}\n", .{
13211409 self,
13221410 self.trailer_flags.bits,
1323 self.getTrailer("name_token"),
1324 self.trailer_flags.ptrConst(trailers_start, "name_token"),
1411 self.getNameToken(),
1412 self.trailer_flags.ptrConst(trailers_start, .name_token),
13251413 self.params_len,
13261414 });
13271415 }
13281416
1329 pub fn body(self: *const FnProto) ?*Node {
1330 return self.getTrailer("body_node");
1417 pub fn getDocComments(self: *const FnProto) ?*DocComment {
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);
13311467 }
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) {
13341514 const trailers_start = @alignCast(
13351515 @alignOf(ParamDecl),
13361516 @ptrCast([*]const u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
13371517 );
1338 return self.trailer_flags.get(trailers_start, name);
1518 return self.trailer_flags.get(trailers_start, field);
13391519 }
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 {
13421522 const trailers_start = @alignCast(
13431523 @alignOf(ParamDecl),
13441524 @ptrCast([*]u8, self) + @sizeOf(FnProto) + @sizeOf(ParamDecl) * self.params_len,
13451525 );
1346 self.trailer_flags.set(trailers_start, name, value);
1526 self.trailer_flags.set(trailers_start, field, value);
13471527 }
13481528
13491529 /// 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 {
13511531 const trailer_flags = TrailerFlags.init(trailers);
13521532 const bytes = try allocator.alignedAlloc(u8, @alignOf(FnProto), sizeInBytes(
13531533 required.params_len,
......@@ -1376,7 +1556,7 @@ pub const Node = struct {
13761556 pub fn iterate(self: *const FnProto, index: usize) ?*Node {
13771557 var i = index;
13781558
1379 if (self.getTrailer("lib_name")) |lib_name| {
1559 if (self.getLibName()) |lib_name| {
13801560 if (i < 1) return lib_name;
13811561 i -= 1;
13821562 }
......@@ -1394,12 +1574,12 @@ pub const Node = struct {
13941574 }
13951575 i -= params_len;
13961576
1397 if (self.getTrailer("align_expr")) |align_expr| {
1577 if (self.getAlignExpr()) |align_expr| {
13981578 if (i < 1) return align_expr;
13991579 i -= 1;
14001580 }
14011581
1402 if (self.getTrailer("section_expr")) |section_expr| {
1582 if (self.getSectionExpr()) |section_expr| {
14031583 if (i < 1) return section_expr;
14041584 i -= 1;
14051585 }
......@@ -1412,7 +1592,7 @@ pub const Node = struct {
14121592 .Invalid => {},
14131593 }
14141594
1415 if (self.body()) |body_node| {
1595 if (self.getBodyNode()) |body_node| {
14161596 if (i < 1) return body_node;
14171597 i -= 1;
14181598 }
......@@ -1421,14 +1601,14 @@ pub const Node = struct {
14211601 }
14221602
14231603 pub fn firstToken(self: *const FnProto) TokenIndex {
1424 if (self.getTrailer("visib_token")) |visib_token| return visib_token;
1425 if (self.getTrailer("extern_export_inline_token")) |extern_export_inline_token| return extern_export_inline_token;
1426 assert(self.getTrailer("lib_name") == null);
1604 if (self.getVisibToken()) |visib_token| return visib_token;
1605 if (self.getExternExportInlineToken()) |extern_export_inline_token| return extern_export_inline_token;
1606 assert(self.getLibName() == null);
14271607 return self.fn_token;
14281608 }
14291609
14301610 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();
14321612 switch (self.return_type) {
14331613 .Explicit, .InferErrorSet => |node| return node.lastToken(),
14341614 .Invalid => |tok| return tok,
......@@ -2673,24 +2853,32 @@ pub const Node = struct {
26732853 };
26742854
26752855 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);
26772861 }
26782862
26792863 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);
26812869 }
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) {
26842872 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);
26862874 }
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 {
26892877 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);
26912879 }
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 {
26942882 const trailer_flags = TrailerFlags.init(trailers);
26952883 const bytes = try allocator.alignedAlloc(u8, @alignOf(ControlFlowExpression), sizeInBytes(trailer_flags));
26962884 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
232232 .FnProto => {
233233 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| {
238238 try renderExpression(allocator, stream, tree, indent, start_col, decl, .Space);
239239 try renderExpression(allocator, stream, tree, indent, start_col, body_node, space);
240240 } else {
......@@ -257,7 +257,7 @@ fn renderContainerDecl(allocator: *mem.Allocator, stream: anytype, tree: *ast.Tr
257257 .VarDecl => {
258258 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);
261261 try renderVarDecl(allocator, stream, tree, indent, start_col, var_decl);
262262 },
263263
......@@ -1478,6 +1478,10 @@ fn renderExpression(
14781478 .BuiltinCall => {
14791479 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
14811485 try renderToken(tree, stream, builtin_call.builtin_token, indent, start_col, Space.None); // @name
14821486
14831487 const src_params_trailing_comma = blk: {
......@@ -1520,23 +1524,23 @@ fn renderExpression(
15201524 .FnProto => {
15211525 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| {
15241528 const visib_token = tree.token_ids[visib_token_index];
15251529 assert(visib_token == .Keyword_pub or visib_token == .Keyword_export);
15261530
15271531 try renderToken(tree, stream, visib_token_index, indent, start_col, Space.Space); // pub
15281532 }
15291533
1530 if (fn_proto.getTrailer("extern_export_inline_token")) |extern_export_inline_token| {
1531 if (fn_proto.getTrailer("is_extern_prototype") == null)
1534 if (fn_proto.getExternExportInlineToken()) |extern_export_inline_token| {
1535 if (fn_proto.getIsExternPrototype() == null)
15321536 try renderToken(tree, stream, extern_export_inline_token, indent, start_col, Space.Space); // extern/export/inline
15331537 }
15341538
1535 if (fn_proto.getTrailer("lib_name")) |lib_name| {
1539 if (fn_proto.getLibName()) |lib_name| {
15361540 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space);
15371541 }
15381542
1539 const lparen = if (fn_proto.getTrailer("name_token")) |name_token| blk: {
1543 const lparen = if (fn_proto.getNameToken()) |name_token| blk: {
15401544 try renderToken(tree, stream, fn_proto.fn_token, indent, start_col, Space.Space); // fn
15411545 try renderToken(tree, stream, name_token, indent, start_col, Space.None); // name
15421546 break :blk tree.nextToken(name_token);
......@@ -1549,11 +1553,11 @@ fn renderExpression(
15491553 const rparen = tree.prevToken(
15501554 // the first token for the annotation expressions is the left
15511555 // parenthesis, hence the need for two prevToken
1552 if (fn_proto.getTrailer("align_expr")) |align_expr|
1556 if (fn_proto.getAlignExpr()) |align_expr|
15531557 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|
15551559 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|
15571561 tree.prevToken(tree.prevToken(callconv_expr.firstToken()))
15581562 else switch (fn_proto.return_type) {
15591563 .Explicit => |node| node.firstToken(),
......@@ -1574,12 +1578,12 @@ fn renderExpression(
15741578 for (fn_proto.params()) |param_decl, i| {
15751579 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) {
15781582 const comma = tree.nextToken(param_decl.lastToken());
15791583 try renderToken(tree, stream, comma, indent, start_col, Space.Space); // ,
15801584 }
15811585 }
1582 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {
1586 if (fn_proto.getVarArgsToken()) |var_args_token| {
15831587 try renderToken(tree, stream, var_args_token, indent, start_col, Space.None);
15841588 }
15851589 } else {
......@@ -1591,7 +1595,7 @@ fn renderExpression(
15911595 try stream.writeByteNTimes(' ', new_indent);
15921596 try renderParamDecl(allocator, stream, tree, new_indent, start_col, param_decl, Space.Comma);
15931597 }
1594 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {
1598 if (fn_proto.getVarArgsToken()) |var_args_token| {
15951599 try stream.writeByteNTimes(' ', new_indent);
15961600 try renderToken(tree, stream, var_args_token, new_indent, start_col, Space.Comma);
15971601 }
......@@ -1600,7 +1604,7 @@ fn renderExpression(
16001604
16011605 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| {
16041608 const align_rparen = tree.nextToken(align_expr.lastToken());
16051609 const align_lparen = tree.prevToken(align_expr.firstToken());
16061610 const align_kw = tree.prevToken(align_lparen);
......@@ -1611,7 +1615,7 @@ fn renderExpression(
16111615 try renderToken(tree, stream, align_rparen, indent, start_col, Space.Space); // )
16121616 }
16131617
1614 if (fn_proto.getTrailer("section_expr")) |section_expr| {
1618 if (fn_proto.getSectionExpr()) |section_expr| {
16151619 const section_rparen = tree.nextToken(section_expr.lastToken());
16161620 const section_lparen = tree.prevToken(section_expr.firstToken());
16171621 const section_kw = tree.prevToken(section_lparen);
......@@ -1622,7 +1626,7 @@ fn renderExpression(
16221626 try renderToken(tree, stream, section_rparen, indent, start_col, Space.Space); // )
16231627 }
16241628
1625 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {
1629 if (fn_proto.getCallconvExpr()) |callconv_expr| {
16261630 const callconv_rparen = tree.nextToken(callconv_expr.lastToken());
16271631 const callconv_lparen = tree.prevToken(callconv_expr.firstToken());
16281632 const callconv_kw = tree.prevToken(callconv_lparen);
......@@ -1631,9 +1635,9 @@ fn renderExpression(
16311635 try renderToken(tree, stream, callconv_lparen, indent, start_col, Space.None); // (
16321636 try renderExpression(allocator, stream, tree, indent, start_col, callconv_expr, Space.None);
16331637 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) {
16351639 try stream.writeAll("callconv(.C) ");
1636 } else if (fn_proto.getTrailer("is_async") != null) {
1640 } else if (fn_proto.getIsAsync() != null) {
16371641 try stream.writeAll("callconv(.Async) ");
16381642 }
16391643
......@@ -2221,69 +2225,69 @@ fn renderVarDecl(
22212225 start_col: *usize,
22222226 var_decl: *ast.Node.VarDecl,
22232227) (@TypeOf(stream).Error || Error)!void {
2224 if (var_decl.getTrailer("visib_token")) |visib_token| {
2228 if (var_decl.getVisibToken()) |visib_token| {
22252229 try renderToken(tree, stream, visib_token, indent, start_col, Space.Space); // pub
22262230 }
22272231
2228 if (var_decl.getTrailer("extern_export_token")) |extern_export_token| {
2232 if (var_decl.getExternExportToken()) |extern_export_token| {
22292233 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| {
22322236 try renderExpression(allocator, stream, tree, indent, start_col, lib_name, Space.Space); // "lib"
22332237 }
22342238 }
22352239
2236 if (var_decl.getTrailer("comptime_token")) |comptime_token| {
2240 if (var_decl.getComptimeToken()) |comptime_token| {
22372241 try renderToken(tree, stream, comptime_token, indent, start_col, Space.Space); // comptime
22382242 }
22392243
2240 if (var_decl.getTrailer("thread_local_token")) |thread_local_token| {
2244 if (var_decl.getThreadLocalToken()) |thread_local_token| {
22412245 try renderToken(tree, stream, thread_local_token, indent, start_col, Space.Space); // threadlocal
22422246 }
22432247 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 and
2246 (var_decl.getTrailer("align_node") != null or
2247 var_decl.getTrailer("section_node") != null or
2248 var_decl.getTrailer("init_node") != null))
2249 const name_space = if (var_decl.getTypeNode() == null and
2250 (var_decl.getAlignNode() != null or
2251 var_decl.getSectionNode() != null or
2252 var_decl.getInitNode() != null))
22492253 Space.Space
22502254 else
22512255 Space.None;
22522256 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| {
22552259 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 or
2257 var_decl.getTrailer("section_node") != null or
2258 var_decl.getTrailer("init_node") != null) Space.Space else Space.None;
2260 const s = if (var_decl.getAlignNode() != null or
2261 var_decl.getSectionNode() != null or
2262 var_decl.getInitNode() != null) Space.Space else Space.None;
22592263 try renderExpression(allocator, stream, tree, indent, start_col, type_node, s);
22602264 }
22612265
2262 if (var_decl.getTrailer("align_node")) |align_node| {
2266 if (var_decl.getAlignNode()) |align_node| {
22632267 const lparen = tree.prevToken(align_node.firstToken());
22642268 const align_kw = tree.prevToken(lparen);
22652269 const rparen = tree.nextToken(align_node.lastToken());
22662270 try renderToken(tree, stream, align_kw, indent, start_col, Space.None); // align
22672271 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
22682272 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;
22702274 try renderToken(tree, stream, rparen, indent, start_col, s); // )
22712275 }
22722276
2273 if (var_decl.getTrailer("section_node")) |section_node| {
2277 if (var_decl.getSectionNode()) |section_node| {
22742278 const lparen = tree.prevToken(section_node.firstToken());
22752279 const section_kw = tree.prevToken(lparen);
22762280 const rparen = tree.nextToken(section_node.lastToken());
22772281 try renderToken(tree, stream, section_kw, indent, start_col, Space.None); // linksection
22782282 try renderToken(tree, stream, lparen, indent, start_col, Space.None); // (
22792283 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;
22812285 try renderToken(tree, stream, rparen, indent, start_col, s); // )
22822286 }
22832287
2284 if (var_decl.getTrailer("init_node")) |init_node| {
2288 if (var_decl.getInitNode()) |init_node| {
22852289 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); // =
22872291 try renderExpression(allocator, stream, tree, indent, start_col, init_node, Space.None);
22882292 }
22892293
lib/std/zig/system.zig+4-3
......@@ -88,6 +88,7 @@ pub const NativePaths = struct {
8888
8989 if (!is_windows) {
9090 const triple = try Target.current.linuxTriple(allocator);
91 const qual = Target.current.cpu.arch.ptrBitWidth();
9192
9293 // TODO: $ ld --verbose | grep SEARCH_DIR
9394 // the output contains some paths that end with lib64, maybe include them too?
......@@ -95,17 +96,17 @@ pub const NativePaths = struct {
9596 // TODO: some of these are suspect and should only be added on some systems. audit needed.
9697
9798 try self.addIncludeDir("/usr/local/include");
99 try self.addLibDirFmt("/usr/local/lib{}", .{qual});
98100 try self.addLibDir("/usr/local/lib");
99 try self.addLibDir("/usr/local/lib64");
100101
101102 try self.addIncludeDirFmt("/usr/include/{}", .{triple});
102103 try self.addLibDirFmt("/usr/lib/{}", .{triple});
103104
104105 try self.addIncludeDir("/usr/include");
106 try self.addLibDirFmt("/lib{}", .{qual});
105107 try self.addLibDir("/lib");
106 try self.addLibDir("/lib64");
108 try self.addLibDirFmt("/usr/lib{}", .{qual});
107109 try self.addLibDir("/usr/lib");
108 try self.addLibDir("/usr/lib64");
109110
110111 // example: on a 64-bit debian-based linux distro, with zlib installed from apt:
111112 // 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 {
12561256 };
12571257 defer fn_type_scope.instructions.deinit(self.gpa);
12581258
1259 decl.is_pub = fn_proto.getTrailer("visib_token") != null;
1260 const body_node = fn_proto.getTrailer("body_node") orelse
1259 decl.is_pub = fn_proto.getVisibToken() != null;
1260 const body_node = fn_proto.getBodyNode() orelse
12611261 return self.failTok(&fn_type_scope.base, fn_proto.fn_token, "TODO implement extern functions", .{});
12621262
12631263 const param_decls = fn_proto.params();
......@@ -1276,19 +1276,19 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
12761276 };
12771277 param_types[i] = try astgen.expr(self, &fn_type_scope.base, type_type_rl, param_type_node);
12781278 }
1279 if (fn_proto.getTrailer("var_args_token")) |var_args_token| {
1279 if (fn_proto.getVarArgsToken()) |var_args_token| {
12801280 return self.failTok(&fn_type_scope.base, var_args_token, "TODO implement var args", .{});
12811281 }
1282 if (fn_proto.getTrailer("lib_name")) |lib_name| {
1282 if (fn_proto.getLibName()) |lib_name| {
12831283 return self.failNode(&fn_type_scope.base, lib_name, "TODO implement function library name", .{});
12841284 }
1285 if (fn_proto.getTrailer("align_expr")) |align_expr| {
1285 if (fn_proto.getAlignExpr()) |align_expr| {
12861286 return self.failNode(&fn_type_scope.base, align_expr, "TODO implement function align expression", .{});
12871287 }
1288 if (fn_proto.getTrailer("section_expr")) |sect_expr| {
1288 if (fn_proto.getSectionExpr()) |sect_expr| {
12891289 return self.failNode(&fn_type_scope.base, sect_expr, "TODO implement function section expression", .{});
12901290 }
1291 if (fn_proto.getTrailer("callconv_expr")) |callconv_expr| {
1291 if (fn_proto.getCallconvExpr()) |callconv_expr| {
12921292 return self.failNode(
12931293 &fn_type_scope.base,
12941294 callconv_expr,
......@@ -1430,10 +1430,10 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
14301430 self.bin_file.freeDecl(decl);
14311431 }
14321432
1433 if (fn_proto.getTrailer("extern_export_inline_token")) |maybe_export_token| {
1433 if (fn_proto.getExternExportInlineToken()) |maybe_export_token| {
14341434 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
14351435 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().?];
14371437 const name = tree.tokenSliceLoc(name_loc);
14381438 // The scope needs to have the decl in it.
14391439 try self.analyzeExport(&block_scope.base, export_src, name, decl);
......@@ -1460,37 +1460,37 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
14601460 };
14611461 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;
14641464 const is_extern = blk: {
1465 const maybe_extern_token = var_decl.getTrailer("extern_export_token") orelse
1465 const maybe_extern_token = var_decl.getExternExportToken() orelse
14661466 break :blk false;
14671467 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| {
14691469 return self.failNode(&block_scope.base, some, "extern variables have no initializers", .{});
14701470 }
14711471 break :blk true;
14721472 };
1473 if (var_decl.getTrailer("lib_name")) |lib_name| {
1473 if (var_decl.getLibName()) |lib_name| {
14741474 assert(is_extern);
14751475 return self.failNode(&block_scope.base, lib_name, "TODO implement function library name", .{});
14761476 }
14771477 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: {
14791479 if (!is_mutable) {
14801480 return self.failTok(&block_scope.base, some, "threadlocal variable cannot be constant", .{});
14811481 }
14821482 break :blk true;
14831483 } else false;
1484 assert(var_decl.getTrailer("comptime_token") == null);
1485 if (var_decl.getTrailer("align_node")) |align_expr| {
1484 assert(var_decl.getComptimeToken() == null);
1485 if (var_decl.getAlignNode()) |align_expr| {
14861486 return self.failNode(&block_scope.base, align_expr, "TODO implement function align expression", .{});
14871487 }
1488 if (var_decl.getTrailer("section_node")) |sect_expr| {
1488 if (var_decl.getSectionNode()) |sect_expr| {
14891489 return self.failNode(&block_scope.base, sect_expr, "TODO implement function section expression", .{});
14901490 }
14911491
14921492 const explicit_type = blk: {
1493 const type_node = var_decl.getTrailer("type_node") orelse
1493 const type_node = var_decl.getTypeNode() orelse
14941494 break :blk null;
14951495
14961496 // Temporary arena for the zir instructions.
......@@ -1517,7 +1517,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
15171517 };
15181518
15191519 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: {
15211521 var gen_scope_arena = std.heap.ArenaAllocator.init(self.gpa);
15221522 defer gen_scope_arena.deinit();
15231523 var gen_scope: Scope.GenZIR = .{
......@@ -1602,7 +1602,7 @@ fn astGenAndAnalyzeDecl(self: *Module, decl: *Decl) !bool {
16021602 decl.analysis = .complete;
16031603 decl.generation = self.generation;
16041604
1605 if (var_decl.getTrailer("extern_export_token")) |maybe_export_token| {
1605 if (var_decl.getExternExportToken()) |maybe_export_token| {
16061606 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
16071607 const export_src = tree.token_locs[maybe_export_token].start;
16081608 const name_loc = tree.token_locs[var_decl.name_token];
......@@ -1768,7 +1768,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
17681768 for (decls) |src_decl, decl_i| {
17691769 if (src_decl.cast(ast.Node.FnProto)) |fn_proto| {
17701770 // 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 {
17721772 @panic("TODO missing function name");
17731773 };
17741774
......@@ -1804,7 +1804,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
18041804 } else {
18051805 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);
18061806 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| {
18081808 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
18091809 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });
18101810 }
......@@ -1831,7 +1831,7 @@ fn analyzeRootSrcFile(self: *Module, root_scope: *Scope.File) !void {
18311831 } else {
18321832 const new_decl = try self.createNewDecl(&root_scope.base, name, decl_i, name_hash, contents_hash);
18331833 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| {
18351835 if (tree.token_ids[maybe_export_token] == .Keyword_export) {
18361836 self.work_queue.writeItemAssumeCapacity(.{ .analyze_decl = new_decl });
18371837 }
......@@ -2570,7 +2570,18 @@ pub fn analyzeIsNull(
25702570 operand: *Inst,
25712571 invert_logic: bool,
25722572) 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", .{});
25742585}
25752586
25762587/// Asserts that lhs and rhs types are both numeric.
src-self-hosted/astgen.zig+292-15
......@@ -13,7 +13,8 @@ const Scope = Module.Scope;
1313const InnerError = Module.InnerError;
1414
1515pub 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.
1718 discard,
1819 /// The expression has an inferred type, and it will be evaluated as an rvalue.
1920 none,
......@@ -272,22 +273,22 @@ pub fn expr(mod: *Module, scope: *Scope, rl: ResultLoc, node: *ast.Node) InnerEr
272273 .AnyFrameType => return rlWrap(mod, scope, rl, try anyFrameType(mod, scope, node.castTag(.AnyFrameType).?)),
273274 .ErrorSetDecl => return errorSetDecl(mod, scope, rl, node.castTag(.ErrorSetDecl).?),
274275 .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
276280 .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", .{}),
278281 .Range => return mod.failNode(scope, node, "TODO implement astgen.expr for .Range", .{}),
279282 .OrElse => return mod.failNode(scope, node, "TODO implement astgen.expr for .OrElse", .{}),
280283 .Await => return mod.failNode(scope, node, "TODO implement astgen.expr for .Await", .{}),
281284 .Resume => return mod.failNode(scope, node, "TODO implement astgen.expr for .Resume", .{}),
282285 .Try => return mod.failNode(scope, node, "TODO implement astgen.expr for .Try", .{}),
283286 .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", .{}),
285287 .ArrayInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializer", .{}),
286288 .ArrayInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .ArrayInitializerDot", .{}),
287289 .StructInitializer => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializer", .{}),
288290 .StructInitializerDot => return mod.failNode(scope, node, "TODO implement astgen.expr for .StructInitializerDot", .{}),
289291 .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", .{}),
291292 .Suspend => return mod.failNode(scope, node, "TODO implement astgen.expr for .Suspend", .{}),
292293 .Continue => return mod.failNode(scope, node, "TODO implement astgen.expr for .Continue", .{}),
293294 .AnyType => return mod.failNode(scope, node, "TODO implement astgen.expr for .AnyType", .{}),
......@@ -450,16 +451,16 @@ fn varDecl(
450451 block_arena: *Allocator,
451452) InnerError!*Scope {
452453 // TODO implement detection of shadowing
453 if (node.getTrailer("comptime_token")) |comptime_token| {
454 if (node.getComptimeToken()) |comptime_token| {
454455 return mod.failTok(scope, comptime_token, "TODO implement comptime locals", .{});
455456 }
456 if (node.getTrailer("align_node")) |align_node| {
457 if (node.getAlignNode()) |align_node| {
457458 return mod.failNode(scope, align_node, "TODO implement alignment on locals", .{});
458459 }
459460 const tree = scope.tree();
460461 const name_src = tree.token_locs[node.name_token].start;
461462 const ident_name = try identifierTokenString(mod, scope, node.name_token);
462 const init_node = node.getTrailer("init_node") orelse
463 const init_node = node.getInitNode() orelse
463464 return mod.fail(scope, name_src, "variables must be initialized", .{});
464465
465466 switch (tree.token_ids[node.mut_token]) {
......@@ -468,7 +469,7 @@ fn varDecl(
468469 // or an rvalue as a result location. If it is an rvalue, we can use the instruction as
469470 // the variable, no memory location needed.
470471 const result_loc = if (nodeMayNeedMemoryLocation(init_node)) r: {
471 if (node.getTrailer("type_node")) |type_node| {
472 if (node.getTypeNode()) |type_node| {
472473 const type_inst = try typeExpr(mod, scope, type_node);
473474 const alloc = try addZIRUnOp(mod, scope, name_src, .alloc, type_inst);
474475 break :r ResultLoc{ .ptr = alloc };
......@@ -477,7 +478,7 @@ fn varDecl(
477478 break :r ResultLoc{ .inferred_ptr = alloc };
478479 }
479480 } else r: {
480 if (node.getTrailer("type_node")) |type_node|
481 if (node.getTypeNode()) |type_node|
481482 break :r ResultLoc{ .ty = try typeExpr(mod, scope, type_node) }
482483 else
483484 break :r .none;
......@@ -493,10 +494,10 @@ fn varDecl(
493494 return &sub_scope.base;
494495 },
495496 .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: {
497498 const type_inst = try typeExpr(mod, scope, type_node);
498499 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 } };
500501 } else a: {
501502 const alloc = try addZIRNoOp(mod, scope, name_src, .alloc_inferred);
502503 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,
623624 .One => if (mutable) T.single_mut_ptr_type else T.single_const_ptr_type,
624625 .Many => if (mutable) T.many_mut_ptr_type else T.many_const_ptr_type,
625626 .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,
627628 }, child_type);
628629 }
629630
......@@ -749,6 +750,93 @@ fn errorType(mod: *Module, scope: *Scope, node: *ast.Node.OneToken) InnerError!*
749750 });
750751}
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
752840/// Return whether the identifier names of two tokens are equal. Resolves @"" tokens without allocating.
753841/// OK in theory it could do it without allocating. This implementation allocates when the @"" form is used.
754842fn 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
793881 const lhs = try expr(mod, scope, .ref, node.lhs);
794882 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 }, .{});
797 if (rl == .ref) return pointer;
798 return rlWrap(mod, scope, rl, try addZIRUnOp(mod, scope, src, .deref, pointer));
884 return rlWrapPtr(mod, scope, rl, try addZIRInst(mod, scope, src, zir.Inst.FieldPtr, .{ .object_ptr = lhs, .field_name = field_name }, .{}));
885}
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 }, .{}));
799895}
800896
801897fn 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
10791175 }
10801176 }
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
10821184 var expr_scope: Scope.GenZIR = .{
10831185 .parent = scope,
10841186 .decl = scope.decl().?,
......@@ -1197,6 +1299,181 @@ fn whileExpr(mod: *Module, scope: *Scope, rl: ResultLoc, while_node: *ast.Node.W
11971299 return &while_block.base;
11981300}
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
12001477fn ret(mod: *Module, scope: *Scope, cfe: *ast.Node.ControlFlowExpression) InnerError!*zir.Inst {
12011478 const tree = scope.tree();
12021479 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 {
273273 /// across each runtime branch upon joining.
274274 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
276288 const MCValue = union(enum) {
277289 /// 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.
278292 none,
279293 /// Control flow will not allow this value to be observed.
280294 unreach,
......@@ -346,71 +360,55 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
346360
347361 const Branch = struct {
348362 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
400364 fn deinit(self: *Branch, gpa: *Allocator) void {
401365 self.inst_table.deinit(gpa);
402 self.registers.deinit(gpa);
403 self.stack.deinit(gpa);
404366 self.* = undefined;
405367 }
406368 };
407369
408 const RegisterAllocation = struct {
409 inst: *ir.Inst,
410 };
370 fn markRegUsed(self: *Self, reg: Register) void {
371 if (FreeRegInt == u0) return;
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
412409 const StackAllocation = struct {
413410 inst: *ir.Inst,
411 /// TODO do we need size? should be determined by inst.ty.abiSize()
414412 size: u32,
415413 };
416414
......@@ -435,14 +433,13 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
435433 branch_stack.items[0].deinit(bin_file.allocator);
436434 branch_stack.deinit();
437435 }
438 const branch = try branch_stack.addOne();
439 branch.* = .{};
436 try branch_stack.append(.{});
440437
441438 const src_data: struct {lbrace_src: usize, rbrace_src: usize, source: []const u8} = blk: {
442439 if (module_fn.owner_decl.scope.cast(Module.Scope.File)) |scope_file| {
443440 const tree = scope_file.contents.tree;
444441 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).?;
446443 const lbrace_src = tree.token_locs[block.lbrace].start;
447444 const rbrace_src = tree.token_locs[block.rbrace].start;
448445 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 {
476473 .rbrace_src = src_data.rbrace_src,
477474 .source = src_data.source,
478475 };
476 defer function.registers.deinit(bin_file.allocator);
477 defer function.stack.deinit(bin_file.allocator);
479478 defer function.exitlude_jump_relocs.deinit(bin_file.allocator);
480479
481480 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 {
487486 function.args = call_info.args;
488487 function.ret_mcv = call_info.return_value;
489488 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
492491 function.gen() catch |err| switch (err) {
493492 error.CodegenFail => return Result{ .fail = function.err_msg.? },
......@@ -523,7 +522,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
523522 try self.dbgSetPrologueEnd();
524523 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;
527526 if (stack_end > math.maxInt(i32))
528527 return self.fail(self.src, "too much stack used in call parameters", .{});
529528 const aligned_stack_end = mem.alignForward(stack_end, self.stack_align);
......@@ -580,13 +579,15 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
580579 }
581580
582581 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;
585582 for (body.instructions) |inst| {
583 try self.ensureProcessDeathCapacity(@popCount(@TypeOf(inst.deaths), inst.deaths));
584
586585 const mcv = try self.genFuncInst(inst);
587 log.debug("{*} => {}", .{inst, mcv});
588 // TODO don't put void or dead things in here
589 try inst_table.putNoClobber(self.gpa, inst, mcv);
586 if (!inst.isUnused()) {
587 log.debug("{*} => {}", .{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
591592 var i: ir.Inst.DeathsBitIndex = 0;
592593 while (inst.getOperand(i)) |operand| : (i += 1) {
......@@ -628,21 +629,28 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
628629 self.dbg_line.appendAssumeCapacity(DW.LNS_copy);
629630 }
630631
632 /// Asserts there is already capacity to insert into top branch inst_table.
631633 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);
632637 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
633 const entry = branch.inst_table.getEntry(inst) orelse return;
634 const prev_value = entry.value;
635 entry.value = .dead;
638 branch.inst_table.putAssumeCapacity(inst, .dead);
636639 switch (prev_value) {
637640 .register => |reg| {
638641 const canon_reg = toCanonicalReg(reg);
639 _ = branch.registers.remove(canon_reg);
640 branch.markRegFree(canon_reg);
642 _ = self.registers.remove(canon_reg);
643 self.markRegFree(canon_reg);
641644 },
642645 else => {}, // TODO process stack allocation death
643646 }
644647 }
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
646654 /// Adds a Type to the .debug_info at the current position. The bytes will be populated later,
647655 /// after codegen for this symbol is done.
648656 fn addDbgInfoTypeReloc(self: *Self, ty: Type) !void {
......@@ -705,13 +713,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
705713 fn allocMem(self: *Self, inst: *ir.Inst, abi_size: u32, abi_align: u32) !u32 {
706714 if (abi_align > self.stack_align)
707715 self.stack_align = abi_align;
708 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
709716 // TODO find a free slot instead of always appending
710 const offset = mem.alignForwardGeneric(u32, branch.next_stack_offset, abi_align);
711 branch.next_stack_offset = offset + abi_size;
712 if (branch.next_stack_offset > branch.max_end_stack)
713 branch.max_end_stack = branch.next_stack_offset;
714 try branch.stack.putNoClobber(self.gpa, offset, .{
717 const offset = mem.alignForwardGeneric(u32, self.next_stack_offset, abi_align);
718 self.next_stack_offset = offset + abi_size;
719 if (self.next_stack_offset > self.max_end_stack)
720 self.max_end_stack = self.next_stack_offset;
721 try self.stack.putNoClobber(self.gpa, offset, .{
715722 .inst = inst,
716723 .size = abi_size,
717724 });
......@@ -737,15 +744,14 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
737744 const abi_align = elem_ty.abiAlignment(self.target.*);
738745 if (abi_align > self.stack_align)
739746 self.stack_align = abi_align;
740 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
741747
742748 if (reg_ok) {
743749 // Make sure the type can fit in a register before we try to allocate one.
744750 const ptr_bits = arch.ptrBitWidth();
745751 const ptr_bytes: u64 = @divExact(ptr_bits, 8);
746752 if (abi_size <= ptr_bytes) {
747 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);
748 if (branch.allocReg(inst)) |reg| {
753 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
754 if (self.allocReg(inst)) |reg| {
749755 return MCValue{ .register = registerAlias(reg, abi_size) };
750756 }
751757 }
......@@ -758,20 +764,18 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
758764 /// allocated. A second call to `copyToTmpRegister` may return the same register.
759765 /// This can have a side effect of spilling instructions to the stack to free up a register.
760766 fn copyToTmpRegister(self: *Self, src: usize, mcv: MCValue) !Register {
761 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
762
763 const reg = branch.findUnusedReg() orelse b: {
767 const reg = self.findUnusedReg() orelse b: {
764768 // We'll take over the first register. Move the instruction that was previously
765769 // there to a stack allocation.
766770 const reg = callee_preserved_regs[0];
767 const regs_entry = branch.registers.remove(reg).?;
768 const spilled_inst = regs_entry.value.inst;
771 const regs_entry = self.registers.remove(reg).?;
772 const spilled_inst = regs_entry.value;
769773
770774 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);
771 const inst_entry = branch.inst_table.getEntry(spilled_inst).?;
772 const reg_mcv = inst_entry.value;
775 const reg_mcv = self.getResolvedInstValue(spilled_inst);
773776 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);
775779 try self.genSetStack(src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);
776780
777781 break :b reg;
......@@ -784,22 +788,21 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
784788 /// `reg_owner` is the instruction that gets associated with the register in the register table.
785789 /// This can have a side effect of spilling instructions to the stack to free up a register.
786790 fn copyToNewRegister(self: *Self, reg_owner: *ir.Inst, mcv: MCValue) !MCValue {
787 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
788 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);
791 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
789792
790 const reg = branch.allocReg(reg_owner) orelse b: {
793 const reg = self.allocReg(reg_owner) orelse b: {
791794 // We'll take over the first register. Move the instruction that was previously
792795 // there to a stack allocation.
793796 const reg = callee_preserved_regs[0];
794 const regs_entry = branch.registers.getEntry(reg).?;
795 const spilled_inst = regs_entry.value.inst;
796 regs_entry.value = .{ .inst = reg_owner };
797 const regs_entry = self.registers.getEntry(reg).?;
798 const spilled_inst = regs_entry.value;
799 regs_entry.value = reg_owner;
797800
798801 const stack_mcv = try self.allocRegOrMem(spilled_inst, false);
799 const inst_entry = branch.inst_table.getEntry(spilled_inst).?;
800 const reg_mcv = inst_entry.value;
802 const reg_mcv = self.getResolvedInstValue(spilled_inst);
801803 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);
803806 try self.genSetStack(reg_owner.src, spilled_inst.ty, stack_mcv.stack_offset, reg_mcv);
804807
805808 break :b reg;
......@@ -826,6 +829,16 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
826829 // No side effects, so if it's unreferenced, do nothing.
827830 if (inst.base.isUnused())
828831 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
829842 switch (arch) {
830843 else => return self.fail(inst.base.src, "TODO implement intCast for {}", .{self.target.cpu.arch}),
831844 }
......@@ -934,9 +947,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
934947 .register => |reg| {
935948 // If it's in the registers table, need to associate the register with the
936949 // new instruction.
937 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
938 if (branch.registers.getEntry(toCanonicalReg(reg))) |entry| {
939 entry.value = .{ .inst = inst };
950 if (self.registers.getEntry(toCanonicalReg(reg))) |entry| {
951 entry.value = inst;
940952 }
941953 log.debug("reusing {} => {*}", .{reg, inst});
942954 },
......@@ -950,6 +962,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
950962 // Prevent the operand deaths processing code from deallocating it.
951963 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
953969 return true;
954970 }
955971
......@@ -1231,8 +1247,7 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
12311247 if (inst.base.isUnused())
12321248 return MCValue.dead;
12331249
1234 const branch = &self.branch_stack.items[self.branch_stack.items.len - 1];
1235 try branch.registers.ensureCapacity(self.gpa, branch.registers.items().len + 1);
1250 try self.registers.ensureCapacity(self.gpa, self.registers.items().len + 1);
12361251
12371252 const result = self.args[self.arg_index];
12381253 self.arg_index += 1;
......@@ -1240,8 +1255,8 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
12401255 const name_with_null = inst.name[0..mem.lenZ(inst.name) + 1];
12411256 switch (result) {
12421257 .register => |reg| {
1243 branch.registers.putAssumeCapacityNoClobber(toCanonicalReg(reg), .{ .inst = &inst.base });
1244 branch.markRegUsed(reg);
1258 self.registers.putAssumeCapacityNoClobber(toCanonicalReg(reg), &inst.base);
1259 self.markRegUsed(reg);
12451260
12461261 try self.dbg_info.ensureCapacity(self.dbg_info.items.len + 8 + name_with_null.len);
12471262 self.dbg_info.appendAssumeCapacity(link.File.Elf.abbrev_parameter);
......@@ -1536,18 +1551,19 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
15361551
15371552 fn genDbgStmt(self: *Self, inst: *ir.Inst.NoOp) !MCValue {
15381553 try self.dbgAdvancePCAndLine(inst.base.src);
1539 return MCValue.none;
1554 assert(inst.base.isUnused());
1555 return MCValue.dead;
15401556 }
15411557
15421558 fn genCondBr(self: *Self, inst: *ir.Inst.CondBr) !MCValue {
1543 // TODO Rework this so that the arch-independent logic isn't buried and duplicated.
1544 switch (arch) {
1545 .x86_64 => {
1559 const cond = try self.resolveInst(inst.condition);
1560
1561 const reloc: Reloc = switch (arch) {
1562 .i386, .x86_64 => reloc: {
15461563 try self.code.ensureCapacity(self.code.items.len + 6);
15471564
1548 const cond = try self.resolveInst(inst.condition);
1549 switch (cond) {
1550 .compare_flags_signed => |cmp_op| {
1565 const opcode: u8 = switch (cond) {
1566 .compare_flags_signed => |cmp_op| blk: {
15511567 // Here we map to the opposite opcode because the jump is to the false branch.
15521568 const opcode: u8 = switch (cmp_op) {
15531569 .gte => 0x8c,
......@@ -1557,9 +1573,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
15571573 .lte => 0x8f,
15581574 .eq => 0x85,
15591575 };
1560 return self.genX86CondBr(inst, opcode);
1576 break :blk opcode;
15611577 },
1562 .compare_flags_unsigned => |cmp_op| {
1578 .compare_flags_unsigned => |cmp_op| blk: {
15631579 // Here we map to the opposite opcode because the jump is to the false branch.
15641580 const opcode: u8 = switch (cmp_op) {
15651581 .gte => 0x82,
......@@ -1569,9 +1585,9 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
15691585 .lte => 0x87,
15701586 .eq => 0x85,
15711587 };
1572 return self.genX86CondBr(inst, opcode);
1588 break :blk opcode;
15731589 },
1574 .register => |reg| {
1590 .register => |reg| blk: {
15751591 // test reg, 1
15761592 // TODO detect al, ax, eax
15771593 try self.code.ensureCapacity(self.code.items.len + 4);
......@@ -1583,23 +1599,128 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
15831599 @as(u8, 0xC0) | (0 << 3) | @truncate(u3, reg.id()),
15841600 0x01,
15851601 });
1586 return self.genX86CondBr(inst, 0x84);
1602 break :blk 0x84;
15871603 },
15881604 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;
15901610 },
1591 else => return self.fail(inst.base.src, "TODO implement condbr for {}", .{self.target.cpu.arch}),
1592 }
1593 }
1611 else => return self.fail(inst.base.src, "TODO implement condbr {}", .{ self.target.cpu.arch }),
1612 };
15941613
1595 fn genX86CondBr(self: *Self, inst: *ir.Inst.CondBr, opcode: u8) !MCValue {
1596 // TODO deal with liveness / deaths condbr's then_entry_deaths and else_entry_deaths
1597 self.code.appendSliceAssumeCapacity(&[_]u8{ 0x0f, opcode });
1598 const reloc = Reloc{ .rel32 = self.code.items.len };
1599 self.code.items.len += 4;
1614 // Capture the state of register and stack allocation state so that we can revert to it.
1615 const parent_next_stack_offset = self.next_stack_offset;
1616 const parent_free_registers = self.free_registers;
1617 var parent_stack = try self.stack.clone(self.gpa);
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 }
16001629 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
16011647 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 }
16021656 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
16031724 return MCValue.unreach;
16041725 }
16051726
......@@ -1673,11 +1794,12 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
16731794 switch (reloc) {
16741795 .rel32 => |pos| {
16751796 const amt = self.code.items.len - (pos + 4);
1676 // If it wouldn't jump at all, elide it.
1677 if (amt == 0) {
1678 self.code.items.len -= 5;
1679 return;
1680 }
1797 // Here it would be tempting to implement testing for amt == 0 and then elide the
1798 // jump. However, that will cause a problem because other jumps may assume that they
1799 // can jump to this code. Or maybe I didn't understand something when I was debugging.
1800 // It could be worth another look. Anyway, that's why that isn't done here. Probably the
1801 // best place to elide jumps will be in semantic analysis, by inlining blocks that only
1802 // only have 1 break instruction.
16811803 const s32_amt = math.cast(i32, amt) catch
16821804 return self.fail(src, "unable to perform relocation: jump too far", .{});
16831805 mem.writeIntLittle(i32, self.code.items[pos..][0..4], s32_amt);
......@@ -1927,15 +2049,29 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
19272049 mem.writeIntLittle(u32, self.code.addManyAsArrayAssumeCapacity(4), x);
19282050 },
19292051 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]);
19312070 },
19322071 else => {
19332072 return self.fail(src, "TODO implement set abi_size=large stack variable with immediate", .{});
19342073 },
19352074 }
1936 if (x_big <= math.maxInt(u32)) {} else {
1937 return self.fail(src, "TODO implement set stack variable with large immediate", .{});
1938 }
19392075 },
19402076 .embedded_in_code => |code_offset| {
19412077 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 {
22822418 }
22832419
22842420 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
22852425 // 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| {
22872427 const branch = &self.branch_stack.items[0];
22882428 const gop = try branch.inst_table.getOrPut(self.gpa, inst);
22892429 if (!gop.found_existing) {
......@@ -2292,6 +2432,10 @@ fn Function(comptime arch: std.Target.Cpu.Arch) type {
22922432 return gop.entry.value;
22932433 }
22942434
2435 return self.getResolvedInstValue(inst);
2436 }
2437
2438 fn getResolvedInstValue(self: *Self, inst: *ir.Inst) MCValue {
22952439 // Treat each stack item as a "layer" on top of the previous one.
22962440 var i: usize = self.branch_stack.items.len;
22972441 while (true) {
src-self-hosted/link/Elf.zig+12-5
......@@ -17,6 +17,7 @@ const Type = @import("../type.zig").Type;
1717const link = @import("../link.zig");
1818const File = link.File;
1919const Elf = @This();
20const build_options = @import("build_options");
2021
2122const default_entry_addr = 0x8000000;
2223
......@@ -1640,9 +1641,15 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
16401641 else => false,
16411642 };
16421643 if (is_fn) {
1643 //if (mem.eql(u8, mem.spanZ(decl.name), "add")) {
1644 // typed_value.val.cast(Value.Payload.Function).?.func.dump(module.*);
1645 //}
1644 const zir_dumps = if (std.builtin.is_test) &[0][]const u8{} else build_options.zir_dumps;
1645 if (zir_dumps.len != 0) {
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
16471654 // For functions we need to add a prologue to the debug line program.
16481655 try dbg_line_buffer.ensureCapacity(26);
......@@ -1654,7 +1661,7 @@ pub fn updateDecl(self: *Elf, module: *Module, decl: *Module.Decl) !void {
16541661 // TODO Look into improving the performance here by adding a token-index-to-line
16551662 // lookup table. Currently this involves scanning over the source code for newlines.
16561663 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).?;
16581665 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);
16591666 break :blk @intCast(u28, line_delta);
16601667 } 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
21532160 // TODO Look into improving the performance here by adding a token-index-to-line
21542161 // lookup table. Currently this involves scanning over the source code for newlines.
21552162 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).?;
21572164 const line_delta = std.zig.lineDelta(tree.source, 0, tree.token_locs[block.lbrace].start);
21582165 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");
1616const link = @import("../link.zig");
1717const File = link.File;
1818
19const is_darwin = std.Target.current.os.tag.isDarwin();
20
2119pub const base_tag: File.Tag = File.Tag.macho;
2220
2321base: File,
......@@ -30,24 +28,26 @@ command_file_offset: ?u64 = null,
3028/// Stored in native-endian format, depending on target endianness needs to be bswapped on read/write.
3129/// Same order as in the file.
3230segments: std.ArrayListUnmanaged(macho.segment_command_64) = std.ArrayListUnmanaged(macho.segment_command_64){},
31/// Section (headers) *always* follow segment (load commands) directly!
3332sections: 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
3639/// Entry point load command
3740entry_point_cmd: ?macho.entry_point_command = null,
3841entry_addr: ?u64 = null,
3942
40/// Default VM start address set at 4GB
43/// The first 4GB of process' memory is reserved for the null (__PAGEZERO) segment.
44/// This is also the start address for our binary.
4145vm_start_address: u64 = 0x100000000,
4246
4347seg_table_dirty: bool = false,
4448
4549error_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
5151/// `alloc_num / alloc_den` is the factor of padding when allocating.
5252const alloc_num = 4;
5353const alloc_den = 3;
......@@ -138,8 +138,8 @@ fn createFile(allocator: *Allocator, file: fs.File, options: link.Options) !Mach
138138 .vmsize = self.vm_start_address,
139139 .fileoff = 0,
140140 .filesize = 0,
141 .maxprot = 0,
142 .initprot = 0,
141 .maxprot = macho.VM_PROT_NONE,
142 .initprot = macho.VM_PROT_NONE,
143143 .nsects = 0,
144144 .flags = 0,
145145 };
......@@ -225,67 +225,61 @@ pub fn flush(self: *MachO, module: *Module) !void {
225225
226226 switch (self.base.options.output_mode) {
227227 .Exe => {
228 if (self.link_against_system) {
229 if (is_darwin) {
230 {
231 // Specify path to dynamic linker dyld
232 const cmdsize = commandSize(@intCast(u32, @sizeOf(macho.dylinker_command) + mem.lenZ(DEFAULT_DYLD_PATH)));
233 const load_dylinker = [1]macho.dylinker_command{
234 .{
235 .cmd = macho.LC_LOAD_DYLINKER,
236 .cmdsize = cmdsize,
237 .name = @sizeOf(macho.dylinker_command),
238 },
239 };
240 try self.commands.append(self.base.allocator, .{
241 .cmd = macho.LC_LOAD_DYLINKER,
242 .cmdsize = cmdsize,
243 });
244
245 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylinker[0..1]), self.command_file_offset.?);
246
247 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylinker_command);
248 try self.addPadding(cmdsize - @sizeOf(macho.dylinker_command), file_offset);
249
250 try self.base.file.?.pwriteAll(mem.spanZ(DEFAULT_DYLD_PATH), file_offset);
251 self.command_file_offset.? += cmdsize;
252 }
253
254 {
255 // Link against libSystem
256 const cmdsize = commandSize(@intCast(u32, @sizeOf(macho.dylib_command) + mem.lenZ(LIB_SYSTEM_PATH)));
257 // According to Apple's manual, we should obtain current libSystem version using libc call
258 // NSVersionOfRunTimeLibrary.
259 const version = std.c.NSVersionOfRunTimeLibrary(LIB_SYSTEM_NAME);
260 const dylib = .{
261 .name = @sizeOf(macho.dylib_command),
262 .timestamp = 2, // not sure why not simply 0; this is reverse engineered from Mach-O files
263 .current_version = version,
264 .compatibility_version = 0x10000, // not sure why this either; value from reverse engineering
265 };
266 const load_dylib = [1]macho.dylib_command{
267 .{
268 .cmd = macho.LC_LOAD_DYLIB,
269 .cmdsize = cmdsize,
270 .dylib = dylib,
271 },
272 };
273 try self.commands.append(self.base.allocator, .{
274 .cmd = macho.LC_LOAD_DYLIB,
275 .cmdsize = cmdsize,
276 });
277
278 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylib[0..1]), self.command_file_offset.?);
279
280 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylib_command);
281 try self.addPadding(cmdsize - @sizeOf(macho.dylib_command), file_offset);
282
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 }
228 {
229 // Specify path to dynamic linker dyld
230 const cmdsize = commandSize(@sizeOf(macho.dylinker_command) + mem.lenZ(DEFAULT_DYLD_PATH));
231 const load_dylinker = [1]macho.dylinker_command{
232 .{
233 .cmd = macho.LC_LOAD_DYLINKER,
234 .cmdsize = cmdsize,
235 .name = @sizeOf(macho.dylinker_command),
236 },
237 };
238 try self.commands.append(self.base.allocator, .{
239 .cmd = macho.LC_LOAD_DYLINKER,
240 .cmdsize = cmdsize,
241 });
242
243 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylinker[0..1]), self.command_file_offset.?);
244
245 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylinker_command);
246 try self.addPadding(cmdsize - @sizeOf(macho.dylinker_command), file_offset);
247
248 try self.base.file.?.pwriteAll(mem.spanZ(DEFAULT_DYLD_PATH), file_offset);
249 self.command_file_offset.? += cmdsize;
250 }
251
252 {
253 // Link against libSystem
254 const cmdsize = commandSize(@sizeOf(macho.dylib_command) + mem.lenZ(LIB_SYSTEM_PATH));
255 // TODO Find a way to work out runtime version from the OS version triple stored in std.Target.
256 // In the meantime, we're gonna hardcode to the minimum compatibility version of 1.0.0.
257 const min_version = 0x10000;
258 const dylib = .{
259 .name = @sizeOf(macho.dylib_command),
260 .timestamp = 2, // not sure why not simply 0; this is reverse engineered from Mach-O files
261 .current_version = min_version,
262 .compatibility_version = min_version,
263 };
264 const load_dylib = [1]macho.dylib_command{
265 .{
266 .cmd = macho.LC_LOAD_DYLIB,
267 .cmdsize = cmdsize,
268 .dylib = dylib,
269 },
270 };
271 try self.commands.append(self.base.allocator, .{
272 .cmd = macho.LC_LOAD_DYLIB,
273 .cmdsize = cmdsize,
274 });
275
276 try self.base.file.?.pwriteAll(mem.sliceAsBytes(load_dylib[0..1]), self.command_file_offset.?);
277
278 const file_offset = self.command_file_offset.? + @sizeOf(macho.dylib_command);
279 try self.addPadding(cmdsize - @sizeOf(macho.dylib_command), file_offset);
280
281 try self.base.file.?.pwriteAll(mem.spanZ(LIB_SYSTEM_PATH), file_offset);
282 self.command_file_offset.? += cmdsize;
289283 }
290284 },
291285 .Obj => return error.TODOImplementWritingObjFiles,
......@@ -327,20 +321,53 @@ pub fn getDeclVAddr(self: *MachO, decl: *const Module.Decl) u64 {
327321 @panic("TODO implement getDeclVAddr for MachO");
328322}
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
332354fn makeString(comptime bytes: []const u8) [16]u8 {
333 var buf: [16]u8 = undefined;
355 var buf = [_]u8{0} ** 16;
334356 if (bytes.len > buf.len) @compileError("MachO segment/section name too long");
335357 mem.copy(u8, buf[0..], bytes);
336358 return buf;
337359}
338360
339fn commandSize(min_size: u32) u32 {
340 if (min_size % @sizeOf(u64) == 0) return min_size;
361fn alignSize(comptime Int: type, min_size: anytype, alignment: Int) Int {
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);
343 return (div + 1) * @sizeOf(u64);
369fn commandSize(min_size: anytype) u32 {
370 return alignSize(u32, min_size, @sizeOf(u64));
344371}
345372
346373fn addPadding(self: *MachO, size: u32, file_offset: u64) !void {
src-self-hosted/main.zig+1-1
......@@ -911,7 +911,7 @@ pub const info_zen =
911911 \\ * Reduce the amount one must remember.
912912 \\ * Minimize energy spent on coding style.
913913 \\ * Resource deallocation must succeed.
914 \\ * Together we serve end users.
914 \\ * Together we serve the users.
915915 \\
916916 \\
917917;
src-self-hosted/translate_c.zig+6-6
......@@ -168,7 +168,7 @@ const Scope = struct {
168168
169169 fn localContains(scope: *Block, name: []const u8) bool {
170170 for (scope.variables.items) |p| {
171 if (mem.eql(u8, p.name, name))
171 if (mem.eql(u8, p.alias, name))
172172 return true;
173173 }
174174 return false;
......@@ -675,7 +675,7 @@ fn visitFnDecl(c: *Context, fn_decl: *const ZigClangFunctionDecl) Error!void {
675675 }
676676
677677 const body_node = try block_scope.complete(rp.c);
678 proto_node.setTrailer("body_node", body_node);
678 proto_node.setBodyNode(body_node);
679679 return addTopLevelDecl(c, fn_name, &proto_node.base);
680680}
681681
......@@ -4493,7 +4493,7 @@ fn transCreateNodeMacroFn(c: *Context, name: []const u8, ref: *ast.Node, proto_a
44934493 const block_lbrace = try appendToken(c, .LBrace, "{");
44944494
44954495 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
44984498 const call_expr = try c.createCall(unwrap_expr, fn_params.items.len);
44994499 const call_params = call_expr.params();
......@@ -6361,7 +6361,7 @@ fn getContainer(c: *Context, node: *ast.Node) ?*ast.Node {
63616361 const ident = node.castTag(.Identifier).?;
63626362 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {
63636363 if (value.cast(ast.Node.VarDecl)) |var_decl|
6364 return getContainer(c, var_decl.getTrailer("init_node").?);
6364 return getContainer(c, var_decl.getInitNode().?);
63656365 }
63666366 },
63676367
......@@ -6390,7 +6390,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {
63906390 if (ref.castTag(.Identifier)) |ident| {
63916391 if (c.global_scope.sym_table.get(tokenSlice(c, ident.token))) |value| {
63926392 if (value.cast(ast.Node.VarDecl)) |var_decl| {
6393 if (var_decl.getTrailer("type_node")) |ty|
6393 if (var_decl.getTypeNode()) |ty|
63946394 return getContainer(c, ty);
63956395 }
63966396 }
......@@ -6412,7 +6412,7 @@ fn getContainerTypeOf(c: *Context, ref: *ast.Node) ?*ast.Node {
64126412}
64136413
64146414fn 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;
64166416 if (getContainerTypeOf(c, init)) |ty_node| {
64176417 if (ty_node.castTag(.OptionalType)) |prefix| {
64186418 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 {
771771 .array => self.elemType().hasCodeGenBits() and self.arrayLen() != 0,
772772 .array_u8 => self.arrayLen() != 0,
773773 .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,
775 .int_unsigned => self.cast(Payload.IntUnsigned).?.bits == 0,
774 .int_signed => self.cast(Payload.IntSigned).?.bits != 0,
775 .int_unsigned => self.cast(Payload.IntUnsigned).?.bits != 0,
776776
777777 .error_union => {
778778 const payload = self.cast(Payload.ErrorUnion).?;
......@@ -2675,6 +2675,13 @@ pub const Type = extern union {
26752675 };
26762676 }
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
26782685 /// This enum does not directly correspond to `std.builtin.TypeId` because
26792686 /// it has extra enum tags in it, as a way of using less memory. For example,
26802687 /// 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 {
6565
6666 undef,
6767 zero,
68 one,
6869 void_value,
6970 unreachable_value,
7071 empty_array,
......@@ -174,6 +175,7 @@ pub const Value = extern union {
174175 .anyframe_type,
175176 .undef,
176177 .zero,
178 .one,
177179 .void_value,
178180 .unreachable_value,
179181 .empty_array,
......@@ -313,6 +315,7 @@ pub const Value = extern union {
313315 .null_value => return out_stream.writeAll("null"),
314316 .undef => return out_stream.writeAll("undefined"),
315317 .zero => return out_stream.writeAll("0"),
318 .one => return out_stream.writeAll("1"),
316319 .void_value => return out_stream.writeAll("{}"),
317320 .unreachable_value => return out_stream.writeAll("unreachable"),
318321 .bool_true => return out_stream.writeAll("true"),
......@@ -447,6 +450,7 @@ pub const Value = extern union {
447450
448451 .undef,
449452 .zero,
453 .one,
450454 .void_value,
451455 .unreachable_value,
452456 .empty_array,
......@@ -546,7 +550,9 @@ pub const Value = extern union {
546550 .bool_false,
547551 => 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
551557 .int_u64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_u64).?.int).toConst(),
552558 .int_i64 => return BigIntMutable.init(&space.limbs, self.cast(Payload.Int_i64).?.int).toConst(),
......@@ -627,7 +633,9 @@ pub const Value = extern union {
627633 .bool_false,
628634 => return 0,
629635
630 .bool_true => return 1,
636 .one,
637 .bool_true,
638 => return 1,
631639
632640 .int_u64 => return self.cast(Payload.Int_u64).?.int,
633641 .int_i64 => return @intCast(u64, self.cast(Payload.Int_i64).?.int),
......@@ -708,7 +716,9 @@ pub const Value = extern union {
708716 .bool_false,
709717 => return 0,
710718
711 .bool_true => return 1,
719 .one,
720 .bool_true,
721 => return 1,
712722
713723 .int_u64 => return @intCast(i64, self.cast(Payload.Int_u64).?.int),
714724 .int_i64 => return self.cast(Payload.Int_i64).?.int,
......@@ -734,6 +744,7 @@ pub const Value = extern union {
734744 .float_128 => @floatCast(T, self.cast(Payload.Float_128).?.val),
735745
736746 .zero => 0,
747 .one => 1,
737748 .int_u64 => @intToFloat(T, self.cast(Payload.Int_u64).?.int),
738749 .int_i64 => @intToFloat(T, self.cast(Payload.Int_i64).?.int),
739750
......@@ -814,7 +825,9 @@ pub const Value = extern union {
814825 .bool_false,
815826 => return 0,
816827
817 .bool_true => return 1,
828 .one,
829 .bool_true,
830 => return 1,
818831
819832 .int_u64 => {
820833 const x = self.cast(Payload.Int_u64).?.int;
......@@ -900,7 +913,9 @@ pub const Value = extern union {
900913 .bool_false,
901914 => return true,
902915
903 .bool_true => {
916 .one,
917 .bool_true,
918 => {
904919 const info = ty.intInfo(target);
905920 if (info.signed) {
906921 return info.bits >= 2;
......@@ -1064,7 +1079,9 @@ pub const Value = extern union {
10641079 .@"error",
10651080 => unreachable,
10661081
1067 .zero => false,
1082 .zero,
1083 .one,
1084 => false,
10681085
10691086 .float_16 => @rem(self.cast(Payload.Float_16).?.val, 1) != 0,
10701087 .float_32 => @rem(self.cast(Payload.Float_32).?.val, 1) != 0,
......@@ -1140,7 +1157,9 @@ pub const Value = extern union {
11401157 .bool_false,
11411158 => .eq,
11421159
1143 .bool_true => .gt,
1160 .one,
1161 .bool_true,
1162 => .gt,
11441163
11451164 .int_u64 => std.math.order(lhs.cast(Payload.Int_u64).?.int, 0),
11461165 .int_i64 => std.math.order(lhs.cast(Payload.Int_i64).?.int, 0),
......@@ -1257,6 +1276,7 @@ pub const Value = extern union {
12571276 .enum_literal_type,
12581277 .anyframe_type,
12591278 .zero,
1279 .one,
12601280 .bool_true,
12611281 .bool_false,
12621282 .null_value,
......@@ -1339,6 +1359,7 @@ pub const Value = extern union {
13391359 .enum_literal_type,
13401360 .anyframe_type,
13411361 .zero,
1362 .one,
13421363 .bool_true,
13431364 .bool_false,
13441365 .null_value,
......@@ -1438,6 +1459,7 @@ pub const Value = extern union {
14381459 .enum_literal_type,
14391460 .anyframe_type,
14401461 .zero,
1462 .one,
14411463 .empty_array,
14421464 .bool_true,
14431465 .bool_false,
src-self-hosted/zir.zig+19-1
......@@ -137,6 +137,8 @@ pub const Inst = struct {
137137 ensure_result_used,
138138 /// Emits a compile error if an error is ignored.
139139 ensure_result_non_error,
140 /// Emits a compile error if operand cannot be indexed.
141 ensure_indexable,
140142 /// Create a `E!T` type.
141143 error_union_type,
142144 /// Create an error set.
......@@ -251,6 +253,8 @@ pub const Inst = struct {
251253 unwrap_err_safe,
252254 /// Same as previous, but without safety checks. Used for orelse, if and while
253255 unwrap_err_unsafe,
256 /// Gets the error code value of an error union
257 unwrap_err_code,
254258 /// Takes a *E!T and raises a compiler error if T != void
255259 ensure_err_payload_void,
256260 /// Enum literal
......@@ -278,6 +282,7 @@ pub const Inst = struct {
278282 .alloc,
279283 .ensure_result_used,
280284 .ensure_result_non_error,
285 .ensure_indexable,
281286 .bitcast_result_ptr,
282287 .ref,
283288 .bitcast_ref,
......@@ -295,6 +300,7 @@ pub const Inst = struct {
295300 .unwrap_optional_unsafe,
296301 .unwrap_err_safe,
297302 .unwrap_err_unsafe,
303 .unwrap_err_code,
298304 .ensure_err_payload_void,
299305 .anyframe_type,
300306 .bitnot,
......@@ -409,6 +415,7 @@ pub const Inst = struct {
409415 .elemptr,
410416 .ensure_result_used,
411417 .ensure_result_non_error,
418 .ensure_indexable,
412419 .@"export",
413420 .floatcast,
414421 .fieldptr,
......@@ -450,6 +457,7 @@ pub const Inst = struct {
450457 .unwrap_optional_unsafe,
451458 .unwrap_err_safe,
452459 .unwrap_err_unsafe,
460 .unwrap_err_code,
453461 .ptr_type,
454462 .ensure_err_payload_void,
455463 .enum_literal,
......@@ -954,6 +962,7 @@ pub const Module = struct {
954962
955963 pub const MetaData = struct {
956964 deaths: ir.Inst.DeathsInt,
965 addr: usize,
957966 };
958967
959968 pub const BodyMetaData = struct {
......@@ -1152,6 +1161,12 @@ const Writer = struct {
11521161 try self.writeInstToStream(stream, inst);
11531162 if (self.module.metadata.get(inst)) |metadata| {
11541163 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 }
11551170 }
11561171 self.indent -= 2;
11571172 try stream.writeByte('\n');
......@@ -2417,7 +2432,10 @@ const EmitZIR = struct {
24172432
24182433 .varptr => @panic("TODO"),
24192434 };
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 });
24212439 try instructions.append(new_inst);
24222440 try inst_table.put(inst, new_inst);
24232441 }
src-self-hosted/zir_sema.zig+43-21
......@@ -48,6 +48,7 @@ pub fn analyzeInst(mod: *Module, scope: *Scope, old_inst: *zir.Inst) InnerError!
4848 .declval_in_module => return analyzeInstDeclValInModule(mod, scope, old_inst.castTag(.declval_in_module).?),
4949 .ensure_result_used => return analyzeInstEnsureResultUsed(mod, scope, old_inst.castTag(.ensure_result_used).?),
5050 .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).?),
5152 .ref => return analyzeInstRef(mod, scope, old_inst.castTag(.ref).?),
5253 .ret_ptr => return analyzeInstRetPtr(mod, scope, old_inst.castTag(.ret_ptr).?),
5354 .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!
111112 .condbr => return analyzeInstCondBr(mod, scope, old_inst.castTag(.condbr).?),
112113 .isnull => return analyzeInstIsNonNull(mod, scope, old_inst.castTag(.isnull).?, true),
113114 .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).?),
115116 .boolnot => return analyzeInstBoolNot(mod, scope, old_inst.castTag(.boolnot).?),
116117 .typeof => return analyzeInstTypeOf(mod, scope, old_inst.castTag(.typeof).?),
117118 .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!
119120 .unwrap_optional_unsafe => return analyzeInstUnwrapOptional(mod, scope, old_inst.castTag(.unwrap_optional_unsafe).?, false),
120121 .unwrap_err_safe => return analyzeInstUnwrapErr(mod, scope, old_inst.castTag(.unwrap_err_safe).?, true),
121122 .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).?),
122124 .ensure_err_payload_void => return analyzeInstEnsureErrPayloadVoid(mod, scope, old_inst.castTag(.ensure_err_payload_void).?),
123125 .array_type => return analyzeInstArrayType(mod, scope, old_inst.castTag(.array_type).?),
124126 .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.
382384 }
383385}
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
385400fn analyzeInstAlloc(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
386401 const var_type = try resolveType(mod, scope, inst.positionals.operand);
387402 // TODO this should happen only for var allocs
......@@ -786,11 +801,12 @@ fn analyzeInstUnwrapOptional(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp
786801 const operand = try resolveInst(mod, scope, unwrap.positionals.operand);
787802 assert(operand.ty.zigTypeTag() == .Pointer);
788803
789 if (operand.ty.elemType().zigTypeTag() != .Optional) {
790 return mod.fail(scope, unwrap.base.src, "expected optional type, found {}", .{operand.ty.elemType()});
804 const elem_type = operand.ty.elemType();
805 if (elem_type.zigTypeTag() != .Optional) {
806 return mod.fail(scope, unwrap.base.src, "expected optional type, found {}", .{elem_type});
791807 }
792808
793 const child_type = try operand.ty.elemType().optionalChildAlloc(scope.arena());
809 const child_type = try elem_type.optionalChildAlloc(scope.arena());
794810 const child_pointer = try mod.simplePtrType(scope, unwrap.base.src, child_type, operand.ty.isConstPtr(), .One);
795811
796812 if (operand.value()) |val| {
......@@ -815,6 +831,10 @@ fn analyzeInstUnwrapErr(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp, saf
815831 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstUnwrapErr", .{});
816832}
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
818838fn analyzeInstEnsureErrPayloadVoid(mod: *Module, scope: *Scope, unwrap: *zir.Inst.UnOp) InnerError!*Inst {
819839 return mod.fail(scope, unwrap.base.src, "TODO implement analyzeInstEnsureErrPayloadVoid", .{});
820840}
......@@ -950,7 +970,8 @@ fn analyzeInstFieldPtr(mod: *Module, scope: *Scope, fieldptr: *zir.Inst.FieldPtr
950970 const entry = if (val.cast(Value.Payload.ErrorSet)) |payload|
951971 (payload.fields.getEntry(field_name) orelse
952972 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
955976 const error_payload = try scope.arena().create(Value.Payload.Error);
956977 error_payload.* = .{
......@@ -1062,9 +1083,19 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne
10621083 const array_ptr = try resolveInst(mod, scope, inst.positionals.array_ptr);
10631084 const uncasted_index = try resolveInst(mod, scope, inst.positionals.index);
10641085 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) {
1067 if (array_ptr.value()) |array_ptr_val| {
1095 if (elem_ty.isSinglePointer() and elem_ty.elemType().zigTypeTag() == .Array) {
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| {
10681099 if (elem_index.value()) |index_val| {
10691100 // Both array pointer and index are compile-time known.
10701101 const index_u64 = index_val.toUnsignedInt();
......@@ -1075,7 +1106,7 @@ fn analyzeInstElemPtr(mod: *Module, scope: *Scope, inst: *zir.Inst.ElemPtr) Inne
10751106 const type_payload = try scope.arena().create(Type.Payload.PointerSimple);
10761107 type_payload.* = .{
10771108 .base = .{ .tag = .single_const_pointer },
1078 .pointee_type = array_ptr.ty.elemType().elemType(),
1109 .pointee_type = elem_ty.elemType().elemType(),
10791110 };
10801111
10811112 return mod.constInst(scope, inst.base.src, .{
......@@ -1274,17 +1305,7 @@ fn analyzeInstCmp(
12741305 {
12751306 // comparing null with optionals
12761307 const opt_operand = if (lhs_ty_tag == .Optional) lhs else rhs;
1277 if (opt_operand.value()) |opt_val| {
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);
1308 return mod.analyzeIsNull(scope, inst.base.src, opt_operand, op == .neq);
12881309 } else if (is_equality_cmp and
12891310 ((lhs_ty_tag == .Null and rhs.ty.isCPtr()) or (rhs_ty_tag == .Null and lhs.ty.isCPtr())))
12901311 {
......@@ -1332,8 +1353,9 @@ fn analyzeInstIsNonNull(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, inver
13321353 return mod.analyzeIsNull(scope, inst.base.src, operand, invert_logic);
13331354}
13341355
1335fn analyzeInstIsErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp, invert_logic: bool) InnerError!*Inst {
1336 return mod.fail(scope, inst.base.src, "TODO implement analyzeInstIsErr", .{});
1356fn analyzeInstIsErr(mod: *Module, scope: *Scope, inst: *zir.Inst.UnOp) InnerError!*Inst {
1357 const operand = try resolveInst(mod, scope, inst.positionals.operand);
1358 return mod.analyzeIsErr(scope, inst.base.src, operand);
13371359}
13381360
13391361fn analyzeInstCondBr(mod: *Module, scope: *Scope, inst: *zir.Inst.CondBr) InnerError!*Inst {
src/all_types.hpp-6
......@@ -1809,7 +1809,6 @@ enum BuiltinFnId {
18091809 BuiltinFnIdShrExact,
18101810 BuiltinFnIdSetEvalBranchQuota,
18111811 BuiltinFnIdAlignCast,
1812 BuiltinFnIdOpaqueType,
18131812 BuiltinFnIdThis,
18141813 BuiltinFnIdSetAlignStack,
18151814 BuiltinFnIdExport,
......@@ -2734,7 +2733,6 @@ enum IrInstSrcId {
27342733 IrInstSrcIdImplicitCast,
27352734 IrInstSrcIdResolveResult,
27362735 IrInstSrcIdResetResult,
2737 IrInstSrcIdOpaqueType,
27382736 IrInstSrcIdSetAlignStack,
27392737 IrInstSrcIdArgType,
27402738 IrInstSrcIdExport,
......@@ -4234,10 +4232,6 @@ struct IrInstGenAlignCast {
42344232 IrInstGen *target;
42354233};
42364234
4237struct IrInstSrcOpaqueType {
4238 IrInstSrc base;
4239};
4240
42414235struct IrInstSrcSetAlignStack {
42424236 IrInstSrc base;
42434237
src/codegen.cpp-1
......@@ -8700,7 +8700,6 @@ static void define_builtin_fns(CodeGen *g) {
87008700 create_builtin_fn(g, BuiltinFnIdShrExact, "shrExact", 2);
87018701 create_builtin_fn(g, BuiltinFnIdSetEvalBranchQuota, "setEvalBranchQuota", 1);
87028702 create_builtin_fn(g, BuiltinFnIdAlignCast, "alignCast", 2);
8703 create_builtin_fn(g, BuiltinFnIdOpaqueType, "OpaqueType", 0);
87048703 create_builtin_fn(g, BuiltinFnIdSetAlignStack, "setAlignStack", 1);
87058704 create_builtin_fn(g, BuiltinFnIdExport, "export", 2);
87068705 create_builtin_fn(g, BuiltinFnIdErrorReturnTrace, "errorReturnTrace", 0);
src/ir.cpp-29
......@@ -506,8 +506,6 @@ static void destroy_instruction_src(IrInstSrc *inst) {
506506 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResolveResult *>(inst));
507507 case IrInstSrcIdResetResult:
508508 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcResetResult *>(inst));
509 case IrInstSrcIdOpaqueType:
510 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcOpaqueType *>(inst));
511509 case IrInstSrcIdSetAlignStack:
512510 return heap::c_allocator.destroy(reinterpret_cast<IrInstSrcSetAlignStack *>(inst));
513511 case IrInstSrcIdArgType:
......@@ -1533,10 +1531,6 @@ static constexpr IrInstSrcId ir_inst_id(IrInstSrcResetResult *) {
15331531 return IrInstSrcIdResetResult;
15341532}
15351533
1536static constexpr IrInstSrcId ir_inst_id(IrInstSrcOpaqueType *) {
1537 return IrInstSrcIdOpaqueType;
1538}
1539
15401534static constexpr IrInstSrcId ir_inst_id(IrInstSrcSetAlignStack *) {
15411535 return IrInstSrcIdSetAlignStack;
15421536}
......@@ -4536,12 +4530,6 @@ static IrInstSrc *ir_build_reset_result(IrBuilderSrc *irb, Scope *scope, AstNode
45364530 return &instruction->base;
45374531}
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
45454533static IrInstSrc *ir_build_set_align_stack(IrBuilderSrc *irb, Scope *scope, AstNode *source_node,
45464534 IrInstSrc *align_bytes)
45474535{
......@@ -7311,11 +7299,6 @@ static IrInstSrc *ir_gen_builtin_fn_call(IrBuilderSrc *irb, Scope *scope, AstNod
73117299 IrInstSrc *align_cast = ir_build_align_cast_src(irb, scope, node, arg0_value, arg1_value);
73127300 return ir_lval_wrap(irb, scope, align_cast, lval, result_loc);
73137301 }
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 }
73197302 case BuiltinFnIdThis:
73207303 {
73217304 IrInstSrc *this_inst = ir_gen_this(irb, scope, node);
......@@ -30264,15 +30247,6 @@ static IrInstGen *ir_analyze_instruction_align_cast(IrAnalyze *ira, IrInstSrcAli
3026430247 return result;
3026530248}
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
3027630250static IrInstGen *ir_analyze_instruction_set_align_stack(IrAnalyze *ira, IrInstSrcSetAlignStack *instruction) {
3027730251 uint32_t align_bytes;
3027830252 IrInstGen *align_bytes_inst = instruction->align_bytes->child;
......@@ -31737,8 +31711,6 @@ static IrInstGen *ir_analyze_instruction_base(IrAnalyze *ira, IrInstSrc *instruc
3173731711 return ir_analyze_instruction_resolve_result(ira, (IrInstSrcResolveResult *)instruction);
3173831712 case IrInstSrcIdResetResult:
3173931713 return ir_analyze_instruction_reset_result(ira, (IrInstSrcResetResult *)instruction);
31740 case IrInstSrcIdOpaqueType:
31741 return ir_analyze_instruction_opaque_type(ira, (IrInstSrcOpaqueType *)instruction);
3174231714 case IrInstSrcIdSetAlignStack:
3174331715 return ir_analyze_instruction_set_align_stack(ira, (IrInstSrcSetAlignStack *)instruction);
3174431716 case IrInstSrcIdArgType:
......@@ -32182,7 +32154,6 @@ bool ir_inst_src_has_side_effects(IrInstSrc *instruction) {
3218232154 case IrInstSrcIdAlignCast:
3218332155 case IrInstSrcIdImplicitCast:
3218432156 case IrInstSrcIdResolveResult:
32185 case IrInstSrcIdOpaqueType:
3218632157 case IrInstSrcIdArgType:
3218732158 case IrInstSrcIdTagType:
3218832159 case IrInstSrcIdErrorReturnTrace:
src/ir_print.cpp-9
......@@ -306,8 +306,6 @@ const char* ir_inst_src_type_str(IrInstSrcId id) {
306306 return "SrcResolveResult";
307307 case IrInstSrcIdResetResult:
308308 return "SrcResetResult";
309 case IrInstSrcIdOpaqueType:
310 return "SrcOpaqueType";
311309 case IrInstSrcIdSetAlignStack:
312310 return "SrcSetAlignStack";
313311 case IrInstSrcIdArgType:
......@@ -2315,10 +2313,6 @@ static void ir_print_reset_result(IrPrintSrc *irp, IrInstSrcResetResult *instruc
23152313 fprintf(irp->f, ")");
23162314}
23172315
2318static void ir_print_opaque_type(IrPrintSrc *irp, IrInstSrcOpaqueType *instruction) {
2319 fprintf(irp->f, "@OpaqueType()");
2320}
2321
23222316static void ir_print_set_align_stack(IrPrintSrc *irp, IrInstSrcSetAlignStack *instruction) {
23232317 fprintf(irp->f, "@setAlignStack(");
23242318 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
29112905 case IrInstSrcIdResetResult:
29122906 ir_print_reset_result(irp, (IrInstSrcResetResult *)instruction);
29132907 break;
2914 case IrInstSrcIdOpaqueType:
2915 ir_print_opaque_type(irp, (IrInstSrcOpaqueType *)instruction);
2916 break;
29172908 case IrInstSrcIdSetAlignStack:
29182909 ir_print_set_align_stack(irp, (IrInstSrcSetAlignStack *)instruction);
29192910 break;
test/compile_errors.zig+1-1
......@@ -7394,7 +7394,7 @@ pub fn addCases(cases: *tests.CompileErrorContext) void {
73947394 });
73957395
73967396 cases.add("function parameter is opaque",
7397 \\const FooType = @OpaqueType();
7397 \\const FooType = @Type(.Opaque);
73987398 \\export fn entry1() void {
73997399 \\ const someFuncPtr: fn (FooType) void = undefined;
74007400 \\}
test/run_translated_c.zig+17
......@@ -3,6 +3,23 @@ const tests = @import("tests.zig");
33const nl = std.cstr.line_sep;
44
55pub 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
623 cases.add("static variable in block scope",
724 \\#include <stdlib.h>
825 \\int foo() {
test/stage1/behavior/type.zig-1
......@@ -190,7 +190,6 @@ test "Type.ErrorUnion" {
190190}
191191
192192test "Type.Opaque" {
193 testing.expect(@OpaqueType() != @Type(.Opaque));
194193 testing.expect(@Type(.Opaque) != @Type(.Opaque));
195194 testing.expect(@typeInfo(@Type(.Opaque)) == .Opaque);
196195}
test/stage2/test.zig+146
......@@ -694,6 +694,68 @@ pub fn addCases(ctx: *TestContext) !void {
694694 "",
695695 );
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
697759 // Character literals and multiline strings.
698760 case.addCompareOutput(
699761 \\export fn _start() noreturn {
......@@ -758,6 +820,90 @@ pub fn addCases(ctx: *TestContext) !void {
758820 ,
759821 "",
760822 );
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 );
761907 }
762908
763909 {
test/stage2/zir.zig+5-4
......@@ -43,10 +43,11 @@ pub fn addCases(ctx: *TestContext) !void {
4343 \\
4444 \\@entry = fn(@fnty, {
4545 \\ %a = str("\x32\x08\x01\x0a")
46 \\ %eptr0 = elemptr(%a, @0)
47 \\ %eptr1 = elemptr(%a, @1)
48 \\ %eptr2 = elemptr(%a, @2)
49 \\ %eptr3 = elemptr(%a, @3)
46 \\ %a_ref = ref(%a)
47 \\ %eptr0 = elemptr(%a_ref, @0)
48 \\ %eptr1 = elemptr(%a_ref, @1)
49 \\ %eptr2 = elemptr(%a_ref, @2)
50 \\ %eptr3 = elemptr(%a_ref, @3)
5051 \\ %v0 = deref(%eptr0)
5152 \\ %v1 = deref(%eptr1)
5253 \\ %v2 = deref(%eptr2)
tools/process_headers.zig+6-6
......@@ -15,7 +15,7 @@ const Arch = std.Target.Cpu.Arch;
1515const Abi = std.Target.Abi;
1616const OsTag = std.Target.Os.Tag;
1717const assert = std.debug.assert;
18const Sha256 = std.crypto.hash.sha2.Sha256;
18const Blake3 = std.crypto.hash.Blake3;
1919
2020const LibCTarget = struct {
2121 name: []const u8,
......@@ -314,7 +314,7 @@ pub fn main() !void {
314314 var max_bytes_saved: usize = 0;
315315 var total_bytes: usize = 0;
316316
317 var hasher = Sha256.init(.{});
317 var hasher = Blake3.init(.{});
318318
319319 for (libc_targets) |libc_target| {
320320 const dest_target = DestTarget{
......@@ -360,7 +360,7 @@ pub fn main() !void {
360360 const trimmed = std.mem.trim(u8, raw_bytes, " \r\n\t");
361361 total_bytes += raw_bytes.len;
362362 const hash = try allocator.alloc(u8, 32);
363 hasher = Sha256.init(.{});
363 hasher = Blake3.init(.{});
364364 hasher.update(rel_path);
365365 hasher.update(trimmed);
366366 hasher.final(hash);
......@@ -412,12 +412,12 @@ pub fn main() !void {
412412 {
413413 var hash_it = path_kv.value.iterator();
414414 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;
416416 try contents_list.append(contents);
417417 }
418418 }
419419 std.sort.sort(*Contents, contents_list.span(), {}, Contents.hitCountLessThan);
420 var best_contents = contents_list.popOrNull().?;
420 const best_contents = contents_list.popOrNull().?;
421421 if (best_contents.hit_count > 1) {
422422 // worth it to make it generic
423423 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 {
434434 }
435435 var hash_it = path_kv.value.iterator();
436436 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;
438438 if (contents.is_generic) continue;
439439
440440 const dest_target = hash_kv.key;