Commit Graph

22559 Commits

Author SHA1 Message Date
Jonathan Marler c02ced4d34 ignore SIGPIPE by default 2023-02-17 09:08:41 -07:00
Motiejus Jakštys 3f7e9ff597 [all linkers] fail hard on unsupported flags
Currently `zig cc`, when confronted with a linker argument it does
not understand, skips the flag and emits a warning.

This has been causing headaches for people that build third-party
software (including me). Zig seemingly builds and links the final
executable, only to segfault when running it.

If there are linker warnings when compiling software, the first thing we
have to do is add support for ones linker is complaining, and only then
go file issues. If zig "successfully" (i.e. status code = 0) compiles a
binary, there is instead a tendency to blaim "zig doing something
weird". (I am guilty of this.) In my experience, adding the unsupported
arguments has been quite easy; see #11679, #11875, #11874 for recent
examples.

With the current ones (+ prerequisites below) I was able to build all of
the CGo programs that I am encountering at $dayjob. CGo is a reasonable
example, because it is exercising the unusual linker args quite a bit.

Prerequisites: #11614 and #11863.
2023-02-16 19:20:53 -05:00
Andrew Kelley d2650eb570 CLI: detect linker color diagnostics flags 2023-02-16 17:19:26 -07:00
Motiejus Jakštys 705e9cb3ca [linker] ignore --sort-common
From ld.lld(1):

     --sort-common
             This option is ignored for GNU compatibility.

Refs https://github.com/zigchroot/zig-chroot/issues/1
2023-02-16 18:46:06 -05:00
Motiejus Jakštys b1b944a683 [elf linker] add --sort-section
Tested by: created a "hello world" C file and compiled with:

    zig cc -v main.c -Wl,--sort-section=name -o main

... and verified the `--sort-section=name` is passed to ld.lld.

