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
Jacob G-W
db2d5b49c6
plan9 linker: use a global offset table
...
this simplifies stuff and makes us not have to use relocations
2021-07-08 14:12:07 -07:00
Jacob G-W
166dffb088
plan9 linker: correct runtime vs file offset converting code
2021-07-08 14:10:50 -07:00
Jacob G-W
72bb6bb143
plan9 linker: produce an object file that can actually work!!!
2021-07-08 14:10:49 -07:00
Jacob G-W
3e59c15025
plan9 linker: do relocations
2021-07-08 14:10:49 -07:00
Jacob G-W
c114474190
plan9 linker: write symbol table
...
Also switch to iovecs because gotta go fast.
2021-07-08 14:10:49 -07:00
Jacob G-W
798162e509
plan9 linker: make runnable binaries
...
We can now run binaries! (they segfault, but still run!)
2021-07-08 14:10:49 -07:00
jacob gw
34c21affa2
initial plan9 boilerplate
...
The code now compiles and fails with Plan9ObjectFormatUnimplemented
2021-07-08 14:10:49 -07:00