a038ef3570
Stuffing all the files together and compiling the resulting blob with the main program is a terrible idea. Some files, namely the .S ones, must be run trough the C preprocessor before assembling them (#2437). Beside that the aggregate may be mis-compiled due to the presence of some flags that affect the following code. For example let's consider two files, a.s and b.s a.s ``` fn1: ret .data data1: .word 0 ``` b.s ``` fn2: ret ``` Now, fn1 and fn2 will be both placed in the .text section as intended if the two files are compiled separately. But if we merge them the `.data` flag ends up placing fn2 in the wrong section! This fixes a nasty crash where musl's memset ended up in the non-executable data segment, leading to too many hours of head-scratching. |
||
---|---|---|
.. | ||
atomic | ||
build | ||
c | ||
crypto | ||
debug | ||
event | ||
fmt | ||
hash | ||
io | ||
json | ||
math | ||
meta | ||
os | ||
rand | ||
special | ||
valgrind | ||
zig | ||
array_list.zig | ||
ascii.zig | ||
atomic.zig | ||
base64.zig | ||
buf_map.zig | ||
buf_set.zig | ||
buffer.zig | ||
build.zig | ||
c.zig | ||
coff.zig | ||
crypto.zig | ||
cstr.zig | ||
debug.zig | ||
dwarf.zig | ||
dynamic_library.zig | ||
elf.zig | ||
event.zig | ||
fmt.zig | ||
hash_map.zig | ||
hash.zig | ||
heap.zig | ||
io.zig | ||
json.zig | ||
lazy_init.zig | ||
linked_list.zig | ||
macho.zig | ||
math.zig | ||
mem.zig | ||
meta.zig | ||
mutex.zig | ||
net.zig | ||
os.zig | ||
packed_int_array.zig | ||
pdb.zig | ||
priority_queue.zig | ||
rand.zig | ||
rb.zig | ||
segmented_list.zig | ||
sort.zig | ||
spinlock.zig | ||
statically_initialized_mutex.zig | ||
std.zig | ||
testing.zig | ||
unicode.zig | ||
valgrind.zig | ||
zig.zig |