Andrew Kelley
237d9a105d
stage2: support debug dumping zir as a build option
...
So that it's not needed to manually comment and uncomment the debug
code.
2020-08-25 22:44:18 -07:00
Andrew Kelley
e97157f71c
stage2: codegen for conditional branching
...
* Move branch-local register and stack allocation metadata to the
function-local struct. Conditional branches clone this data in order
to restore it after generating machine code for a branch.
Branch-local data is now only the instruction table mapping *ir.Inst
to MCValue.
* Implement conditional branching
- Process operand deaths
- Handle register and stack allocation metadata
* Avoid storing unreferenced or void typed instructions into
the branch-local instruction table.
* Fix integer types reporting the wrong value for hasCodeGenBits.
* Remove the codegen optimization for eliding length-0 jumps. I need to
reexamine how this works because it was causing invalid jumps to be
emitted.
2020-08-25 22:44:18 -07:00
Andrew Kelley
b68fa9970b
stage2 codegen: Rework genCondBr
...
so that the arch-independent logic isn't buried and duplicated.
2020-08-25 22:44:18 -07:00
Jakub Konka
982ab7df6c
Merge pull request #6161 from kubkon/macho-text
...
Add (empty) __TEXT segment load command
2020-08-26 07:03:58 +02:00
Jakub Konka
55dc81ba2a
Hardcode runtime (libSystem) version to minimum possible
...
While we try to work out what the correlation between the OS and runtime
versions is, this commit hardcodes the latter to the minimum (compat)
version of 1.0.0.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-26 06:30:54 +02:00
Andrew Kelley
3e24e95892
std.rand: promote normal comments to doc comments
2020-08-25 19:51:40 -07:00
Andrew Kelley
b498eebfd4
std.math.big: fix use-after-free
...
When there is parameter aliasing, the ensureCapacity calls can cause the
Const parameters to become dangling pointers.
See #6167
2020-08-25 19:49:40 -07:00
Andrew Kelley
973e6c978c
std: clean up GeneralPurposeAllocator memset code
...
The freeSlot function was only called once so I inlined the logic and
utilized some of the other locals that were in scope.
2020-08-25 19:48:39 -07:00
Andrew Kelley
6fb105fdd7
std: GeneralPurposeAllocator: set freed bytes to undefined
...
Helps catch use-after-free. Caught a couple issues in the self-hosted
compiler.
2020-08-25 13:36:40 -07:00
Andrew Kelley
ea6a076065
stage2: fix use-after-free in elf linker code
2020-08-25 13:36:15 -07:00
Andrew Kelley
84d50c892d
stage2: astgen: kill the "lvalue" ResultLoc tag
2020-08-24 16:13:10 -07:00
Andrew Kelley
b30c538076
Merge branch 'Vexu-stage2'
...
closes #6148
2020-08-24 15:42:30 -07:00
Andrew Kelley
16d54c70eb
stage2: getErrorValue takes advantage of HashMap getOrPut API
2020-08-24 15:41:59 -07:00
Vexu
5de9aac749
stage2: error set types
2020-08-24 15:36:42 -07:00
Vexu
bc1d55a1d1
stage2: fix field access of array pointers
2020-08-24 15:36:42 -07:00
Vexu
1520e084cb
stage2: implement accessing error values
2020-08-24 15:36:42 -07:00
Vexu
e9b15ac9a0
stage2: error set declarations
2020-08-24 15:36:42 -07:00
Vexu
16d7db59ed
stage2: anyframe and error union types
2020-08-24 15:36:42 -07:00
Vexu
d62c12e077
stage2: astgen prefix ops
2020-08-24 15:36:42 -07:00
Andrew Kelley
fd9f509d6d
Revert "Merge pull request #6137 from Jan200101/update/glibc-2.32"
...
This reverts commit bb9c3118ed5fdc16b8e2d9882375005c2a62d0cc, reversing
changes made to 7015d84e0ca6f02fede45621571084df98dda712.
This is missing quite a few headers
2020-08-24 15:19:34 -07:00
Rocknest
140c599559
Fix & update windows version stuff ( #6157 )
...
* Update windows version constants
* Add docs
2020-08-24 16:47:44 -04:00
Jakub Konka
43b6d0e4b1
Add (empty) __TEXT segment load command
...
Also, link against `libSystem` by default when targeting macOS.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 21:18:27 +02:00
Jakub Konka
9745e7b512
Clean up draft for merging into upstream
...
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Jakub Konka
1698e6d7a7
Link against libSystem when generating Mach-O exe
...
This is required when generating an exe on macOS.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Jakub Konka
2516db9645
Specify path to dyld in Mach-O
...
This is required since an exec on macOS always has to link against
libSystem.dylib.
Signed-off-by: Jakub Konka <kubkon@jakubkonka.com>
2020-08-24 17:59:44 +02:00
Vexu
c1ee9efb7c
fix error note using invalid source node
...
Closes #6153
2020-08-24 15:24:00 +03:00
Vexu
9589dc4c95
add error checks to @Type
2020-08-24 11:13:43 +03:00
Andrew Kelley
4d7013f7d3
Merge pull request #6146 from daurnimator/no_ctty
...
Use O_NOCTTY open flag
2020-08-23 23:26:58 -04:00
Andrew Kelley
385786eedc
Merge pull request #6097 from joachimschmidt557/stage2-arm
...
Start working on stage2 ARM backend
2020-08-23 23:07:23 -04:00
LiterallyVoid
4bbea3422a
Fix unused argument error when formatting std.Target
2020-08-23 22:47:57 -04:00
Andrew Kelley
bb9c3118ed
Merge pull request #6137 from Jan200101/update/glibc-2.32
...
Update to glibc 2.32
2020-08-23 22:47:13 -04:00
Luna
7015d84e0c
remove licensing comments from init-exe/init-lib
2020-08-23 22:45:18 -04:00
joachimschmidt557
4f2618e75b
stage2: Add Hello World test for ARM backend
2020-08-23 23:13:41 +02:00
joachimschmidt557
b2254023e4
stage2: Implement setReg, call, ret, asm for ARM
...
These changes enable a Hello World example. However, all implemented
codegen is not yet feature-complete.
- asm only supports 'svc #0 ' at the moment
- call only supports leaf functions at the moment
- setReg uses a naive method at the moment
2020-08-23 22:33:47 +02:00
joachimschmidt557
1c53c07053
stage2: Implement genBreakpoint for ARM
2020-08-23 22:29:00 +02:00
joachimschmidt557
f31cee5393
Start working on stage2 ARM backend
...
- add codegen/arm.zig with some basic functionality (load/store,
data processing, branching, software interrupts)
2020-08-23 22:27:46 +02:00
daurnimator
129d3e274d
std: use O_NOCTTY flag
2020-08-24 02:28:31 +10:00
daurnimator
23a81b4396
std: refactor fs.openFileZ flag handling
2020-08-24 02:27:26 +10:00
Jan200101
53a2431713
update glibc abi list for 2.32
2020-08-22 22:43:01 +02:00
Jan200101
c61ea4cdb7
update glibc headers to 2.32
2020-08-22 22:42:58 +02:00
Andrew Kelley
4e63cae369
Merge branch 'pixelherodev-spu_ii'
...
closes #6096
2020-08-22 13:38:54 -07:00
Andrew Kelley
54f3b0a560
stage2: clean up SPU Mk II code
...
* move SPU code from std to self hosted compiler
* change std lib comments to be descriptive rather than prescriptive
* avoid usingnamespace
* fix case style of error codes
* remove duplication of producer_string
* generalize handling of less than 64 bit arch pointers
* clean up SPU II related test harness code
2020-08-22 13:36:08 -07:00
Noam Preil
24efbf5ddf
Codegen: Move REX assert to comptime
2020-08-22 12:45:29 -07:00
Noam Preil
ad9df43e49
Tests: limit SPU-II cycle count
2020-08-22 12:45:29 -07:00
Noam Preil
f448b518f8
SPU-II: use undefined1 as breakpoint
2020-08-22 12:45:29 -07:00
Noam Preil
222e23c678
Linker: make defaults read-only
2020-08-22 12:45:29 -07:00
Noam Preil
096c5d5e4b
Tests: implement SPU-II harness
2020-08-22 12:45:29 -07:00
Noam Preil
fa1d18a155
Linker: fix GOT production on 16-bit targets
2020-08-22 12:45:29 -07:00
Noam Preil
f2796239ba
SPU-II: Fix logging in interp, remove JIT-compat code
2020-08-22 12:45:29 -07:00
Noam Preil
3a9af0c88b
SPU-II: Ignore @breakpoint for now
2020-08-22 12:45:29 -07:00