@zigc/lib 0.17.0-dev.215 → 0.17.0-dev.228

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/c/math.zig +31 -2
  2. package/compiler/resinator/compile.zig +1 -1
  3. package/compiler_rt/cos.zig +1 -1
  4. package/compiler_rt/rem_pio2l.zig +1 -1
  5. package/compiler_rt/sin.zig +1 -1
  6. package/compiler_rt/sincos.zig +1 -1
  7. package/compiler_rt/tan.zig +1 -1
  8. package/libcxx/libc/hdr/errno_macros.h +3 -1
  9. package/libcxx/libc/hdr/stdint_proxy.h +18 -0
  10. package/libcxx/libc/hdr/types/wchar_t.h +23 -0
  11. package/libcxx/libc/hdr/wchar_overlay.h +69 -0
  12. package/libcxx/libc/include/llvm-libc-macros/cfloat128-macros.h +41 -0
  13. package/libcxx/libc/include/llvm-libc-macros/cfloat16-macros.h +20 -0
  14. package/libcxx/libc/include/llvm-libc-macros/wchar-macros.h +18 -0
  15. package/libcxx/libc/include/llvm-libc-types/cfloat128.h +11 -28
  16. package/libcxx/libc/include/llvm-libc-types/cfloat16.h +4 -7
  17. package/libcxx/libc/include/llvm-libc-types/wint_t.h +14 -0
  18. package/libcxx/libc/shared/libc_common.h +5 -0
  19. package/libcxx/libc/src/__support/CPP/bit.h +50 -12
  20. package/libcxx/libc/src/__support/CPP/type_traits/is_complex.h +7 -0
  21. package/libcxx/libc/src/__support/CPP/type_traits/is_destructible.h +2 -1
  22. package/libcxx/libc/src/__support/CPP/type_traits/is_unsigned.h +6 -0
  23. package/libcxx/libc/src/__support/CPP/utility/integer_sequence.h +10 -0
  24. package/libcxx/libc/src/__support/FPUtil/FPBits.h +6 -7
  25. package/libcxx/libc/src/__support/FPUtil/rounding_mode.h +50 -4
  26. package/libcxx/libc/src/__support/big_int.h +14 -14
  27. package/libcxx/libc/src/__support/common.h +3 -2
  28. package/libcxx/libc/src/__support/ctype_utils.h +19 -12
  29. package/libcxx/libc/src/__support/detailed_powers_of_ten.h +1 -2
  30. package/libcxx/libc/src/__support/high_precision_decimal.h +33 -14
  31. package/libcxx/libc/src/__support/libc_assert.h +2 -0
  32. package/libcxx/libc/src/__support/macros/attributes.h +44 -1
  33. package/libcxx/libc/src/__support/macros/config.h +23 -0
  34. package/libcxx/libc/src/__support/macros/null_check.h +1 -2
  35. package/libcxx/libc/src/__support/macros/optimization.h +3 -0
  36. package/libcxx/libc/src/__support/macros/properties/architectures.h +5 -1
  37. package/libcxx/libc/src/__support/macros/properties/compiler.h +8 -3
  38. package/libcxx/libc/src/__support/macros/properties/cpu_features.h +17 -1
  39. package/libcxx/libc/src/__support/macros/properties/types.h +2 -3
  40. package/libcxx/libc/src/__support/macros/sanitizer.h +0 -10
  41. package/libcxx/libc/src/__support/math_extras.h +20 -4
  42. package/libcxx/libc/src/__support/str_to_float.h +98 -125
  43. package/libcxx/libc/src/__support/str_to_integer.h +39 -27
  44. package/libcxx/libc/src/__support/wctype_utils.h +588 -0
  45. package/libunwind/src/AddressSpace.hpp +2 -1
  46. package/libunwind/src/DwarfParser.hpp +2 -1
  47. package/package.json +1 -1
  48. package/std/Build/Step/ConfigHeader.zig +1 -1
  49. package/std/Io/Kqueue.zig +1 -1
  50. package/std/Target.zig +5 -6
  51. package/std/bit_set.zig +76 -59
  52. package/std/c.zig +2 -2
  53. package/std/crypto/codecs/base64_hex_ct.zig +1 -1
  54. package/std/crypto/ml_kem.zig +0 -15
  55. package/std/enums.zig +2 -2
  56. package/std/fs/path.zig +1 -1
  57. package/std/math/float.zig +62 -0
  58. package/std/math/modf.zig +1 -1
  59. package/std/math.zig +1 -0
  60. package/std/std.zig +3 -0
  61. package/std/testing.zig +1 -1
  62. package/std/zig/target.zig +1 -2
  63. package/std/zon/parse.zig +1 -1
  64. package/compiler_rt/long_double.zig +0 -37
  65. package/libc/mingw/math/lrintl.c +0 -18
  66. package/libc/mingw/math/rintl.c +0 -16
  67. package/libc/musl/src/math/i386/lrintl.c +0 -8
  68. package/libc/musl/src/math/i386/rintl.c +0 -7
  69. package/libc/musl/src/math/lrintl.c +0 -36
  70. package/libc/musl/src/math/rintl.c +0 -29
  71. package/libc/musl/src/math/s390x/rintl.c +0 -15
  72. package/libc/musl/src/math/x32/lrintl.s +0 -7
  73. package/libc/musl/src/math/x32/rintl.s +0 -6
  74. package/libc/musl/src/math/x86_64/lrintl.c +0 -8
  75. package/libc/musl/src/math/x86_64/rintl.c +0 -7
