mirror of
https://github.com/ziglang/zig.git
synced 2026-02-13 04:48:20 +00:00
The buffer index was declared as `u64`, which overflows `usize` on a
32-bit target.
The following example program failed to compile for 32-bit targets:
```zig
const std = @import("std");
pub fn main() !void {
const alloc = std.testing.allocator;
const file = std.io.getStdIn();
_ = try std.elf.readAllHeaders(alloc, file);
}
```
```
lib/zig/std/elf.zig:543:36: error: expected type 'usize', found 'u64'
const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
^
lib/zig/std/elf.zig:543:36: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values
const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
^
lib/zig/std/elf.zig:543:35: note: referenced here
const len = file.pread(buf[i .. buf.len - i], offset + i) catch |err| switch (err) {
^
lib/zig/std/elf.zig:348:5: note: referenced here
try preadNoEof(file, &hdr_buf, 0);
^
lib/zig/std/elf.zig:392:19: note: referenced here
.header = try readHeader(file),
```
A general-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
Resources
- Introduction
- Download & Documentation
- Community
- Contributing
- Frequently Asked Questions
- Community Projects
Building from Source
Note that you can download a binary of master branch.
Stage 1: Build Zig from C++ Source Code
Dependencies
POSIX
- cmake >= 2.8.5
- gcc >= 5.0.0 or clang >= 3.6.0
- LLVM, Clang, LLD development libraries == 10.x, compiled with the same gcc or clang version above
- Use the system package manager, or build from source.
Windows
- cmake >= 3.15.3
- Microsoft Visual Studio. Supported versions:
- 2015 (version 14)
- 2017 (version 15.8)
- 2019 (version 16)
- LLVM, Clang, LLD development libraries == 10.x
- Use the pre-built binaries or build from source.
Instructions
POSIX
mkdir build
cd build
cmake ..
make install
Need help? Troubleshooting Build Issues
MacOS
brew install cmake llvm
brew outdated llvm || brew upgrade llvm
mkdir build
cd build
cmake .. -DCMAKE_PREFIX_PATH=$(brew --prefix llvm)
make install
You will now run into this issue:
homebrew and llvm 10 packages in apt.llvm.org are broken with undefined reference to getPollyPluginInfo
or
error: unable to create target: 'Unable to find target for this triple (no targets are registered)',
in which case try -DZIG_WORKAROUND_4799=ON
Hopefully this will be fixed upstream with LLVM 10.0.1.
Windows
See https://github.com/ziglang/zig/wiki/Building-Zig-on-Windows
Languages
Zig
98.3%
C
1.1%
C++
0.2%
Python
0.1%