30445 Commits

Author SHA1 Message Date
Jakub Konka
cfe6ff4301
Merge pull request #20971 from ziglang/elf-ownership-2
elf: move ownership of symbols into owning objects
2024-08-08 00:27:36 +02:00
YANG Xudong
b8705ed652
loongarch: various architecture specific fixes (#20912) 2024-08-07 13:06:29 -07:00
Pat Tullmann
4d6429fc4f POSIX link() syscall only takes two arguments (no flags)
The signature is documented as:

   int link(const char *, const char *);

(see https://man7.org/linux/man-pages/man2/link.2.html or https://man.netbsd.org/link.2)

And its not some Linux extension, the [syscall
implementation](21b136cc63/fs/namei.c (L4794-L4797))
only expects two arguments too.

It probably *should* have a flags parameter, but its too late now.

I am a bit surprised that linking glibc or musl against code that invokes
a 'link' with three parameters doesn't fail (at least, I couldn't get any
local test cases to trigger a compile or link error).

The test case in std/posix/test.zig is currently disabled, but if I
manually enable it, it works with this change.
2024-08-07 13:05:42 -07:00
Jeffrey C. Ollie
979fd12be9 Add getppid to std.c and std.os.linux.
The std lib is missing getppid, this patch adds it.
2024-08-07 13:03:21 -07:00
Andrew Kelley
87e8fc1ade
Merge pull request #20512 from aikawayataro/add-v-linker-arg
zig ld: handle -v linker arg
2024-08-07 13:01:12 -07:00
Andrew Kelley
0e99f517f2
Merge pull request #20958 from ziglang/fuzz
introduce a fuzz testing web interface
2024-08-07 11:55:30 -07:00
Jakub Konka
b058545970 elf: remove stale code 2024-08-07 10:21:03 +02:00
Jakub Konka
90c4037819 elf: fix off-by-one direct access to symbol resolver in ZigObject 2024-08-07 10:21:03 +02:00
Jakub Konka
128289fda1 elf: actually init symbol resolvers array in ZigObject 2024-08-07 10:21:03 +02:00
Jakub Konka
668fd7aca6 elf: handle SHN_UNDEF explicitly in ZigObject.resolveSymbols 2024-08-07 10:21:03 +02:00
Jakub Konka
02f38d7749 codegen: fix Elf symbol refs 2024-08-07 10:21:03 +02:00
Jakub Konka
89db24ec6d elf: fix .eh_frame calc in relocatable mode 2024-08-07 10:21:03 +02:00
Jakub Konka
e99818c602 elf: start-stop resolution has to come after init output sections 2024-08-07 10:21:03 +02:00
Jakub Konka
835f1fc03f elf: fix off-by-one when referring to resolved table directly 2024-08-07 10:21:02 +02:00
Jakub Konka
0a198789f1 elf: scan LinkerDefined obj for symbol indirection too 2024-08-07 10:21:02 +02:00
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
Andrew Kelley
d721d9af69 update coff_dwarf standalone test to new API
and make it still test compilation on non-Windows
2024-08-07 00:48:32 -07:00
Andrew Kelley
2a651eab45 build runner: --fuzz not yet supported on Windows 2024-08-07 00:48:32 -07:00
Andrew Kelley
904fcda736 Compilation: fix -femit-docs 2024-08-07 00:48:32 -07:00
Andrew Kelley
ff503edc04 Compilation: fix not showing sub-errors for autodocs 2024-08-07 00:48:32 -07:00
Andrew Kelley
40edd11516 std.debug: fix compile errors on windows and macos 2024-08-07 00:48:32 -07:00
Andrew Kelley
8dae629c4f update branch for latest std.sort changes 2024-08-07 00:48:32 -07:00
Andrew Kelley
529df8c007 libfuzzer: fix looking at wrong memory for pc counters
this fix bypasses the slice bounds, reading garbage data for up to the
last 7 bits (which are technically supposed to be ignored). that's going
to need to be fixed, let's fix that along with switching from byte elems
to usize elems.
2024-08-07 00:48:32 -07:00
Andrew Kelley
5f5a7b53a4 wasm zig source rendering: fix annotation location off-by-one 2024-08-07 00:48:32 -07:00
Andrew Kelley
1484f174ea fuzzer web ui: fail scrolling into view gracefully 2024-08-07 00:48:32 -07:00
Andrew Kelley
895fa87d77 dump-cov: show seen PCs 2024-08-07 00:48:32 -07:00
Andrew Kelley
bfc2ee03e5 fuzzer web ui: resolve cwd in sources.tar
because the wasm code needs to string match against debug information
2024-08-07 00:48:32 -07:00
Andrew Kelley
38227e9289 fuzzer web UI: render PCs with red or green depending on coverage 2024-08-07 00:48:32 -07:00