Commit Graph

9946 Commits (4269868d6a98a9b868827c2fc7e67d2f9b359647)

Author SHA1 Message Date
Andrew Kelley 4269868d6a update install files for LLVM 11rc1 2020-08-04 17:52:26 -07:00
Andrew Kelley 372062b4fe libunwind: update from LLVM 10 to 11rc1 2020-08-04 17:39:29 -07:00
Andrew Kelley 42da1d385d libcxxabi: upgrade from llvm 10 to 11rc1 2020-08-04 17:30:57 -07:00
Andrew Kelley 54b67c2025 libcxx: update from LLVM 10 to 11rc1 2020-08-04 17:26:02 -07:00
Andrew Kelley 16513fee6c update C lib/include/ files from clang 10 to 11rc1 2020-08-04 17:17:48 -07:00
Andrew Kelley c6e0df6213 Merge remote-tracking branch 'origin/master' into llvm11 2020-08-04 17:09:40 -07:00
Andrew Kelley d61a9e37ae stage2 tests: fix qemu logic
I made two mistakes in the previous commit; it was not actually using
the argv that we built, and also the qemu logic was unconditionally
skipping the test.

Now I have verified that when mangling the RISC-V "hello world" test and
then using -Denable-qemu, we get a test failure.
2020-08-04 15:39:59 -07:00
Andrew Kelley e4eb4396c2 Merge branch 'pfgithub-stage2-testing-Copy-2' 2020-08-04 15:32:41 -07:00
Andrew Kelley c594f8dc26 stage2 tests: support the -Denable-qemu options and friends 2020-08-04 15:32:16 -07:00
Andrew Kelley 02d09d1328 codegen: introduce toCanonicalReg to clean up x86-specific logic 2020-08-04 15:31:54 -07:00
pfg ea3cc777cc stage2: riscv test case 2020-08-04 14:38:33 -07:00
pfg e3352db986 stage2: riscv correctly aligned functions 2020-08-04 14:38:33 -07:00
pfg 0b53a2d996 stage2: riscv 0 argument non-nested function calls 2020-08-04 14:38:33 -07:00
pfg 1fd99ed324 stage2: riscv hello world 2020-08-04 14:38:33 -07:00
pfg 52ae2b10aa stage2: starting on a riscv64 backend 2020-08-04 14:38:33 -07:00
Andrew Kelley 952a397b0e
Merge pull request #5978 from ziglang/stage2-dwarf-incr
self-hosted: line number debug information
2020-08-04 20:53:47 +00:00
Andrew Kelley 331f6a07a9 stage2: fix ZIR support and C back end 2020-08-04 12:15:47 -07:00
Andrew Kelley b7a883b7d1 stage2: link: fix not freeing debug line free list 2020-08-04 12:15:47 -07:00
Andrew Kelley ca19c42b74 stage2: fix updating debug line info not resizing properly 2020-08-04 12:15:47 -07:00
Andrew Kelley 7d70774fde stage2: fix memory leak with exported decl name 2020-08-04 12:15:47 -07:00
Andrew Kelley 0d696a48da stage2 .debug_line: handle Decl line numbers changing 2020-08-04 00:22:11 -07:00
Andrew Kelley 30ee08dfc2 stage2: stop needlessly re-analyzing unchanged functions 2020-08-03 23:47:54 -07:00
Andrew Kelley cb25d8e4bc stage2 .debug_line: handle Decl deletes and updates 2020-08-03 23:13:54 -07:00
Andrew Kelley 9b3a70c8aa stage2: move link.File.ELF.SrcFn field from Module.Fn to Module.Decl
SrcFn represents the function in the linked output file, if the
`Decl` is a function. This is stored here and not in `Fn` because `Decl`
survives across updates but `Fn` does not.