Refs https://github.com/zigchroot/zig-chroot/issues/1
2023-02-16 18:44:56 -05:00
Andrew Kelley f911c933b2 Merge pull request #11912 from motiejus/wl-no-undefined
[linker] add --no-undefined, -z undefs
2023-02-16 18:36:57 -05:00
Andrew Kelley 61da9a25b9 CLI: remove option from usage text since it doesn't work 2023-02-16 16:35:06 -07:00
Motiejus Jakštys 4c7ca20da5 [linker] add --no-undefined, -z undefs
Refs https://github.com/zigchroot/zig-chroot/issues/1
2023-02-16 16:33:05 -07:00
Chris Boesch 438b71155a crypto: add AES-CMAC (RFC 4493) (#14545)
* crypto: add AES-CMAC

Co-authored-by: Frank Denis <124872+jedisct1@users.noreply.github.com>
2023-02-16 21:18:20 +01:00
Veikka Tuominen 7199d7c777 split @qualCast into @constCast and @volatileCast 2023-02-15 01:43:57 +02:00
Jakub Konka 4e6f21e2cb comp: reinstate -fcompiler-rt when used with build-obj as output
When the following is specified

```
$ zig build-obj -fcompiler-rt example.zig
```

the resulting relocatable object file will have the compiler-rt
unconditionally embedded inside.

```
$ nm example.o
...
0000000012345678 W __truncsfhf2
...
```
2023-02-14 12:12:22 -05:00
Tom Read Cutting 47e14b7ffb Zld: Report archive file with cpu arch mismatch
This is just a simple/hacky feature to report the source of a linking
error. I found this helpful in fixing-up some of my libs when recently
switching from an x86_64 to aarch64 device, so thought it might be
useful to others a well before zld has a fully featured error reporting
system.
2023-02-14 12:05:30 +01:00
Philippe Pittoli d09e39aefd Add std.c.umask. 2023-02-14 02:17:33 +02:00
Andrew Kelley a9e1cf3049 Merge pull request #14571 from ziglang/more-build-zig
std.Build.ConfigHeaderStep: support sentinel-terminated strings
2023-02-13 17:23:19 -05:00
Andrew Kelley 35bb823131 build.zig: builder.zig_exe is not relative 2023-02-13 09:13:36 -07:00
Veikka Tuominen fc48467a97 Merge pull request #14548 from schmee/std-json-fixes
Some std.json fixes
2023-02-13 16:24:29 +02:00
AdamGoertz c8dc00086e Add -ferror-tracing and -fno-error-tracing compile options 2023-02-13 16:23:13 +02:00
Manlio Perillo 5894be94c8 langref: make more examples testable
Some examples using {#syntax_block|zig|...#} either have a valid syntax
or it is easy to make the syntax valid.  Update these example to use
{#code_begin|syntax|...#}.

Remove extra whitespace in the error_union_parsing_u64.zig example.

Replace size_t with usize in the call_malloc_from_zig.zig example.
2023-02-13 16:21:54 +02:00
Leo Constantinides 25d6b8c1f1 std: support deserialising JSON strings containing escape seqences into sentinel slice 2023-02-13 15:44:34 +02:00
Andrew Kelley e9c7e539e4 std.Build.OptionsStep: update test case 2023-02-13 06:42:26 -07:00
Andrew Kelley 5c1f7288d9 std.Build: delete test that doesn't test anything 2023-02-13 06:42:26 -07:00
Andrew Kelley 3f8f63b132 std.Build: make cache_root and global_cache_root relative to cwd
This makes it so that when there is a tree of std.Build objects, only
one zig-cache is used (the top-level application) instead of polluting
package directories with zig-cache folders.
2023-02-13 06:42:26 -07:00
Andrew Kelley d97042ad2e std.Build: start using the cache system with RunStep
* Use std.Build.Cache.Directory instead of a string for storing the
   cache roots and build roots.
 * Set up a std.Build.Cache in build_runner.zig and use it in
   std.Build.RunStep for avoiding redundant work.
2023-02-13 06:42:26 -07:00
Andrew Kelley 0666322614 std.Build.Cache: remove debug log statements
Now that this API is used by the build system, these debug logs are
problematic because build scripts run in debug mode, making these logs
noisy output.
2023-02-13 06:42:25 -07:00
Andrew Kelley 9cb52ca6ce move the cache system from compiler to std lib 2023-02-13 06:42:25 -07:00
Andrew Kelley 2654d0c668 std.Build.RunStep: introduce addOutputFileArg API
This provides file path as a command line argument to the command being
run, and returns a FileSource which can be used as inputs to other APIs
throughout the build system.

Unfortunately, it is implemented by pooping a ton of temporary files
into zig-cache/tmp for the time being. I think one of the very next
improvements to the build system should be moving the compiler's cache
system to the standard library and using it in the build system. I had a
look at the dependencies and it is already pretty untangled.
2023-02-13 06:42:25 -07:00
Andrew Kelley b061cc9e3f std.Build.ConfigHeaderStep: support outputting assembly config files 2023-02-13 06:42:25 -07:00
Andrew Kelley dad6039092 std.Build: support running build artifacts from packages
Deprecate CompileStep.run. The problem with this function is that it
does the RunStep with the same build.zig context as the CompileStep, but
this is not desirable when running an executable that is provided by a
dependency package. Instead, users should use `b.addRunArtifact`.
This has the additional benefit of conforming to the existing naming
conventions.

Additionally, support enum literals in config header options values.
2023-02-13 06:42:25 -07:00
Andrew Kelley 27317eaff0 std.Build.ConfigHeaderStep: support sentinel-terminated strings 2023-02-13 06:42:25 -07:00
Frank Denis f62e3b8c0d std.crypto: add the Ascon permutation
Ascon has been selected as new standard for lightweight cryptography
in the NIST Lightweight Cryptography competition.

Ascon won over Gimli and Xoodoo.

The permutation is unlikely to change. However, NIST may tweak
the constructions (XOF, hash, authenticated encryption) before
standardizing them. For that reason, implementations of those
are better maintained outside the standard library for now.

In fact, we already had an Ascon implementation in Zig:
`std.crypto.aead.isap` is based on it. While the implementation was
here, there was no public API to access it directly.

So:

- The Ascon permutation is now available as `std.crypto.core.Ascon`,
with everything needed to use it in AEADs and other Ascon-based
constructions
- The ISAP implementation now uses std.crypto.core.Ascon instead of
keeping a private copy
- The default CSPRNG replaces Xoodoo with Ascon. And instead of an
ad-hoc construction, it's using the XOFa mode of the NIST submission.
2023-02-13 02:22:24 -05:00
Ali Chraghi a8edd67d3d zig fmt: additionally format .zon files 2023-02-13 02:20:02 -05:00
matu3ba 1fa2b37d29 compiler_rt: document math functions (#14552)
This documents the currently implemented math functions in alphabetical
order and sorts the remaining items.
2023-02-13 02:18:26 -05:00
Andrew Kelley d4bd1b1a60 Merge pull request #14618 from Vexu/fixes
small misc fixes
2023-02-13 01:58:01 -05:00
Andrew Kelley 3c2a43fdcc Revert "std: check types of pointers passed to allocator functions"
This reverts commit abc9530a88.

This patch implies that the idiomatic Zig way of handling anytype
parameter is to write a bunch of boilerplate instead of directly
accessing type information and relying on the compiler to be useful.

I don't want it to be this way.

It is the compiler's job to make useful error messages when the wrong
field of a type info result is accessed, and it is the zig programmer's
job to understand what it means when a compile error points at the field
access of `@typeInfo` (along with the relevant callsites).

One thing that might be useful would be having the compiler be aware of
module boundaries and highlighting the boundaries of them. The first
reference note after crossing a module boundary is likely the most
interesting one.
2023-02-12 05:59:28 -07:00
Leo Constantinides abc9530a88 std: check types of pointers passed to allocator functions 2023-02-12 00:04:27 +00:00
Jan Philipp Hafer e10c0eefde compiler_rt: add __powihf2, __powisf2, __powidf2, __powitf2, __powixf2
Implementation and tests ported from LLVM release 80.
Tests of __powihf2 created from __powisf2 tests with minor adjustments.
2023-02-12 00:10:27 +02:00
dweiller ca0528209f zig build: add -l, --list-steps option to build_runner.zig 2023-02-11 20:50:57 +02:00
matu3ba d976b4e4a5 compiler_rt: __divmodti4 for libgcc symbol compatibility
- Copy and adjust __divmodsi4 tests for __divmoddi4 and __divmodti4.
- Assuming d = a/b does not overflow (MIN/-1) or uses div by 0,
  then tmp = (d * b) = (a/b * b) = a does not overflow.
  => Remove wraparound for remainder in applicable routines.
2023-02-11 14:41:08 +02:00
Veikka Tuominen ba680aa987 Merge pull request #14588 from dweiller/test-runner-imports
fix custom test runner file import path resolution
2023-02-11 14:40:14 +02:00
Veikka Tuominen 28413ffcba Sema: fix typo in zirCUndef
Closes #14617
2023-02-11 14:36:54 +02:00
Veikka Tuominen 0328c9cbeb llvm: fix lowerDeclRefValue for extern function aliases
Same as 0577069af5 for extern functions.

Closes  #14610
2023-02-11 14:36:54 +02:00
Veikka Tuominen 8127a27eb1 zig fmt: do not consider tuples blocks
Closes #14056
2023-02-11 14:36:54 +02:00
Veikka Tuominen 31ed8d293d Sema: add missing peer type resolution for error unions
Closes #14077
2023-02-11 14:36:54 +02:00
Veikka Tuominen b9c2837c1c Sema: validate inferred error set payload type
This was missed in b0a55e1b3b
2023-02-11 14:36:54 +02:00
Techatrix c63be507cf don't tokenize an invalid string literal 2023-02-11 14:25:25 +02:00
matu3ba 1bda8be2a3 compiler_rt: __ashlsi3, __ashrsi3, __lshrsi3 for symbol compatibility
These are unused in LLVM, but in gcc used for example by rl78.
Move test files into common file, add tests for aforementioned routines
and missing ones for __lshrti3.
2023-02-11 14:25:01 +02:00
Asherah Connor c6344866f9 std.Build.addAssembly: add missing .kind 2023-02-11 14:24:13 +02:00
John Schmidt a5d25fabda translate_c: fix typedeffed pointer subtraction
Closes #14560.
2023-02-10 15:46:29 +02:00
Andrew Kelley d24ebf1d12 Merge pull request #14518 from FnControlOption/lzma 2023-02-09 10:13:25 -05:00
Jakub Konka 2d017f379f link-tests: do not hardcode UUID when testing the build with/out DI 2023-02-08 17:26:25 +01:00