Commit Graph

951 Commits (a8b36fbe34e4acfea1fcb348fbed321b05611fd3)

Author SHA1 Message Date
Andrew Kelley 65b1a4953f
Merge pull request #4324 from fengb/testing-allocator
Remove debug.global_allocator in favor of testing.allocator
2020-01-30 10:01:40 -05:00
Andrew Kelley e3a383a661
Merge pull request #4239 from shawnl/rb
rb: **breaking** change API to be thread-safe
2020-01-30 09:45:35 -05:00
Andrew Kelley 0303e7bd8e
Merge pull request #4319 from Rocknest/windows-traces
Bring windows segfault handler on par with linux
2020-01-30 09:26:39 -05:00
LemonBoy e77a102e24 Small DWARF fixups
* Clang doesn't seem to emit a DW_AT_low_pc together with DW_AT_ranges
  for asm files.
* Keep reading the other CUs if the lookup fails.
2020-01-30 09:11:02 -05:00
Rocknest a5f18c2b2a Fix one more edge case 2020-01-30 10:00:28 +02:00
Benjamin Feng 9c196efa2a Add explicit error message for too many frees 2020-01-30 01:12:21 -06:00
Rocknest 94f29ae117 Remove intCast's 2020-01-30 08:53:38 +02:00
Benjamin Feng 46d84a1b63 Convert a few more page_allocator 2020-01-30 00:27:44 -06:00
Benjamin Feng c1fb97aef6 Remove unnecessary allocator from mutex 2020-01-30 00:27:44 -06:00
Benjamin Feng 184128fd9e Fix testing.allocator wiring 2020-01-30 00:27:44 -06:00
Andrew Kelley c75f65d38c
std.Target: add ve arch 2020-01-29 23:58:28 -05:00
Andrew Kelley a95dce15ae
Merge remote-tracking branch 'origin/master' into llvm10 2020-01-29 23:33:12 -05:00
Benjamin Feng 5c8e85f388 Fix BufMap value leak 2020-01-29 22:22:01 -06:00
Benjamin Feng b7a236d68e Convert a bunch of page_allocator to testing.allocator 2020-01-29 22:22:01 -06:00
Benjamin Feng ad93ad3e60 Fix errant reference to page_allocator 2020-01-29 22:22:01 -06:00
Benjamin Feng b077f3ab7d Promoted "leak_count_allocator" to the main testing.allocator 2020-01-29 22:22:00 -06:00
Benjamin Feng 70ad84c820 Use defer/panic to better account for test failure 2020-01-29 17:38:52 -06:00
Benjamin Feng 0c137934cb Move FailingAllocator to testing 2020-01-29 17:38:42 -06:00
Rocknest b1884b3a62 Fix aarch64 2020-01-30 01:17:34 +02:00
Rocknest c0c9c601d4 Fix off-by-one error 2020-01-29 23:48:52 +02:00
Rocknest 4a4d6f2be9 Reorganize definitions 2020-01-29 23:15:17 +02:00
Valentin Anger d448c3d38a Add support for code model selection 2020-01-29 16:09:07 -05:00
Benjamin Feng aa9caf5064 Create leak_count_allocator 2020-01-29 14:37:01 -06:00
Rocknest b7cd60a354 Changing stuff and seeing what happens 2020-01-29 21:09:00 +02:00
Benjamin Feng 4d134a01f5 Move debug.global_allocator to testing.allocator 2020-01-29 12:21:29 -06:00
Andrew Kelley 34706dad3f
fix typo in doc comment 2020-01-29 12:25:25 -05:00
Andrew Kelley 0cc2489d22
Merge pull request #4317 from Vexu/std-c
Add (unfinished) C parser to std lib
2020-01-29 12:13:53 -05:00
LemonBoy 1ba4554855 Correct dl_iterate_phdr address
The base should be zero so that p_vaddr + dlpi_addr = p_vaddr
2020-01-29 12:05:36 -05:00
Rocknest 3500b41bfe Add an advanced segfault handler on windows 2020-01-29 17:27:53 +02:00
Vexu abd1a7c91c
std-c add todos to unfinished parsing functioins 2020-01-29 12:12:28 +02:00
Andrew Kelley 13259acbc3
std.sort.insertionSort: remove superfluous block 2020-01-28 16:22:09 -05:00
Andrew Kelley 3ed52e5453
fix build.zig logic for -target-cpu and -target-feature
fix a false negative for detecting the ability to emit these flags.
it matters for stage0/stage1 on aarch64
2020-01-28 14:54:34 -05:00
Andrew Kelley d8e2549996
remove invalid use of `allowzero` in std.crypto.murmur 2020-01-27 19:42:13 -05:00
Andrew Kelley 4591389497
Merge pull request #4300 from LemonBoy/debug-windows
More debug fixes - This time Windows gets a treat
2020-01-27 09:46:39 -05:00
LemonBoy d5c2a20d8e Unify the two DWARF interpreters
* Let's consolidate the special-cased DWARF interpreter for OSX with the
  general purpose one