TODO Look into making `Fn` a longer lived structure and moving this field there
to save on memory usage.
2020-08-03 22:22:47 -07:00
Andrew Kelley 0c598100d8 stage2: fix use-after-free of export symbol name 2020-08-03 22:07:21 -07:00
Andrew Kelley edfede575c self-hosted: add build option for log scopes
Now you can enable a set of log scopes by passing -Dlog=<scope>
2020-08-03 21:56:21 -07:00
Andrew Kelley a33efc74ed stage2 codegen: revert the unneeded is_stmt stuff 2020-08-03 21:09:58 -07:00
Andrew Kelley d624bf8059 stage2 .debug_line stepping with gdb is working 2020-08-03 21:01:06 -07:00
Andrew Kelley ac10841fa9 stage2 .debug_line: simpler strategy for incremental compilation
See #5963
2020-08-03 19:14:09 -07:00
Vexu 4ab2f947f9
translate-c: recognize other type trait expressions
Closes #5979
2020-08-04 00:48:29 +03:00
Andrew Kelley 4e023c6fa8 stage2: dwarf: fix standard opcode length of LNS_fixed_advance_pc 2020-08-03 00:54:30 -07:00
Andrew Kelley eccbb03063 downgrade .debug_info to DWARFv4
gdb, notice me senpai
2020-08-03 00:42:08 -07:00
Andrew Kelley bf85d3db3f downgrade .debug_line to DWARFv4
apparently gdb 8.3.1 which is still a commonly distributed version of gdb,
does not support v5.
2020-08-03 00:34:12 -07:00
Andrew Kelley 659603c621 codegen: emit .debug_line ops for IR instructions 2020-08-02 21:28:06 -07:00
Andrew Kelley 42d331b58a .debug_line: avoid DW_FORM_strp to work around readelf/gdb
These tools do not support DWARFv5 yet apparently.
2020-08-02 20:22:41 -07:00
Andrew Kelley 1ce6e201aa .debug_line: don't rely on header_length field
Empirically, debug info consumers do not respect this field, or otherwise
consider it to be an error when it does not point exactly to the end of the header.
Therefore we rely on the NOP jump at the beginning of the Line Number Program for
padding rather than this field.

llvm-dwarfdump says the line number data is fine; gdb and
binutils-readelf crap out.
2020-08-02 19:57:42 -07:00
Andrew Kelley 1a3f250f19 .debug_line incremental compilation initial support
Supports writing the first function. Still TODO is:
 * handling the .debug_line header growing too large
 * adding a new file to an existing compilation
 * adding an additional function to an existing file
 * handling incremental updates
 * adding the main IR debug ops for IR instructions

There are also issues to work out:
 * readelf --debug-dump=rawline is saying there is no .debug_str section
   even though there is
 * readelf --debug-dump=decodedline is saying the file index 0 is bad
   and reporting some other kind of corruption.
2020-08-02 19:25:26 -07:00
Andrew Kelley ba6e5cbfd2 stage2: add the .debug_line header and associated data types
* the .debug_line header is written properly
 * link.File.Elf gains:
   - SrcFn, which is now a field in Module.Fn
   - SrcFile, which is now a field in Module.Scope.File
 * link.File.Elf gets a whole *Package field rather than only
   root_src_dir_path.
 * the fields first_dbg_line_file and last_dbg_line_file tell where the
   Line Number Program begins and ends, which alows moving files when
   the header gets too big, and allows appending files to the end.
 * codegen is passed a buffer for emitting .debug_line
   Line Number Program opcodes for functions.

See #5963

There is some work-in-progress code here, but I need to go make some
experimental changes to changing how to represent source locations and I
want to do that in a separate commit.
2020-08-02 12:02:43 -07:00
Andrew Kelley c0654d2db2 std.dwarf: add LNCT constants from DWARF v5 2020-08-02 11:09:39 -07:00
Andrew Kelley d4bb2b1513 std: add function for writing fixed width ULEB128 2020-08-02 11:09:35 -07:00
Isaac Freund 6123201f06 stage2: move format-specific code to link.File.X
This makes the code outside of link.File.Elf less elf-specific and will
allow for easier implementation of other formats such as wasm.
2020-08-02 18:07:10 +00:00
S0urc3C0de 5ae88e919b Add rdynamic option to build.zig 2020-08-02 17:50:06 +00:00
Vexu 6bba7c702b add compile error for alignCasting zero sized types 2020-08-02 17:49:16 +00:00
Andrew Kelley 35391f1709
Merge pull request #5968 from haliucinas/blake2
Blake2 improvements
2020-08-02 17:47:06 +00:00
Andrew Kelley 6df35c5877
Merge pull request #5960 from kubkon/windows-dir-refactor
Refactor out file and dir creation routines in Windows
2020-08-02 17:41:47 +00:00
Jakub Konka 4b0ab0c186
Apply suggestions from code review
Co-authored-by: Andrew Kelley <andrew@ziglang.org>
2020-08-02 19:36:49 +02:00
Jay Petacat cf15b4c269 elf: Iterate over headers w/o need for allocator 2020-08-01 16:01:48 +00:00
Mantas Jonytis 1df33936d6 remove unnecessary operations 2020-08-01 17:15:53 +03:00
Mantas Jonytis 8286cc77f8 implement keyed blake2 2020-08-01 16:56:11 +03:00
Mantas Jonytis 36ed4623a8 make blake2 public 2020-08-01 16:05:20 +03:00