@@ -1268,6 +1268,7 @@ pub fn flushModule(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_nod
1268
1268
self .linker_defined_index = index ;
1269
1269
const object = self .linkerDefinedPtr ().? ;
1270
1270
try object .init (gpa );
1271
+ try object .initSymbols (self );
1271
1272
}
1272
1273
1273
1274
// Now, we are ready to resolve the symbols across all input files.
@@ -1276,9 +1277,6 @@ pub fn flushModule(self: *Elf, arena: Allocator, tid: Zcu.PerThread.Id, prog_nod
1276
1277
// Any qualifing unresolved symbol will be upgraded to an absolute, weak
1277
1278
// symbol for potential resolution at load-time.
1278
1279
try self .resolveSymbols ();
1279
- if (self .linkerDefinedPtr ()) | obj | {
1280
- try obj .initSymbols (self );
1281
- }
1282
1280
self .markEhFrameAtomsDead ();
1283
1281
try self .resolveMergeSections ();
1284
1282
@@ -1928,6 +1926,7 @@ pub fn resolveSymbols(self: *Elf) !void {
1928
1926
// Resolve symbols on the set of all objects and shared objects (even if some are unneeded).
1929
1927
for (self .objects .items ) | index | self .file (index ).? .resolveSymbols (self );
1930
1928
for (self .shared_objects .items ) | index | self .file (index ).? .resolveSymbols (self );
1929
+ if (self .linkerDefinedPtr ()) | obj | obj .asFile ().resolveSymbols (self );
1931
1930
1932
1931
// Mark live objects.
1933
1932
self .markLive ();
@@ -1936,6 +1935,7 @@ pub fn resolveSymbols(self: *Elf) !void {
1936
1935
if (self .zigObjectPtr ()) | zig_object | zig_object .asFile ().resetGlobals (self );
1937
1936
for (self .objects .items ) | index | self .file (index ).? .resetGlobals (self );
1938
1937
for (self .shared_objects .items ) | index | self .file (index ).? .resetGlobals (self );
1938
+ if (self .linkerDefinedPtr ()) | obj | obj .asFile ().resetGlobals (self );
1939
1939
1940
1940
// Prune dead objects and shared objects.
1941
1941
var i : usize = 0 ;
@@ -1968,9 +1968,10 @@ pub fn resolveSymbols(self: *Elf) !void {
1968
1968
}
1969
1969
1970
1970
// Re-resolve the symbols.
1971
- if (self .zigObjectPtr ()) | zig_object | zig_object .resolveSymbols (self );
1971
+ if (self .zigObjectPtr ()) | zig_object | zig_object .asFile (). resolveSymbols (self );
1972
1972
for (self .objects .items ) | index | self .file (index ).? .resolveSymbols (self );
1973
1973
for (self .shared_objects .items ) | index | self .file (index ).? .resolveSymbols (self );
1974
+ if (self .linkerDefinedPtr ()) | obj | obj .asFile ().resolveSymbols (self );
1974
1975
}
1975
1976
1976
1977
/// Traverses all objects and shared objects marking any object referenced by
0 commit comments