Commit Graph

6249 Commits

Author SHA1 Message Date
Jakub Konka
7aefea614f zld: fix allocating tentative defs 2021-07-15 18:49:47 +02:00
Jakub Konka
3bdb3b574e zld: turn logging off 2021-07-15 18:49:47 +02:00
Jakub Konka
dd5c7588d1 zld: fix resolving TLV offset relocations 2021-07-15 18:49:47 +02:00
Jakub Konka
322be2698d zld: TextBlock needs to be written to an aligend offset too 2021-07-15 18:49:47 +02:00
Jakub Konka
bb5b82cab9 zld: dedup symbols in the symbol table 2021-07-15 18:49:47 +02:00
Jakub Konka
0cc4938419 zld: re-enable all of linker after complete rewrite 2021-07-15 18:49:47 +02:00
Jakub Konka
12187586d1 zld: fix alloc alignment and resolve relocs 2021-07-15 18:49:47 +02:00
Jakub Konka
961b463fad zld: track symbols defined within TextBlock
in case TextBlock represents an entire section with symbols
defined within.
2021-07-15 18:49:47 +02:00
Jakub Konka
7aeedc0912 zld: allocate TextBlocks
temporarily by iterating over all defined TextBlocks. However,
once we merge this with MachO incremental, updates will be done
at the point of creation and/or update.