* Drop the assumption that all the debug data is contained in a single
  contiguous slice of memory. This is a good news for freestanding
  targets and paves the way for supporting compressed debug sections.
2020-01-27 09:46:20 -05:00
LemonBoy 7336b750bd Fix stack-trace address calculation on Windows
Let's always subtract 1 from the return address so that we're sure to be
inside the callee.

Fixes some edge case where the stack trace skipped the first entry.
2020-01-27 13:12:01 +01:00
LemonBoy f8e015c85f Handle S_GPROC32 symbols in PDB files
Fixes some incomplete stack traces on Windows.
2020-01-27 13:10:35 +01:00
Andrew Kelley 518dbd30cb
Merge pull request #4133 from daurnimator/4087-free-sets-undefined
Sets memory to undefined when freed from allocator
2020-01-26 18:52:43 -05:00
Andrew Kelley 51ac8eb08e fix regression in windows stack traces tty detection 2020-01-26 18:28:52 -05:00
Andrew Kelley 3839ea8978
fix debug info code not being freestanding compatible
in stack tracing code, the idea was to detect the tty settings at the
top of the stack and pass the information down. somewhere along the way
this got changed so that setTtyColor was assuming the global stderr_file
was related to the output stream the stack trace was being printed to.

now, tty_color is changed to tty_config, and it is an enum rather than a
bool, telling how tty colors are expected to be handled. windows is
still incorrectly looking at stderr_file.
2020-01-26 09:55:04 -05:00
Andrew Kelley 9dffc369f1
Merge remote-tracking branch 'origin/master' into layneson-cpus_and_features 2020-01-25 23:25:29 -05:00
LemonBoy aaa2f9ab2f Fix handling of DW_LNE_end_sequence
The DWARF specification states that LNE_end_sequence should just reset
the state machine, it's not an error.
2020-01-25 20:03:50 -05:00
LemonBoy 8516ee392c Fix parsing of DW_AT_Ranges debug entry
Follow the specification about what the base address is and how it can
be changed by some entries in the list itself.
2020-01-25 16:12:11 -05:00
Andrew Kelley 800ead2810
update target info to llvm 10
the branch builds now
2020-01-23 17:31:25 -05:00
Andrew Kelley fbfda7f00e
fix incorrect list of sub-arches for aarch64
tests use older sub-arch that works in the older qemu
2020-01-23 13:02:45 -05:00
Andrew Kelley c86589a738 disable f128 compiler_rt tests failing on windows
These were never working with native CPU features. In this branch,
we fix native CPU features not being enabled on Windows, and regress
f128 language features. In the llvm10 branch, all this is fixed,
and the tests are re-enabled.
2020-01-23 02:05:24 -05:00
Andrew Kelley ead7d15772
use an older arm64 sub-arch for test suite
hopefully this avoids the older qemu version crashing
2020-01-23 00:41:46 -05:00
Michael Dusan 357f42da6c compiler_rt: fix mulsi3 test typo 2020-01-22 20:17:38 -05:00
Andrew Kelley fb8e681ea8
update zig_llvm.h and zig_llvm.cpp to llvm 10 2020-01-22 18:43:30 -05:00
Andrew Kelley 9845264a0b
aarch64: less feature-full baseline CPU 2020-01-22 18:40:34 -05:00
Andrew Kelley 0c477f3c79
fix std.Target.Arch.parseCpuFeatureSet unit test 2020-01-22 17:47:18 -05:00
Andrew Kelley 74872263cc
lib/headers: update to clang 10.x C headers
upstream revision: 3cce3790072249cbe51b96cea26bc78019c11fd0
2020-01-22 17:42:44 -05:00
Andrew Kelley 3227aec848
fix not respecting sub-arch feature 2020-01-22 17:35:57 -05:00
Andrew Kelley b94525c45b
Merge pull request #4263 from LemonBoy/debug-thing
Refactor some debug stuff
2020-01-22 17:32:48 -05:00
Andrew Kelley 48c7e6c48b
std.Target.CpuFeatures is now a struct with both CPU and feature set
Previously it was a tagged union which was one of:
 * baseline
 * a specific CPU
 * a set of features

Now, it's possible to have a CPU but also modify the CPU's feature set
on top of that. This is closer to what LLVM does.

