Skip to content

Commit a09ba45

Browse files
authored
Merge pull request #17791 from ziglang/elf-object
elf: rename ZigModule to ZigObject and move all codegen hooks into it
2 parents 34aac2b + ea95c74 commit a09ba45

File tree

14 files changed

+1549
-1406
lines changed

14 files changed

+1549
-1406
lines changed

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -594,7 +594,7 @@ set(ZIG_STAGE2_SOURCES
594594
"${CMAKE_SOURCE_DIR}/src/link/Elf/Object.zig"
595595
"${CMAKE_SOURCE_DIR}/src/link/Elf/SharedObject.zig"
596596
"${CMAKE_SOURCE_DIR}/src/link/Elf/Symbol.zig"
597-
"${CMAKE_SOURCE_DIR}/src/link/Elf/ZigModule.zig"
597+
"${CMAKE_SOURCE_DIR}/src/link/Elf/ZigObject.zig"
598598
"${CMAKE_SOURCE_DIR}/src/link/Elf/eh_frame.zig"
599599
"${CMAKE_SOURCE_DIR}/src/link/Elf/file.zig"
600600
"${CMAKE_SOURCE_DIR}/src/link/Elf/gc.zig"

src/arch/aarch64/CodeGen.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4316,7 +4316,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
43164316
if (try self.air.value(callee, mod)) |func_value| {
43174317
if (func_value.getFunction(mod)) |func| {
43184318
if (self.bin_file.cast(link.File.Elf)) |elf_file| {
4319-
const sym_index = try elf_file.getOrCreateMetadataForDecl(func.owner_decl);
4319+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
43204320
const sym = elf_file.symbol(sym_index);
43214321
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
43224322
const got_addr = @as(u32, @intCast(sym.zigGotAddress(elf_file)));

src/arch/arm/CodeGen.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4302,7 +4302,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
43024302
if (try self.air.value(callee, mod)) |func_value| {
43034303
if (func_value.getFunction(mod)) |func| {
43044304
if (self.bin_file.cast(link.File.Elf)) |elf_file| {
4305-
const sym_index = try elf_file.getOrCreateMetadataForDecl(func.owner_decl);
4305+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
43064306
const sym = elf_file.symbol(sym_index);
43074307
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
43084308
const got_addr = @as(u32, @intCast(sym.zigGotAddress(elf_file)));

src/arch/riscv64/CodeGen.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1752,7 +1752,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
17521752
if (try self.air.value(callee, mod)) |func_value| {
17531753
switch (mod.intern_pool.indexToKey(func_value.ip_index)) {
17541754
.func => |func| {
1755-
const sym_index = try elf_file.getOrCreateMetadataForDecl(func.owner_decl);
1755+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
17561756
const sym = elf_file.symbol(sym_index);
17571757
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
17581758
const got_addr = @as(u32, @intCast(sym.zigGotAddress(elf_file)));

src/arch/sparc64/CodeGen.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1347,7 +1347,7 @@ fn airCall(self: *Self, inst: Air.Inst.Index, modifier: std.builtin.CallModifier
13471347
switch (mod.intern_pool.indexToKey(func_value.ip_index)) {
13481348
.func => |func| {
13491349
const got_addr = if (self.bin_file.cast(link.File.Elf)) |elf_file| blk: {
1350-
const sym_index = try elf_file.getOrCreateMetadataForDecl(func.owner_decl);
1350+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
13511351
const sym = elf_file.symbol(sym_index);
13521352
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
13531353
break :blk @as(u32, @intCast(sym.zigGotAddress(elf_file)));

src/arch/x86_64/CodeGen.zig

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ const Owner = union(enum) {
134134
const mod = ctx.bin_file.options.module.?;
135135
const decl_index = mod.funcOwnerDeclIndex(func_index);
136136
if (ctx.bin_file.cast(link.File.Elf)) |elf_file| {
137-
return elf_file.getOrCreateMetadataForDecl(decl_index);
137+
return elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, decl_index);
138138
} else if (ctx.bin_file.cast(link.File.MachO)) |macho_file| {
139139
const atom = try macho_file.getOrCreateAtomForDecl(decl_index);
140140
return macho_file.getAtom(atom).getSymbolIndex().?;
@@ -147,7 +147,7 @@ const Owner = union(enum) {
147147
},
148148
.lazy_sym => |lazy_sym| {
149149
if (ctx.bin_file.cast(link.File.Elf)) |elf_file| {
150-
return elf_file.getOrCreateMetadataForLazySymbol(lazy_sym) catch |err|
150+
return elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, lazy_sym) catch |err|
151151
ctx.fail("{s} creating lazy symbol", .{@errorName(err)});
152152
} else if (ctx.bin_file.cast(link.File.MachO)) |macho_file| {
153153
const atom = macho_file.getOrCreateAtomForLazySymbol(lazy_sym) catch |err|
@@ -10233,7 +10233,7 @@ fn genCall(self: *Self, info: union(enum) {
1023310233
.func => |func| {
1023410234
try mod.markDeclAlive(mod.declPtr(func.owner_decl));
1023510235
if (self.bin_file.cast(link.File.Elf)) |elf_file| {
10236-
const sym_index = try elf_file.getOrCreateMetadataForDecl(func.owner_decl);
10236+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, func.owner_decl);
1023710237
const sym = elf_file.symbol(sym_index);
1023810238
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
1023910239
if (self.bin_file.options.pic) {
@@ -13100,7 +13100,7 @@ fn genLazySymbolRef(
1310013100
lazy_sym: link.File.LazySymbol,
1310113101
) InnerError!void {
1310213102
if (self.bin_file.cast(link.File.Elf)) |elf_file| {
13103-
const sym_index = elf_file.getOrCreateMetadataForLazySymbol(lazy_sym) catch |err|
13103+
const sym_index = elf_file.zigObjectPtr().?.getOrCreateMetadataForLazySymbol(elf_file, lazy_sym) catch |err|
1310413104
return self.fail("{s} creating lazy symbol", .{@errorName(err)});
1310513105
const sym = elf_file.symbol(sym_index);
1310613106
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);

src/arch/x86_64/Emit.zig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,7 +86,7 @@ pub fn emitMir(emit: *Emit) Error!void {
8686
}),
8787
.linker_reloc => |data| if (emit.lower.bin_file.cast(link.File.Elf)) |elf_file| {
8888
const atom = elf_file.symbol(data.atom_index).atom(elf_file).?;
89-
const sym = elf_file.symbol(elf_file.zigModulePtr().symbol(data.sym_index));
89+
const sym = elf_file.symbol(elf_file.zigObjectPtr().?.symbol(data.sym_index));
9090
if (emit.lower.bin_file.options.pic) {
9191
const r_type: u32 = if (sym.flags.has_zig_got)
9292
link.File.Elf.R_X86_64_ZIG_GOTPCREL

src/codegen.zig

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -904,10 +904,10 @@ fn genDeclRef(
904904
else
905905
null;
906906
const sym_index = try elf_file.getGlobalSymbol(name, lib_name);
907-
elf_file.symbol(elf_file.zigModulePtr().symbol(sym_index)).flags.needs_got = true;
907+
elf_file.symbol(elf_file.zigObjectPtr().?.symbol(sym_index)).flags.needs_got = true;
908908
return GenResult.mcv(.{ .load_symbol = sym_index });
909909
}
910-
const sym_index = try elf_file.getOrCreateMetadataForDecl(decl_index);
910+
const sym_index = try elf_file.zigObjectPtr().?.getOrCreateMetadataForDecl(elf_file, decl_index);
911911
const sym = elf_file.symbol(sym_index);
912912
_ = try sym.getOrCreateZigGotEntry(sym_index, elf_file);
913913
return GenResult.mcv(.{ .load_symbol = sym.esym_index });

0 commit comments

Comments
 (0)