Skip to content

Commit 969f2cf

Browse files
jacobly0andrewrk
authored andcommitted
Elf2: implement virtual allocation
This allows segments to be moved around in the output file without needing to reapply relocations until virtual address space is exhaused.
1 parent 2962db3 commit 969f2cf

File tree

5 files changed

+588
-608
lines changed

5 files changed

+588
-608
lines changed

CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -561,6 +561,7 @@ set(ZIG_STAGE2_SOURCES
561561
src/libs/libunwind.zig
562562
src/link.zig
563563
src/link/C.zig
564+
src/link/Coff.zig
564565
src/link/Dwarf.zig
565566
src/link/Elf.zig
566567
src/link/Elf/Archive.zig

src/Compilation.zig

Lines changed: 11 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -2718,35 +2718,17 @@ pub fn destroy(comp: *Compilation) void {
27182718
}
27192719
comp.crt_files.deinit(gpa);
27202720
}
2721-
2722-
if (comp.libunwind_static_lib) |*crt_file| {
2723-
crt_file.deinit(gpa);
2724-
}
2725-
if (comp.libcxx_static_lib) |*crt_file| {
2726-
crt_file.deinit(gpa);
2727-
}
2728-
if (comp.libcxxabi_static_lib) |*crt_file| {
2729-
crt_file.deinit(gpa);
2730-
}
2731-
if (comp.compiler_rt_lib) |*crt_file| {
2732-
crt_file.deinit(gpa);
2733-
}
2734-
if (comp.compiler_rt_obj) |*crt_file| {
2735-
crt_file.deinit(gpa);
2736-
}
2737-
if (comp.ubsan_rt_lib) |*crt_file| {
2738-
crt_file.deinit(gpa);
2739-
}
2740-
if (comp.ubsan_rt_obj) |*crt_file| {
2741-
crt_file.deinit(gpa);
2742-
}
2743-
if (comp.fuzzer_lib) |*crt_file| {
2744-
crt_file.deinit(gpa);
2745-
}
2746-
2747-
if (comp.zigc_static_lib) |*crt_file| {
2748-
crt_file.deinit(gpa);
2749-
}
2721+
if (comp.libcxx_static_lib) |*crt_file| crt_file.deinit(gpa);
2722+
if (comp.libcxxabi_static_lib) |*crt_file| crt_file.deinit(gpa);
2723+
if (comp.libunwind_static_lib) |*crt_file| crt_file.deinit(gpa);
2724+
if (comp.tsan_lib) |*crt_file| crt_file.deinit(gpa);
2725+
if (comp.ubsan_rt_lib) |*crt_file| crt_file.deinit(gpa);
2726+
if (comp.ubsan_rt_obj) |*crt_file| crt_file.deinit(gpa);
2727+
if (comp.zigc_static_lib) |*crt_file| crt_file.deinit(gpa);
2728+
if (comp.compiler_rt_lib) |*crt_file| crt_file.deinit(gpa);
2729+
if (comp.compiler_rt_obj) |*crt_file| crt_file.deinit(gpa);
2730+
if (comp.compiler_rt_dyn_lib) |*crt_file| crt_file.deinit(gpa);
2731+
if (comp.fuzzer_lib) |*crt_file| crt_file.deinit(gpa);
27502732

27512733
if (comp.glibc_so_files) |*glibc_file| {
27522734
glibc_file.deinit(gpa);

src/link.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1265,7 +1265,7 @@ pub const File = struct {
12651265

12661266
pub const Lld = @import("link/Lld.zig");
12671267
pub const C = @import("link/C.zig");
1268-
pub const Coff2 = @import("link/Coff2.zig");
1268+
pub const Coff2 = @import("link/Coff.zig");
12691269
pub const Elf = @import("link/Elf.zig");
12701270
pub const Elf2 = @import("link/Elf2.zig");
12711271
pub const MachO = @import("link/MachO.zig");

0 commit comments

Comments
 (0)