@@ -0,0 +1,588 @@
1
+ //===-- Collection of utils for implementing wide char functions --*-C++-*-===//
2
+ //
3
+ // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
+ // See https://llvm.org/LICENSE.txt for license information.
5
+ // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
+ //
7
+ //===----------------------------------------------------------------------===//
8
+
9
+ #ifndef LLVM_LIBC_SRC___SUPPORT_WCTYPE_UTILS_H
10
+ #define LLVM_LIBC_SRC___SUPPORT_WCTYPE_UTILS_H
11
+
12
+ #include "hdr/types/wchar_t.h"
13
+ #include "src/__support/macros/attributes.h" // LIBC_INLINE
14
+ #include "src/__support/macros/config.h"
15
+
16
+ namespace LIBC_NAMESPACE_DECL {
17
+ namespace internal {
18
+
19
+ // -----------------------------------------------------------------------------
20
+ // ****************** WARNING ******************
21
+ // ****************** DO NOT TRY TO OPTIMIZE THESE FUNCTIONS! ******************
22
+ // -----------------------------------------------------------------------------
23
+ // This switch/case form is easier for the compiler to understand, and is
24
+ // optimized into a form that is almost always the same as or better than
25
+ // versions written by hand (see https://godbolt.org/z/qvrebqvvr). Also this
26
+ // form makes these functions encoding independent. If you want to rewrite these
27
+ // functions, make sure you have benchmarks to show your new solution is faster,
28
+ // as well as a way to support non-ASCII character encodings.
29
+
30
+ // Similarly, do not change these fumarks to show your new solution is faster,
31
+ // as well as a way to support non-Anctions to use case ranges. e.g.
32
+ // bool islower(wchar_t ch) {
33
+ // switch(ch) {
34
+ // case L'a'...L'z':
35
+ // return true;
36
+ // }
37
+ // }
38
+ // This assumes the character ranges are contiguous, which they aren't in
39
+ // EBCDIC. Technically we could use some smaller ranges, but that's even harder
40
+ // to read.
41
+
42
+ LIBC_INLINE static constexpr bool islower(wchar_t wch) {
43
+ switch (wch) {
44
+ case L'a':
45
+ case L'b':
46
+ case L'c':
47
+ case L'd':
48
+ case L'e':
49
+ case L'f':
50
+ case L'g':
51
+ case L'h':
52
+ case L'i':
53
+ case L'j':
54
+ case L'k':
55
+ case L'l':
56
+ case L'm':
57
+ case L'n':
58
+ case L'o':
59
+ case L'p':
60
+ case L'q':
61
+ case L'r':
62
+ case L's':
63
+ case L't':
64
+ case L'u':
65
+ case L'v':
66
+ case L'w':
67
+ case L'x':
68
+ case L'y':
69
+ case L'z':
70
+ return true;
71
+ default:
72
+ return false;
73
+ }
74
+ }
75
+
76
+ LIBC_INLINE static constexpr bool isupper(wchar_t wch) {
77
+ switch (wch) {
78
+ case L'A':
79
+ case L'B':
80
+ case L'C':
81
+ case L'D':
82
+ case L'E':
83
+ case L'F':
84
+ case L'G':
85
+ case L'H':
86
+ case L'I':
87
+ case L'J':
88
+ case L'K':
89
+ case L'L':
90
+ case L'M':
91
+ case L'N':
92
+ case L'O':
93
+ case L'P':
94
+ case L'Q':
95
+ case L'R':
96
+ case L'S':
97
+ case L'T':
98
+ case L'U':
99
+ case L'V':
100
+ case L'W':
101
+ case L'X':
102
+ case L'Y':
103
+ case L'Z':
104
+ return true;
105
+ default:
106
+ return false;
107
+ }
108
+ }
109
+
110
+ LIBC_INLINE static constexpr bool isdigit(wchar_t wch) {
111
+ switch (wch) {
112
+ case L'0':
113
+ case L'1':
114
+ case L'2':
115
+ case L'3':
116
+ case L'4':
117
+ case L'5':
118
+ case L'6':
119
+ case L'7':
120
+ case L'8':
121
+ case L'9':
122
+ return true;
123
+ default:
124
+ return false;
125
+ }
126
+ }
127
+
128
+ LIBC_INLINE static constexpr wchar_t tolower(wchar_t wch) {
129
+ switch (wch) {
130
+ case L'A':
131
+ return L'a';
132
+ case L'B':
133
+ return L'b';
134
+ case L'C':
135
+ return L'c';
136
+ case L'D':
137
+ return L'd';
138
+ case L'E':
139
+ return L'e';
140
+ case L'F':
141
+ return L'f';
142
+ case L'G':
143
+ return L'g';
144
+ case L'H':
145
+ return L'h';
146
+ case L'I':
147
+ return L'i';
148
+ case L'J':
149
+ return L'j';
150
+ case L'K':
151
+ return L'k';
152
+ case L'L':
153
+ return L'l';
154
+ case L'M':
155
+ return L'm';
156
+ case L'N':
157
+ return L'n';
158
+ case L'O':
159
+ return L'o';
160
+ case L'P':
161
+ return L'p';
162
+ case L'Q':
163
+ return L'q';
164
+ case L'R':
165
+ return L'r';
166
+ case L'S':
167
+ return L's';
168
+ case L'T':
169
+ return L't';
170
+ case L'U':
171
+ return L'u';
172
+ case L'V':
173
+ return L'v';
174
+ case L'W':
175
+ return L'w';
176
+ case L'X':
177
+ return L'x';
178
+ case L'Y':
179
+ return L'y';
180
+ case L'Z':
181
+ return L'z';
182
+ default:
183
+ return wch;
184
+ }
185
+ }
186
+
187
+ LIBC_INLINE static constexpr wchar_t toupper(wchar_t wch) {
188
+ switch (wch) {
189
+ case L'a':
190
+ return L'A';
191
+ case L'b':
192
+ return L'B';
193
+ case L'c':
194
+ return L'C';
195
+ case L'd':
196
+ return L'D';
197
+ case L'e':
198
+ return L'E';
199
+ case L'f':
200
+ return L'F';
201
+ case L'g':
202
+ return L'G';
203
+ case L'h':
204
+ return L'H';
205
+ case L'i':
206
+ return L'I';
207
+ case L'j':
208
+ return L'J';
209
+ case L'k':
210
+ return L'K';
211
+ case L'l':
212
+ return L'L';
213
+ case L'm':
214
+ return L'M';
215
+ case L'n':
216
+ return L'N';
217
+ case L'o':
218
+ return L'O';
219
+ case L'p':
220
+ return L'P';
221
+ case L'q':
222
+ return L'Q';
223
+ case L'r':
224
+ return L'R';
225
+ case L's':
226
+ return L'S';
227
+ case L't':
228
+ return L'T';
229
+ case L'u':
230
+ return L'U';
231
+ case L'v':
232
+ return L'V';
233
+ case L'w':
234
+ return L'W';
235
+ case L'x':
236
+ return L'X';
237
+ case L'y':
238
+ return L'Y';
239
+ case L'z':
240
+ return L'Z';
241
+ default:
242
+ return wch;
243
+ }
244
+ }
245
+
246
+ LIBC_INLINE static constexpr bool isalpha(wchar_t wch) {
247
+ switch (wch) {
248
+ case L'a':
249
+ case L'b':
250
+ case L'c':
251
+ case L'd':
252
+ case L'e':
253
+ case L'f':
254
+ case L'g':
255
+ case L'h':
256
+ case L'i':
257
+ case L'j':
258
+ case L'k':
259
+ case L'l':
260
+ case L'm':
261
+ case L'n':
262
+ case L'o':
263
+ case L'p':
264
+ case L'q':
265
+ case L'r':
266
+ case L's':
267
+ case L't':
268
+ case L'u':
269
+ case L'v':
270
+ case L'w':
271
+ case L'x':
272
+ case L'y':
273
+ case L'z':
274
+ case L'A':
275
+ case L'B':
276
+ case L'C':
277
+ case L'D':
278
+ case L'E':
279
+ case L'F':
280
+ case L'G':
281
+ case L'H':
282
+ case L'I':
283
+ case L'J':
284
+ case L'K':
285
+ case L'L':
286
+ case L'M':
287
+ case L'N':
288
+ case L'O':
289
+ case L'P':
290
+ case L'Q':
291
+ case L'R':
292
+ case L'S':
293
+ case L'T':
294
+ case L'U':
295
+ case L'V':
296
+ case L'W':
297
+ case L'X':
298
+ case L'Y':
299
+ case L'Z':
300
+ return true;
301
+ default:
302
+ return false;
303
+ }
304
+ }
305
+
306
+ LIBC_INLINE static constexpr bool isalnum(wchar_t wch) {
307
+ switch (wch) {
308
+ case L'a':
309
+ case L'b':
310
+ case L'c':
311
+ case L'd':
312
+ case L'e':
313
+ case L'f':
314
+ case L'g':
315
+ case L'h':
316
+ case L'i':
317
+ case L'j':
318
+ case L'k':
319
+ case L'l':
320
+ case L'm':
321
+ case L'n':
322
+ case L'o':
323
+ case L'p':
324
+ case L'q':
325
+ case L'r':
326
+ case L's':
327
+ case L't':
328
+ case L'u':
329
+ case L'v':
330
+ case L'w':
331
+ case L'x':
332
+ case L'y':
333
+ case L'z':
334
+ case L'A':
335
+ case L'B':
336
+ case L'C':
337
+ case L'D':
338
+ case L'E':
339
+ case L'F':
340
+ case L'G':
341
+ case L'H':
342
+ case L'I':
343
+ case L'J':
344
+ case L'K':
345
+ case L'L':
346
+ case L'M':
347
+ case L'N':
348
+ case L'O':
349
+ case L'P':
350
+ case L'Q':
351
+ case L'R':
352
+ case L'S':
353
+ case L'T':
354
+ case L'U':
355
+ case L'V':
356
+ case L'W':
357
+ case L'X':
358
+ case L'Y':
359
+ case L'Z':
360
+ case L'0':
361
+ case L'1':
362
+ case L'2':
363
+ case L'3':
364
+ case L'4':
365
+ case L'5':
366
+ case L'6':
367
+ case L'7':
368
+ case L'8':
369
+ case L'9':
370
+ return true;
371
+ default:
372
+ return false;
373
+ }
374
+ }
375
+
376
+ LIBC_INLINE static constexpr int b36_char_to_int(wchar_t wch) {
377
+ switch (wch) {
378
+ case L'0':
379
+ return 0;
380
+ case L'1':
381
+ return 1;
382
+ case L'2':
383
+ return 2;
384
+ case L'3':
385
+ return 3;
386
+ case L'4':
387
+ return 4;
388
+ case L'5':
389
+ return 5;
390
+ case L'6':
391
+ return 6;
392
+ case L'7':
393
+ return 7;
394
+ case L'8':
395
+ return 8;
396
+ case L'9':
397
+ return 9;
398
+ case L'a':
399
+ case L'A':
400
+ return 10;
401
+ case L'b':
402
+ case L'B':
403
+ return 11;
404
+ case L'c':
405
+ case L'C':
406
+ return 12;
407
+ case L'd':
408
+ case L'D':
409
+ return 13;
410
+ case L'e':
411
+ case L'E':
412
+ return 14;
413
+ case L'f':
414
+ case L'F':
415
+ return 15;
416
+ case L'g':
417
+ case L'G':
418
+ return 16;
419
+ case L'h':
420
+ case L'H':
421
+ return 17;
422
+ case L'i':
423
+ case L'I':
424
+ return 18;
425
+ case L'j':
426
+ case L'J':
427
+ return 19;
428
+ case L'k':
429
+ case L'K':
430
+ return 20;
431
+ case L'l':
432
+ case L'L':
433
+ return 21;
434
+ case L'm':
435
+ case L'M':
436
+ return 22;
437
+ case L'n':
438
+ case L'N':
439
+ return 23;
440
+ case L'o':
441
+ case L'O':
442
+ return 24;
443
+ case L'p':
444
+ case L'P':
445
+ return 25;
446
+ case L'q':
447
+ case L'Q':
448
+ return 26;
449
+ case L'r':
450
+ case L'R':
451
+ return 27;
452
+ case L's':
453
+ case L'S':
454
+ return 28;
455
+ case L't':
456
+ case L'T':
457
+ return 29;
458
+ case L'u':
459
+ case L'U':
460
+ return 30;
461
+ case L'v':
462
+ case L'V':
463
+ return 31;
464
+ case L'w':
465
+ case L'W':
466
+ return 32;
467
+ case L'x':
468
+ case L'X':
469
+ return 33;
470
+ case L'y':
471
+ case L'Y':
472
+ return 34;
473
+ case L'z':
474
+ case L'Z':
475
+ return 35;
476
+ default:
477
+ return 0;
478
+ }
479
+ }
480
+
481
+ LIBC_INLINE static constexpr wchar_t int_to_b36_wchar(int num) {
482
+ // Can't actually use LIBC_ASSERT here because it depends on integer_to_string
483
+ // which depends on this.
484
+
485
+ // LIBC_ASSERT(num < 36);
486
+ switch (num) {
487
+ case 0:
488
+ return L'0';
489
+ case 1:
490
+ return L'1';
491
+ case 2:
492
+ return L'2';
493
+ case 3:
494
+ return L'3';
495
+ case 4:
496
+ return L'4';
497
+ case 5:
498
+ return L'5';
499
+ case 6:
500
+ return L'6';
501
+ case 7:
502
+ return L'7';
503
+ case 8:
504
+ return L'8';
505
+ case 9:
506
+ return L'9';
507
+ case 10:
508
+ return L'a';
509
+ case 11:
510
+ return L'b';
511
+ case 12:
512
+ return L'c';
513
+ case 13:
514
+ return L'd';
515
+ case 14:
516
+ return L'e';
517
+ case 15:
518
+ return L'f';
519
+ case 16:
520
+ return L'g';
521
+ case 17:
522
+ return L'h';
523
+ case 18:
524
+ return L'i';
525
+ case 19:
526
+ return L'j';
527
+ case 20:
528
+ return L'k';
529
+ case 21:
530
+ return L'l';
531
+ case 22:
532
+ return L'm';
533
+ case 23:
534
+ return L'n';
535
+ case 24:
536
+ return L'o';
537
+ case 25:
538
+ return L'p';
539
+ case 26:
540
+ return L'q';
541
+ case 27:
542
+ return L'r';
543
+ case 28:
544
+ return L's';
545
+ case 29:
546
+ return L't';
547
+ case 30:
548
+ return L'u';
549
+ case 31:
550
+ return L'v';
551
+ case 32:
552
+ return L'w';
553
+ case 33:
554
+ return L'x';
555
+ case 34:
556
+ return L'y';
557
+ case 35:
558
+ return L'z';
559
+ default:
560
+ return L'!';
561
+ }
562
+ }
563
+
564
+ LIBC_INLINE static constexpr bool isspace(wchar_t wch) {
565
+ switch (wch) {
566
+ case L' ':
567
+ case L'\t':
568
+ case L'\n':
569
+ case L'\v':
570
+ case L'\f':
571
+ case L'\r':
572
+ return true;
573
+ default:
574
+ return false;
575
+ }
576
+ }
577
+
578
+ // An overload which provides a way to compare input with specific character
579
+ // values, when input can be of a regular or a wide character type.
580
+ LIBC_INLINE static constexpr bool
581
+ is_char_or_wchar(wchar_t ch, [[maybe_unused]] char, wchar_t wc_value) {
582
+ return (ch == wc_value);
583
+ }
584
+
585
+ } // namespace internal
586
+ } // namespace LIBC_NAMESPACE_DECL
587
+
588
+ #endif // LLVM_LIBC_SRC___SUPPORT_WCTYPE_UTILS_H
@@ -666,7 +666,8 @@ inline bool LocalAddressSpace::findUnwindSections(
666
666
  return true;
667
667
  }
