[readme] more examples
This commit is contained in:
parent
74fb5e7aac
commit
1102b261bd
81
README.md
81
README.md
@ -60,19 +60,6 @@ used, run:
|
|||||||
$ bazel query @zig_sdk//... | sed -En '/.*_toolchain$/ s/.*:(.*)_toolchain$/\1/p'
|
$ bazel query @zig_sdk//... | sed -En '/.*_toolchain$/ s/.*:(.*)_toolchain$/\1/p'
|
||||||
```
|
```
|
||||||
|
|
||||||
## UBSAN and "SIGILL: Illegal Instruction"
|
|
||||||
|
|
||||||
`zig cc` differs from "mainstream" compilers by [enabling UBSAN by
|
|
||||||
default][ubsan1]. Which means your program may compile successfully and crash
|
|
||||||
with:
|
|
||||||
|
|
||||||
```
|
|
||||||
SIGILL: illegal instruction
|
|
||||||
```
|
|
||||||
|
|
||||||
This is by design: it encourages program authors to fix the undefined behavior.
|
|
||||||
There are [many ways][ubsan2] to find the undefined behavior.
|
|
||||||
|
|
||||||
## Specifying non-default toolchains (and not registering at all)
|
## Specifying non-default toolchains (and not registering at all)
|
||||||
|
|
||||||
You may explicitly request Bazel to use a specific toolchain, even though one
|
You may explicitly request Bazel to use a specific toolchain, even though one
|
||||||
@ -94,24 +81,25 @@ In that case, you will need to specify the `--extra_toolchains <toolchain>`
|
|||||||
command-line argument. Otherwise Bazel will use the default one -- the host
|
command-line argument. Otherwise Bazel will use the default one -- the host
|
||||||
toolchain.
|
toolchain.
|
||||||
|
|
||||||
|
## UBSAN and "SIGILL: Illegal Instruction"
|
||||||
|
|
||||||
|
`zig cc` differs from "mainstream" compilers by [enabling UBSAN by
|
||||||
|
default][ubsan1]. Which means your program may compile successfully and crash
|
||||||
|
with:
|
||||||
|
|
||||||
|
```
|
||||||
|
SIGILL: illegal instruction
|
||||||
|
```
|
||||||
|
|
||||||
|
This is by design: it encourages program authors to fix the undefined behavior.
|
||||||
|
There are [many ways][ubsan2] to find the undefined behavior.
|
||||||
|
|
||||||
# Known Issues In bazel-zig-cc
|
# Known Issues In bazel-zig-cc
|
||||||
|
|
||||||
These are the things you may stumble into when using bazel-zig-cc. I am
|
These are the things you may stumble into when using bazel-zig-cc. I am
|
||||||
unlikely to implement them, but patches implementing those will be accepted.
|
unlikely to implement them any time soon, but patches implementing those will
|
||||||
See [Questions & Contributions](#questions-amp-contributions) on how to
|
be accepted. See [Questions & Contributions](#questions-amp-contributions) on
|
||||||
contribute.
|
how to contribute.
|
||||||
|
|
||||||
## OSX: sysroot
|
|
||||||
|
|
||||||
For non-trivial programs (and for all darwin/arm64 cgo programs) MacOS SDK may
|
|
||||||
be necessary. Read [Jakub's comment][sysroot] about it. Support for OSX sysroot
|
|
||||||
is currently not implemented.
|
|
||||||
|
|
||||||
## OSX: different OS targets (Catalina -- Monterey)
|
|
||||||
|
|
||||||
[Zig 0.9.0](https://ziglang.org/download/0.9.0/release-notes.html#macOS) may
|
|
||||||
target macos.10 (Catalina), macos.11 (Big Sur) or macos.12 (Monterey). It
|
|
||||||
currently targets the lowest version, without ability to change it.
|
|
||||||
|
|
||||||
## Zig cache
|
## Zig cache
|
||||||
|
|
||||||
@ -133,6 +121,18 @@ targets are in their own namespace.
|
|||||||
Likewise, platforms are `@zig_sdk//:<platform>_platform`, and should be moved
|
Likewise, platforms are `@zig_sdk//:<platform>_platform`, and should be moved
|
||||||
to `@zig_sdk//:platform:<platform>`.
|
to `@zig_sdk//:platform:<platform>`.
|
||||||
|
|
||||||
|
## OSX: sysroot
|
||||||
|
|
||||||
|
For non-trivial programs (and for all darwin/arm64 cgo programs) MacOS SDK may
|
||||||
|
be necessary. Read [Jakub's comment][sysroot] about it. Support for OSX sysroot
|
||||||
|
is currently not implemented.
|
||||||
|
|
||||||
|
## OSX: different OS targets (Catalina -- Monterey)
|
||||||
|
|
||||||
|
[Zig 0.9.0](https://ziglang.org/download/0.9.0/release-notes.html#macOS) may
|
||||||
|
target macos.10 (Catalina), macos.11 (Big Sur) or macos.12 (Monterey). It
|
||||||
|
currently targets the lowest version, without ability to change it.
|
||||||
|
|
||||||
# Known Issues In Upstream
|
# Known Issues In Upstream
|
||||||
|
|
||||||
This section lists issues that I've stumbled into when using `zig cc`, and is
|
This section lists issues that I've stumbled into when using `zig cc`, and is
|
||||||
@ -165,27 +165,28 @@ may apply to aarch64, but the author didn't find a need to test it (yet).
|
|||||||
|
|
||||||
# Testing
|
# Testing
|
||||||
|
|
||||||
## linux cgo + glibc 2.28
|
## build & run linux cgo + glibc
|
||||||
|
|
||||||
```
|
```
|
||||||
$ bazel build --platforms @zig_sdk//:linux_amd64_platform //test/go:go
|
$ bazel build --platforms @zig_sdk//:linux_amd64_platform //test/go:go
|
||||||
$ file bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go
|
$ file bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go
|
||||||
bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.0.0, Go BuildID=redacted, with debug_info, not stripped
|
bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.0.0, Go BuildID=redacted, with debug_info, not stripped
|
||||||
```
|
|
||||||
|
|
||||||
## linux cgo + musl
|
|
||||||
|
|
||||||
```
|
|
||||||
$ bazel build \
|
|
||||||
--platforms @zig_sdk//:linux_amd64_platform \
|
|
||||||
--extra_toolchains @zig_sdk//:linux_amd64_musl_toolchain //test/go:go
|
|
||||||
...
|
|
||||||
$ file bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go
|
|
||||||
bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, Go BuildID=redacted, stripped
|
|
||||||
$ bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go
|
$ bazel-out/k8-opt-ST-d17813c235ce/bin/test/go/go_/go
|
||||||
hello, world
|
hello, world
|
||||||
```
|
```
|
||||||
|
|
||||||
|
## test linux cgo + musl on arm64 (under qemu-aarch64)
|
||||||
|
|
||||||
|
```
|
||||||
|
$ bazel test \
|
||||||
|
--run_under=qemu-aarch64 \
|
||||||
|
--platforms @zig_sdk//:linux_arm64_platform \
|
||||||
|
--extra_toolchains @zig_sdk//:linux_arm64_musl_toolchain //test/...
|
||||||
|
...
|
||||||
|
INFO: Build completed successfully, 10 total actions
|
||||||
|
//test/go:go_test PASSED in 0.2s
|
||||||
|
```
|
||||||
|
|
||||||
## macos cgo
|
## macos cgo
|
||||||
|
|
||||||
```
|
```
|
||||||
|
Loading…
Reference in New Issue
Block a user