Also, fix mining TLV knowledge for working out TLV pointers.
2021-07-15 18:49:47 +02:00
Jakub Konka
e524f43a6f zld: save rebase and TLV offset as part of TextBlock
instead of as part of the Symbol. This seems to be more
optimal way of handling dyld ops in presence of no splittable
input sections in object files.
2021-07-15 18:49:47 +02:00
Jakub Konka
7c662db8d9 zld: keep text blocks per segment,section pair 2021-07-15 18:49:47 +02:00
Jakub Konka
a04bc1ed14 zld: update relocs and start prepping for segment allocs 2021-07-15 18:49:47 +02:00
Jakub Konka
dfa69e3c30 zld: dealloc TextBlock if omitted 2021-07-15 18:49:47 +02:00
Jakub Konka
555b66c255 zld: move should_rebase logic into Symbol 2021-07-15 18:49:47 +02:00
Jakub Konka
dbd2eb7c7f zld: simplify relocation parsing 2021-07-15 18:49:47 +02:00
Jakub Konka
15b85df3dd zld: parse relocs per generated TextBlock 2021-07-15 18:49:47 +02:00
Jakub Konka
54888c6f46 zld: create TextBlocks for tentative definitions
and fix the links in the `TextBlock`s linked list!
2021-07-15 18:49:47 +02:00
Jakub Konka
51e334af44 zld: refactor section into TextBlocks conversion 2021-07-15 18:49:47 +02:00
Jakub Konka
7b4063d558 zld: convert section in linked list of TextBlocks 2021-07-15 18:49:47 +02:00
Jakub Konka
5649242025 zld: draft up final format of TextBlock 2021-07-15 18:49:47 +02:00
Jakub Konka
5b3c4691e6 zld: put relocs in a TextBlock 2021-07-15 18:49:47 +02:00
Jakub Konka
453c16d8ac zld: draft out splitting sections into blocks 2021-07-15 18:49:47 +02:00
Jakub Konka
669ac92af0 zld: fix ast errors 2021-07-15 18:49:47 +02:00
Jakub Konka
3bd9f38017 zld: reenable entire linker in the new scheme
without the stabs... They are tricky and need a bit more work.
2021-07-15 18:49:47 +02:00
Jakub Konka
7c82079d2c zld: allocate symbols using the new scheme 2021-07-15 18:49:47 +02:00
Jakub Konka
ceb431507d zld: resolve symbols in dylibs using new scheme 2021-07-15 18:49:47 +02:00
Jakub Konka
989639efba zld: coalesce symbols on creation 2021-07-15 18:49:47 +02:00
Jakub Konka
980f2915fa zld: use index to symbol in reloc
instead of pointer to the Symbol struct in the hope that we
can overwrite the Symbol in the object's symbol table with the
resolved Symbol later down the line.
2021-07-15 18:49:46 +02:00
Jakub Konka
ee6e25bc13 zld: add Symbol.Stab and move nlist creation logic there 2021-07-15 18:49:46 +02:00
Jakub Konka
2b3bda43e3 zld: abstract Symbol creation logic 2021-07-15 18:49:46 +02:00
Jakub Konka
3622fe08db zld: abstract away string table with fewer allocs 2021-07-15 18:49:46 +02:00
Jakub Konka
9c3ebe0216 zld: clean up logic for creating mach header 2021-07-15 18:49:46 +02:00
Jakub Konka
e08f7ba889 zld: remove redundant codepaths 2021-07-15 18:49:46 +02:00
leesongun
132b18e2b3 Fix bigint_shl (#9305) 2021-07-13 10:16:57 +03:00
Jacob G-W
74972531b5 fix doc comment in translate_c 2021-07-13 10:12:31 +03:00
Andrew Kelley
28dd9d478d C backend: TypedefMap is now ArrayHashMap
The C backend depends on insertion order into this map so that type
definitions will be declared before they are used.
2021-07-12 12:40:32 -07:00
Martin Wickham
bd1689ae89 Remove Stage1AirInst::owner_bb, use zir owner instead. 2021-07-11 19:16:57 -05:00
Andrew Kelley
7ef8546826 Merge pull request #9352 from g-w1/fix-9346
stage2 astgen: error for return outside of function scope
2021-07-11 15:11:28 -04:00
Jacob G-W
b0b9c3c2dc stage2: remove redundancy from error message
invalid 'try' outside function scope ->
'try' outside function scope
2021-07-11 10:03:47 -04:00
Jacob G-W
18770721ac stage2 astgen: error for return outside of function scope 2021-07-11 10:03:35 -04:00
Martin Wickham
75d1b113aa Rename IrInstSrc to Stage1ZirInst and IrInstGen to Stage1AirInst 2021-07-11 02:00:04 -04:00
Jacob G-W
968d1ecf17 stage2 plan9: add aarch64 support 2021-07-11 01:58:26 -04:00
Andrew Kelley
40764650af stage1: avoid wasting padding with IR instruction tag
For stage1 ZIR instructions and stage1 AIR instructions, the instruction
op code was taking up 8 bytes due to padding even though it only needed
1 byte. This commit reduces the ref_count field from uint32_t to
uint16_t because the code only really cares if instructions are
referenced at all, not how many times they are referenced. With the
ref_count field reduced to uint16_t the uint8_t op code is now placed in
the freed up space.

Empirically, this saves 382 MiB of peak RAM usage when building the
self-hosted compiler, which is a reduction of 5%. Consequently this
resulted in a 3% reduction of cache-misses when building the self-hosted
compiler.

This was @SpexGuy's idea, committed by me because we tested it on my
computer.
2021-07-10 15:38:13 -07:00
Takeshi Yoneda
b9e896d7b0 wasi-libc: remove crt1.o as it's not WASI ABI compatible
Signed-off-by: Takeshi Yoneda <takeshi@tetrate.io>
2021-07-11 00:06:47 +02:00
Martin Wickham
2d855745f9 Fix libc include directories for the MSVC target 2021-07-10 17:00:42 -04:00
Martin Wickham
84a544f96c Fix argument forwarding to LLVM on Windows 2021-07-10 15:58:38 -04:00
Andrew Kelley
476faef97a plan9 cleanups
* rename files to adhere to conventions
 * remove unnecessary function / optionality
 * fix merge conflict
 * better panic message
 * remove unnecessary TODO comment
 * proper namespacing of declarations
 * clean up documentation comments
 * no copyright header needed for a brand new zig file that is not
   copied from anywhere
2021-07-08 14:24:16 -07:00
Jacob G-W
4eb778fc3e plan9 linker: remove unused stuff 2021-07-08 14:12:08 -07:00
Jacob G-W
1c2facaf6b stage2: include enough inline asm support for more plan9 syscalls
Also make the exit more correct by exiting 0 rather than random
stuff on the stack.
2021-07-08 14:12:08 -07:00
Jacob G-W
f1aadfa77b plan9 linker: remove panics and improve 64 bit support
Don't @intCast when we do not need to, and change
some panics to unreachable when they can never happen.
2021-07-08 14:12:08 -07:00