This is more correct because Zig's notion of CPUs (and LLVM's) is not
exact CPU models. For example "skylake" is not one very specific model;
there are several different pieces of hardware that match "skylake" that
have different feature sets enabled.
2020-01-22 17:13:31 -05:00
LemonBoy 69c72e24d4 compiler-rt: Port __mulsi3 builtin 2020-01-22 13:04:45 -05:00
Andrew Kelley cbe9a51518
don't trust llvm's GetHostCPUName
comment from this commit reproduced here:

I have observed the CPU name reported by LLVM being incorrect. On
the SourceHut build services, LLVM 9.0 reports the CPU as "athlon-xp",
which is a 32-bit CPU, even though the system is 64-bit and the reported
CPU features include, among other things, +64bit.
So the strategy taken here is that we observe both reported CPU, and the
reported CPU features. The features are trusted more; but if the features
match exactly the features of the reported CPU, then we trust the reported CPU.
2020-01-21 22:02:13 -05:00
Andrew Kelley 830e0ba2d2 enable native CPU feature for windows; disable failing tests
See #508. These can be re-enabled when we upgrade to LLVM 10.
2020-01-21 21:46:06 -05:00
Andrew Kelley 68b6867e76
lazily compute the full cpu features dependencies 2020-01-21 20:11:36 -05:00
Andrew Kelley 92559cd02c
hit a comptime limitation with computing dense sets 2020-01-21 19:40:44 -05:00
LemonBoy b8601e9252 Adjust tests & work around a nasty ICE 2020-01-21 23:17:02 +01:00
LemonBoy 59d0dda080 Make writeByteNTimes faster and leaner 2020-01-21 20:58:02 +01:00
LemonBoy bc82e0f3d3 Refactor some code in the debug output 2020-01-21 20:51:57 +01:00
Andrew Kelley 6793af8d8b
these are not real cpu features 2020-01-21 12:14:36 -05:00
Andrew Kelley 39759b90fc
make zig targets show native cpu name and features 2020-01-21 01:22:37 -05:00
Andrew Kelley e640d01535
fixups to arch data, support any number of cpu features 2020-01-21 00:34:54 -05:00
Andrew Kelley 6118b11afa
Revert "aarch64: remove CPU features that are actually just CPUs"
This reverts commit 6dd514ac8a.

