Jakub Konka
137d43c0ea
elf: get hello-world glibc working again
2024-08-07 10:21:02 +02:00
Jakub Konka
26da7c8207
elf: fix symbol resolution for Objects
2024-08-07 10:21:02 +02:00
Jakub Konka
04f8f8ad3e
elf: do not re-init Symbol when initializing
2024-08-07 10:21:02 +02:00
Jakub Konka
8ca809d928
elf: move getStartStopBasename into Object
2024-08-07 10:21:02 +02:00
Jakub Konka
41e9b8b6c8
elf: fix compile errors
2024-08-07 10:21:02 +02:00
Jakub Konka
deeaa1bb0c
elf: redo symbol mgmt and ownership in ZigObject
2024-08-07 10:21:02 +02:00
Jakub Konka
de80e4fec2
elf: move symbol ownership to LinkerDefined
2024-08-07 10:21:02 +02:00
Jakub Konka
9fe69cc0b5
elf: move symbol ownership to SharedObject
2024-08-07 10:21:02 +02:00
Jakub Konka
d0367b0219
elf: move symbol ownership to Object
2024-08-07 10:21:02 +02:00
Jakub Konka
9ec415d4de
elf: null symbol is obsolete
2024-08-07 10:21:02 +02:00
Jakub Konka
518c7908f0
elf: always create symbol extra
2024-08-07 10:21:02 +02:00
Alex Rønne Petersen
f9f8942008
std.os.linux: Move clone() here and stop exporting it.
2024-08-07 01:19:51 -07:00
Andrew Kelley
75f78bfb77
Merge pull request #20922 from alexrp/vdso
...
`std.os.linux`: Fix VDSO for mips, add VDSO for riscv
2024-08-07 01:18:35 -07:00
Andrew Kelley
cd5f673cae
Merge pull request #20909 from alexrp/glibc-riscv
...
Support building glibc for riscv32/riscv64
2024-08-07 01:14:54 -07:00
Andrew Kelley
8184912a98
Merge pull request #20925 from alexrp/windows-tls
...
`std`: Some Windows TLS cleanup and fixes
2024-08-07 01:12:11 -07:00
Alex Rønne Petersen
c0681d6b6e
start: Add sparc32 support.
2024-08-07 01:09:18 -07:00
Alex Rønne Petersen
8cbf091a9a
std.os.linux.start_pie: Add sparc/sparc64 support.
2024-08-07 01:09:06 -07:00
Andrew Kelley
b071b10ce8
Merge pull request #20894 from alexrp/target-cleanup-4
...
`std.Target`: Minor rework to some `isArch()` functions, fix some related issues throughout `std`
2024-08-07 01:08:44 -07:00
Alex Rønne Petersen
8268d7be52
process_headers: Add arc-linux-gnu.
2024-08-07 01:07:09 -07:00
Jakub Dóka
a6486492be
std.crypto.ecdsa: use separate function for null seed ( #20953 )
...
Due to the `std.crypto.ecdsa.KeyPair.create` taking and optional of seed, even if the seed is generated, cross-compiling to the environments without standard random source (eg. wasm) (`std.crypto.random.bytes`) will fail to compile.
This commit changes the API of the problematic function and moves the random seed generation to a new utility function.
2024-08-07 01:06:15 -07:00
Alex Rønne Petersen
ebd0c6ffd0
std.zig.target: Add arc-linux-gnu.
...
https://lists.gnu.org/archive/html/info-gnu/2020-08/msg00002.html
2024-08-07 01:03:22 -07:00
Ryan Liptak
304519da27
Make Type.intAbiAlignment match LLVM alignment for x86-windows target
...
During the LLVM 18 upgrade, two changes were made that changed `@alignOf(u64)` to 4 for the x86-windows target:
- `Type.maxIntAlignment` was made to return 16 for x86 (200e06b). Before that commit, `maxIntAlignment` was 8 for windows/uefi and 4 for everything else
- `Type.intAbiAlignment` was made to return 4 for 33...64 (7e1cba7 + e89d6fc). Before those commits, `intAbiAlignment` would return 8, since the maxIntAlignment for x86-windows was 8 (and for other targets, the `maxIntAlignment` of 4 would clamp the `intAbiAlignment` to 4)
`src/codegen/llvm.zig` has its own alignment calculations that no longer match the values returned from the `Type` functions. For the x86-windows target, this loop:
ddcb7b1c11/src/codegen/llvm.zig (L558-L567)
when the `size` is 64 will set `abi` and `pref` to 64 (meaning an align of 8 bytes), which doesn't match the `Type` alignment of 4.
This commit makes `Type.intAbiAlignment` match the alignment calculated in `codegen/llvm.zig`.
Fixes #20047
Fixes #20466
Fixes #20469
2024-08-07 00:59:46 -07:00
Alex Rønne Petersen
00097c3bb8
std.Target: Some corrections and additions to charSignedness().
...
Sourced from GCC backends and some manual testing with clang.
2024-08-07 00:56:02 -07:00
Kyle Schwarz
a60810b5a3
cmake: add ZIG_EXTRA_BUILD_ARGS option
2024-08-06 19:28:48 -07:00
Alex Rønne Petersen
e9b5377b8e
musl: Disable warnings in all compilations.
...
This is what upstream's configure does.
Previously, we only disabled warnings in some musl compilations, with `rcrt1.o`
notably being one for which we didn't. This resulted in a warning in `dlstart.c`
which is included in `rcrt1.c`. So let's just be consistent and disable warnings
for all musl code.
Closes #13385 .
2024-08-06 15:00:47 -07:00
Andrew Kelley
c8a226a429
Merge pull request #20960 from alexrp/size-align-fixes
...
`std.Target`: A bunch of C type size/alignment fixes
2024-08-06 14:55:15 -07:00
Andrew Kelley
de1fb19909
Merge pull request #20951 from ehaas/c-size-and-align-check
...
tools: Add tool for checking size and alignment of C types
2024-08-06 13:06:28 -07:00
Alex Rønne Petersen
ef502daafe
std.Target: Handle mesa3d in c_type_bit_size().
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
23b5a6c71e
std.Target: Treat spirv as identical to spirv64 for ABI size/alignment purposes.
...
This is arbitrary since spirv (as opposed to spirv32/spirv64) refers to the
version with logical memory layout, i.e. no 'real' pointers. This change at
least matches what clang does.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
231f322a65
std.Target: Fix C long double size for ve (16, not 8).
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
7b47ebe576
std.Target: Fix C long double size for sparc32 (8, not 16).
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
eef499812c
std.Target: Fix C long double size for amdhsa, amdpal, and mesa3d (8, not 16).
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
a1d3e56763
std.Target: Fix C long double size for opencl (8, not 16).
...
This value was correct for the old SPIR, but not for SPIR-V.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
606d011acf
std.Target: Fix C long long size for opencl (8, not 16).
...
This value was correct for the old SPIR, but not for SPIR-V.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
5dd66cd964
std.Target: Fix C type alignment calculation for ve.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
e678862520
std.Target: Fix C type alignment calculation for sparc64.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
98153c8d81
std.Target: Fix C type alignment calculation for loongarch64.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
29321ca4a2
std.Target: Fix C type alignment calculation for spirv32.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
e67388c2e5
std.Target: Fix C type alignment calculation for dxil.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
db8f00e277
std.Target: Fix ptrBitWidth_cpu_abi() for sparc32.
...
CPU feature set has nothing to do with ABI choice; the pointer bit width is
determined only by looking at the choice of sparc vs sparc64.
2024-08-06 20:17:03 +02:00
Alex Rønne Petersen
ab154be7f0
std.Target: Fix ptrBitWidth_cpu_abi() for dxil (64-bit, not 32-bit).
...
The DXIL documentation claims 32-bit pointers:
https://github.com/microsoft/DirectXShaderCompiler/blob/main/docs/DXIL.rst#memory-accesses
Despite this, Clang considers pointers 64-bit when targeting it.
2024-08-06 20:17:03 +02:00
Evan Haas
679ad36fa0
generate_c_size_and_align_checks: add __alignof check
2024-08-06 07:06:57 -07:00
Evan Haas
b2dd0a669a
generate_c_size_and_align_checks: print failed condition in _Static_assert
2024-08-06 07:03:00 -07:00
Evan Haas
8daf7673a5
test: Add generate_c_size_and_align_checks.zig to standalone build test
2024-08-05 13:15:05 -07:00
Andrew Kelley
ddcb7b1c11
Merge pull request #20949 from ziglang/update-glibc-abilists
...
glibc: update abilists file
2024-08-05 13:10:55 -07:00
Evan Haas
4bdf04654e
tools: Add tool for checking size and alignment of C types
...
Prints _Static_asserts for the size and alignment of all the basic built-in C
types. The output can be run through a compiler for the specified target to
verify that Zig's values are the same as those used by a C compiler for the
target.
2024-08-05 12:56:40 -07:00
ippsav
724804a4e0
Rewrite generate_linux_syscalls.zig ( #20895 )
...
refactors the syscall generation tool aiming to reduce code duplication for both the table based arches and the ones generated using a preprocessor.
2024-08-05 10:43:47 -07:00
Andrew Kelley
d6945eeba9
Revert "glibc: Add a temporary hack in abilists loading due to sparcel removal."
...
This reverts commit 62a01851d9c433ea3f2e98cc986e75d32aece443.
No longer needed with the abilists update.
2024-08-05 09:53:37 -07:00
Andrew Kelley
1b88c6a8a2
glibc: update abilists file
...
updated for glibc 2.40, and adds arc, csky, and m68k
2024-08-05 09:53:37 -07:00
Andrew Kelley
fab5df4028
Merge pull request #20934 from alexrp/sparc32-leon3
...
`std.Target`: Bump baseline CPU for sparc32 to v9; add `sparcv9-linux-gnu` to `process_headers.zig`
2024-08-05 09:52:52 -07:00