668
668
  #endif
669
- dl_iterate_cb_data cb_data = {this, &info, targetAddr};
669
+ // zig patch: https://github.com/llvm/llvm-project/issues/194228
670
+ dl_iterate_cb_data cb_data = {this, &info, static_cast<pint_t>(targetAddr)};
670
671
  int found = dl_iterate_phdr(findUnwindSectionsByPhdr, &cb_data);
671
672
  return static_cast<bool>(found);
672
673
  #endif
@@ -473,11 +473,12 @@ bool CFI_Parser<A>::parseFDEInstructions(
473
473
  pint_t pcoffset;
474
474
  };
475
475
 
476
+ // zig patch: https://github.com/llvm/llvm-project/issues/194228
476
477
  ParseInfo parseInfoArray[] = {
477
478
  {cieInfo.cieInstructions, cieInfo.cieStart + cieInfo.cieLength,
478
479
  (pint_t)(-1)},
479
480
  {fdeInfo.fdeInstructions, fdeInfo.fdeStart + fdeInfo.fdeLength,
480
- upToPC - fdeInfo.pcStart}};
481
+ static_cast<pint_t>(upToPC) - fdeInfo.pcStart}};
481
482
 
482
483
  for (const auto &info : parseInfoArray) {
483
484
  pint_t p = info.instructions;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zigc/lib",
3
- "version": "0.17.0-dev.215",
3
+ "version": "0.17.0-dev.228",
4
4
  "description": "Zig standard library and libc headers (shared across all platforms)",
5
5
  "repository": {
6
6
  "type": "git",
@@ -290,7 +290,7 @@ fn render_autoconf_undef(
290
290
  const build = step.owner;
291
291
  const allocator = build.allocator;
292
292
 
293
- var is_used: std.DynamicBitSetUnmanaged = try .initEmpty(allocator, values.count());
293
+ var is_used: std.bit_set.Dynamic = try .initEmpty(allocator, values.count());
294
294
  defer is_used.deinit(allocator);
295
295
 
296
296
  var any_errors = false;
package/std/Io/Kqueue.zig CHANGED
@@ -79,7 +79,7 @@ const Fiber = struct {
79
79
  awaiter: ?*Fiber,
80
80
  queue_next: ?*Fiber,
81
81
  cancel_thread: ?*Thread,
82
- awaiting_completions: std.StaticBitSet(3),
82
+ awaiting_completions: std.bit_set.Static(3),
83
83
 
84
84
  const finished: ?*Fiber = @ptrFromInt(@alignOf(Thread));
85
85
 
package/std/Target.zig CHANGED
@@ -2682,9 +2682,8 @@ pub const DynamicLinker = struct {
2682
2682
  else => none,
2683
2683
  },
2684
2684
 
2685
- .powerpc64,
2686
- .powerpc64le,
2687
- => if (abi == .gnu) init("/lib64/ld64.so.2") else none,
2685
+ .powerpc64 => if (abi == .gnu) init("/lib64/ld64.so.1") else none,
2686
+ .powerpc64le => if (abi == .gnu) init("/lib64/ld64.so.2") else none,
2688
2687
 
2689
2688
  .riscv32,
2690
2689
  .riscv64,
@@ -3741,10 +3740,10 @@ pub fn cCallingConvention(target: *const Target) ?std.builtin.CallingConvention
3741
3740
  .riscv32, .riscv32be => .{ .riscv32_ilp32 = .{} },
3742
3741
  .sparc64 => .{ .sparc64_sysv = .{} },
3743
3742
  .sparc => .{ .sparc_sysv = .{} },
3744
- .powerpc64 => if (target.abi.isMusl())
3745
- .{ .powerpc64_elf_v2 = .{} }
3743
+ .powerpc64 => if (target.abi.isGnu())
3744
+ .{ .powerpc64_elf = .{} }
3746
3745
  else
3747
- .{ .powerpc64_elf = .{} },
3746
+ .{ .powerpc64_elf_v2 = .{} },
3748
3747
  .powerpc64le => .{ .powerpc64_elf_v2 = .{} },
3749
3748
  .powerpc, .powerpcle => .{ .powerpc_sysv = .{} },
3750
3749
  .wasm32, .wasm64 => .{ .wasm_mvp = .{} },