This strategy won't work for arm 32-bit; instead need to try to figure
out how to get more bits into the bit set.
2020-01-20 23:15:07 -05:00
Andrew Kelley 89e107ee4e
uncomment all the archs in target.zig 2020-01-20 23:14:35 -05:00
Andrew Kelley 6dd514ac8a
aarch64: remove CPU features that are actually just CPUs 2020-01-20 22:49:26 -05:00
Andrew Kelley 6e88883edf
import data from llvm 9 2020-01-20 22:21:45 -05:00
Andrew Kelley f3dd9bbdac
improve `zig targets` 2020-01-20 13:40:25 -05:00
Andrew Kelley bf82929557
fix std.Target.Arch.parseCpuFeatureSet 2020-01-20 12:41:18 -05:00
LemonBoy c522699f28 Fix ICE in build addAssemblyFile 2020-01-20 12:24:55 -05:00
Nathan Michaels 0000de4fee Handle {s} format for C strings. (#4219)
* Handle {s} format for C strings.

* Fix "cstr" test to actually use c strings.
2020-01-20 12:23:43 -05:00
daurnimator 5cc4932461
std: allocator interface sets freed memory to undefined 2020-01-21 03:17:40 +11:00
daurnimator 65013d8599
std: fix bug in http.headers where .put captures user-held variable 2020-01-21 03:17:36 +11:00
Andrew Kelley 8f29d14073
stage1 is building. `zig targets` now self-hosted 2020-01-20 01:42:31 -05:00
Andrew Kelley 20af858601
some fixes 2020-01-19 21:06:41 -05:00
Andrew Kelley e3b5e91878
do the x86 arch 2020-01-19 20:54:05 -05:00
Andrew Kelley a867b43366
progress towards merging
see BRANCH_TODO file
2020-01-19 20:54:04 -05:00
Layne Gustafson 430077df1b
Allow target details with no LLVM support 2020-01-19 20:53:20 -05:00
Layne Gustafson de8a5cf5f5
Remove features/cpus not in LLVM v9 2020-01-19 20:53:20 -05:00
Layne Gustafson 03dd376b55
Add builtin.zig support 2020-01-19 20:53:19 -05:00
Layne Gustafson c61856ebcf
Add TargetDetails abstraction 2020-01-19 20:53:19 -05:00
Layne Gustafson 79a2747de4
Add llvm_name to feature defs 2020-01-19 20:53:19 -05:00
Layne Gustafson e4ecdefa9a
Rename subfeatures -> dependencies 2020-01-19 20:53:19 -05:00
Layne Gustafson 51372200d3
Filter out non-features 2020-01-19 20:53:19 -05:00
Layne Gustafson c1798cb632
Add build.zig cpu and feature options 2020-01-19 20:53:19 -05:00
Layne Gustafson c8f1e0d6d8
Remove llvm_name from features 2020-01-19 20:53:19 -05:00
Layne Gustafson c131e50ea7
Switch CPU/features to simple format 2020-01-19 20:53:18 -05:00
Layne Gustafson 21908e100e
Fix CPU and feature defs 2020-01-19 20:53:18 -05:00
Layne Gustafson 8ac138a318
Add parseArchTag and fix parseArchSub 2020-01-19 20:53:18 -05:00
Layne Gustafson 8f191e0166
Update term feature deps -> subfeatures 2020-01-19 20:53:18 -05:00
Layne Gustafson 0f46c12f78
Create initial target details infrastructure 2020-01-19 20:53:15 -05:00
Shawn Landden ad15a73240 rb: type Tree.sort with SortError 2020-01-19 23:35:56 +04:00
Vexu ad327fed05
std-c redo scoping, do string concatanation in parser 2020-01-19 20:44:55 +02:00
Andrew Kelley e491b2f5a7
Merge pull request #4231 from LemonBoy/more-builtin-work1
More patches for compiler-rt
2020-01-19 13:27:36 -05:00
Shawn Landden 4ab9678b95 rb: add sort() that re-sorts tree with new compare function
You can also specify the same compare function, but after updating the
context that the function will use (connected to the rb.Tree) before.
2020-01-19 22:10:21 +04:00
Shawn Landden e190082922 rb: *breaking* make API thread-safe
use @fieldParentPtr to access your context fields, which lie if you
struct that contains a rb.Tree member (without a pointer).

Also simplifies the init() function so rb.Tree can be initialized in a single line,
without having to use "undefined".
2020-01-19 22:09:56 +04:00
Shawn Landden de07ca77e7 rb: just use @include("std")
we already have to use --override-std-dir
when running std tests, and having it this way
makes it much easier to run just the tests of this file.
2020-01-19 22:05:38 +04:00
LemonBoy 861724bcf0 Fix some tests broken by the renamed files 2020-01-19 09:31:45 +01:00
LemonBoy 5fbc1c2812 Nuke some more code 2020-01-19 00:12:27 +01:00
LemonBoy 3247fd7862 Export MSVC builtins inconditionally 2020-01-19 00:12:27 +01:00
LemonBoy ae31da9334 Minor cleanup 2020-01-19 00:12:26 +01:00
LemonBoy 6b056d1fb9 Nuke some repeated code 2020-01-19 00:12:25 +01:00
LemonBoy 7d94e712f1 Remove useless wrappers around f32/f64 aeabi builtins 2020-01-19 00:12:18 +01:00
LemonBoy fa52c9e36e Small cleanups 2020-01-19 00:11:45 +01:00
Sebastian 405b8e9eee fixed typo - "path" lead to undeclared identifier 2020-01-18 17:56:53 -05:00
daurnimator 72ec445677 std: turn EAI_ constants into a non-exhaustive enum 2020-01-18 17:46:44 -05:00
daurnimator 9e6e1e58bb std: use non-exhaustive enums from crc module
Un-reverts PR #3118
2020-01-18 17:42:45 -05:00
Andrew Kelley b5ac079f88
Merge pull request #4191 from Vexu/non-exhaustive-enums
Implement non-exhaustive enums
2020-01-17 14:26:12 -05:00
Michaël Larouche d9be6e5dc6 Port clzsi2 from compiler_rt, required for using std.fmt.format on some ARM architecture. 2020-01-17 14:25:22 -05:00
Vexu bac27731e3 add struct field default value to typeinfo 2020-01-16 13:22:30 -05:00
LemonBoy f609ce4f65 Minor changes to the ARM builtin fns 2020-01-16 12:50:53 -05:00
LemonBoy 7e5e767ba0 Fix regression in char printing
Closes #4014
2020-01-16 12:17:16 -05:00
Andrew Kelley 8a792db2d8
Merge pull request #4187 from LemonBoy/builtin-rearrange
Some needed work on builtins
2020-01-15 18:39:50 -05:00
Vexu c57784aa15
add is_exhaustive field to typeinfo 2020-01-15 21:50:12 +02:00
Vexu 0ea96c11ef disallow multiline strings in test and library names 2020-01-15 14:20:48 -05:00
LemonBoy e8012740b9 Fix off-by-one error (and missing store op) 2020-01-15 20:03:41 +01:00
LemonBoy ede28755b6 Fix test case 2020-01-15 18:41:07 +01:00
LemonBoy c5cfc9bf68 Move definition of __aeabi_read_tp 2020-01-15 17:50:51 +01:00
LemonBoy 5d5345728a Fix div builtins to use the correct calling convention 2020-01-15 17:50:51 +01:00
LemonBoy 109e5f8a5a Remove unnecessary logic 2020-01-15 17:50:51 +01:00
LemonBoy 44e3796285 Rearrange some builtin functions placement 2020-01-15 12:48:28 +01:00
Andrew Kelley 8d9d4a0658
Merge pull request #4182 from LemonBoy/mjeiorw
A bunch of patches
2020-01-15 04:28:54 -05:00
LemonBoy c85afff5a8 Correct l_name field type 2020-01-14 23:11:10 +01:00
LemonBoy c1f3766f1c Correct dlpi_name field type 2020-01-14 21:15:33 +01:00
Michaël Larouche 7ee0e779af Fix std.child_process.ChildProcess.spawnWindow when looking in PATH environment variable, it applied cwd+app_name instead of just using the app_name 2020-01-14 15:12:30 -05:00
Vexu af2ede4d96 fix crash on multiline library name 2020-01-14 13:10:52 -05:00
Hersh Krishna e7917d099d Add clamp function to math module 2020-01-14 13:06:46 -05:00
Vexu 28daddae81
std-c todos and small fixes 2020-01-14 16:18:32 +02:00
Andrew Kelley c774c9376a
Merge pull request #3957 from xackus/stage2_parser_3799
stage2 parser: fix segfault on extern block
2020-01-13 13:38:31 -05:00
Jonathan Marler 0827e298ed Add WaitForSingleObject function to std.os.windows 2020-01-11 15:49:48 -05:00
Vexu 4c0776b2a5
std-c parse switch 2020-01-11 21:48:12 +02:00
xackus 5880eb3a75 stage2 parser: document undefined and clean up 2020-01-10 22:48:51 +01:00
xackus f81529fab1 stage2 parser: fix segfault on extern block 2020-01-10 22:35:41 +01:00
daurnimator 03e1241b88
std: avoid an allocation in inner loop 2020-01-10 15:03:51 +11:00
daurnimator 6fb636050f
std: fix off by one error in windows process creation 2020-01-10 15:00:14 +11:00
Andrew Kelley 5e345ff0ee
Merge pull request #3955 from LemonBoy/fix-1528
Pointer arithmetic affects the alignment factor
2020-01-09 13:53:56 -05:00
LemonBoy 5ab5de89c0 New @export() handling
Use a struct as second parameter to be future proof (and also allows to
specify default values for the parameters)

Closes #2679 as it was just a matter of a few lines of code.
2020-01-09 13:43:06 -05:00
Ryan Liptak 834218d789 Fix remaining variadic formatted prints
Used a series of regex searches to try to find as many instances of the old pattern as I could and update them.
2020-01-09 13:36:44 -05:00
daurnimator d7333d8798 std: fix LoggingAllocator, add simple test 2020-01-09 13:34:46 -05:00
LemonBoy 7fe13f4a86 Pointer alignment fixes for the stdlib 2020-01-08 20:03:03 +01:00
LemonBoy e134e6c994 Pointer arithmetic affects the alignment factor
Closes #1528
2020-01-08 20:03:03 +01:00
Nathan Michaels 38ce7f64e3 Add removeIndex function to PriorityQueue (#4070)
It's awkward to use, but lets me cancel events in an event queue.

Co-authored-by: Dmitry Atamanov <data-man@users.noreply.github.com>
2020-01-08 13:55:47 -05:00
Vexu e21ea5bd95
std-c parser loops 2020-01-08 00:00:14 +02:00
Andrew Kelley 9f064bcf74
Merge pull request #4091 from xackus/json_copy_strings
json: implement copy_strings=false
2020-01-07 16:42:14 -05:00
Vexu 83b4163591
std-c parser declaratorIsFunction and small fixes 2020-01-07 23:25:38 +02:00
Andrew Kelley 7b73c7fe12
Merge branch 'std-utf16-sentinel-terminated' of https://github.com/daurnimator/zig 2020-01-07 16:13:34 -05:00
Andrew Kelley af390b75db
cleanups related to --eh-frame-hdr 2020-01-07 16:02:38 -05:00