Jakub Konka
acd700ac6b
elf: store ar state per input object file
2023-11-04 09:13:18 +01:00
Jakub Konka
ed2984f335
elf: do not align end of archive to 2bytes; fix archive parser
2023-11-04 09:13:07 +01:00
Jakub Konka
65adbec918
link: commit missing source StringTable.zig
2023-11-04 09:12:46 +01:00
Jakub Konka
33a0a72e87
elf: align ar_hdr to at least 2 bytes
2023-11-04 09:12:26 +01:00
Jakub Konka
875beb25b5
elf: fix writing symtab to an archive
2023-11-04 09:12:18 +01:00
Jakub Konka
3b9455f005
elf: generate pretty rudimentary archive
2023-11-04 09:12:07 +01:00
Jakub Konka
eddf9cc65b
elf: collect exports from ZigObject into AR symtab
2023-11-04 09:11:58 +01:00
Jakub Konka
481ee1b598
elf: enable static-lib flush path
2023-11-04 09:11:47 +01:00
Jakub Konka
ccb2afacc0
elf: postpone creation of .got.zig entry until code emit
2023-11-04 09:11:29 +01:00
Jakub Konka
5affd29b47
elf: use StringTable for strtab management in ZigObject
2023-11-04 09:11:22 +01:00
Jakub Konka
96f221236d
elf: fix r_offset when emitting relocs for the linker
2023-11-04 09:11:14 +01:00
Jakub Konka
7c5c59191e
elf: claim unresolved dangling symbols as undef externs when emitting object
2023-11-04 09:10:43 +01:00
Jakub Konka
dbe13200f1
elf: emit STT_SECTION symbols
2023-11-04 09:10:30 +01:00
Jakub Konka
8055f68765
elf: make sure we never emit .got.zig relocs when linking object files
2023-11-04 09:10:23 +01:00
Jakub Konka
e8f522122a
elf: fix properly updating .got.zig section
2023-11-04 09:10:14 +01:00
Jakub Konka
5698be3ef0
elf: write out contents of .rela sections
2023-11-04 09:10:06 +01:00
Jakub Konka
3606b5df3f
elf: improve Symbol to handle emitting relocatable object files
2023-11-04 09:09:57 +01:00
Jakub Konka
ec2671d16b
elf: update .rela section sizes; skip .got.zig when emitting object
2023-11-04 09:09:46 +01:00
Jakub Konka
21853bc310
elf: emit .rela shdrs for output sections
2023-11-04 09:09:35 +01:00
Jakub Konka
0ee2ab413f
elf: emit valid section headers table when building an object file
2023-11-04 09:09:26 +01:00
Jakub Konka
74f12d0691
elf: remove now obsolete allocateNonAllocSection helper
2023-11-04 09:09:14 +01:00
Jakub Konka
abf6c20cb9
elf: rename .rodata to .data.rel.ro and remove allocateAllocSection helper
2023-11-04 09:09:01 +01:00
Jakub Konka
b1136a695f
elf: remove now obsolete allocateSegment helper
2023-11-04 09:08:50 +01:00
Jakub Konka
1be94878e3
elf: generate invalid object file but with almost correct header
2023-11-04 09:08:38 +01:00
Jakub Konka
b8c8565e93
elf: implement --gc-sections for non-LLVM Zig source
2023-11-04 09:08:27 +01:00
Jakub Konka
25c53f08a6
elf: redo strings management in the linker
...
* atom names - are stored locally and pulled from defining object's
strtab
* local symbols - same
* global symbols - in principle, we could store them locally, but
for better debugging experience - when things go wrong - we
store the offsets in a global strtab used by the symbol resolver
2023-11-04 09:08:16 +01:00
Andrew Kelley
3fc6fc6812
std.builtin.Endian: make the tags lower case
...
Let's take this breaking change opportunity to fix the style of this
enum.
2023-10-31 21:37:35 -04:00
Jacob Young
d890e81761
mem: fix ub in writeInt
...
Use inline to vastly simplify the exposed API. This allows a
comptime-known endian parameter to be propogated, making extra functions
for a specific endianness completely unnecessary.
2023-10-31 21:37:35 -04:00
Jakub Konka
ea95c74948
elf: encapsulate ZigObject-specific logic in flushModule hook
2023-10-30 20:36:34 +01:00
Jakub Konka
b1a735ac65
elf: put init logic of ZigObject in init function
2023-10-30 19:44:27 +01:00
Jakub Konka
9bdbb6312f
elf: move incremental codegen bits into ZigObject.zig
2023-10-30 19:09:13 +01:00
Jakub Konka
b2e847a41a
elf: rename ZigModule to ZigObject
2023-10-30 19:09:13 +01:00
Jakub Konka
324a93e673
coff: implement enough of extern handling to pass comptime export tests
2023-10-30 12:44:50 +01:00
Jakub Konka
2e690f5c74
macho: implement enough of extern handling to pass comptime export tests
2023-10-30 00:09:32 +01:00
Jakub Konka
71dfea1f17
coff: implement exporting anon decls
2023-10-29 18:55:58 +01:00
Jakub Konka
a7a95ce9c4
macho: implement exporting anon decls
2023-10-29 18:55:58 +01:00
Jakub Konka
eaca72534c
elf: implement exporting anon decls
2023-10-29 18:55:58 +01:00
Jakub Konka
209fd8cb93
elf: add partial implementation of exporting anon decls
2023-10-29 18:55:58 +01:00
Jakub Konka
0d00b7c585
elf: set needs_got on generated extern vars
2023-10-28 03:48:18 -04:00
Jakub Konka
a6a10d9c2b
x86_64: do not hardcode memory passed by Elf linker
2023-10-28 03:48:18 -04:00
Andrew Kelley
4bc88dd116
link: support exporting constant values without a Decl
...
The main motivating change here is to prevent the creation of a fake
Decl object by the frontend in order to `@export()` a value.
Instead, `link.updateDeclExports` is renamed to `link.updateExports` and
accepts a tagged union which can be either a Decl.Index or a
InternPool.Index.
2023-10-26 20:32:16 -07:00
Andrew Kelley
cf9735a5e0
link: Coff, MachO, and Wasm all had the same UAF bug
2023-10-25 20:24:05 -07:00
Andrew Kelley
098a07dc45
link.Elf: fix UAF in lowerAnonDecl
...
The main problem being fixed here is there was a getOrPut() that held on
to a reference to the value pointer too long, and meanwhile the call to
`lowerConst` ended up being recursive and mutating the hash map,
invoking undefined behavior.
caught via #17719
2023-10-25 19:57:02 -07:00
Jacob Young
51f7e5412a
cbe: update DeclGen.decl_index to support anon decls
2023-10-25 19:57:02 -07:00
Jacob Young
ed00afbc4c
Coff: fix use after free
2023-10-25 12:23:21 -04:00
Jakub Konka
030da45c8e
elf: estimate max number of phdrs that can be emitted
2023-10-25 04:27:44 -04:00
Jakub Konka
e1248b693f
elf: allocate PHDR table always succeeding the EHDR
...
While this is a less flexible approach to being able to
allocated the PHDR anywhere in file, it is sadly generally expected
by the tooling in the wild.
2023-10-25 04:27:44 -04:00
Jakub Konka
0a04bd87ba
elf: use std.math.maxInt(u64) as signal that shdr/phdr not allocated yet
2023-10-25 04:27:44 -04:00
Jakub Konka
8087ec8e8c
elf: improve parsing of ld scripts and actually test linking against them
2023-10-24 19:03:00 +02:00
Andrew Kelley
794dc694b1
Merge pull request #17686 from ziglang/elf-non-nixos
...
elf: fix linking against system libc libs
2023-10-23 22:39:57 -04:00