diff options
| author | Jakub Konka <kubkon@jakubkonka.com> | 2023-10-25 23:25:56 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-10-25 23:25:56 +0200 |
| commit | cc394431ae6eb69e7abd677c268a8ab7299f8aeb (patch) | |
| tree | d5aa705cdc7d701b53f32a8c2acc099c2dbd90c5 /src/codegen.zig | |
| parent | 10ea7accf76d4ad59222ea5ff3585d6cc7cfe3b0 (diff) | |
| parent | ed00afbc4c1eec6d599ac277e364b4a1ed11fe5c (diff) | |
| download | zig-cc394431ae6eb69e7abd677c268a8ab7299f8aeb.tar.gz zig-cc394431ae6eb69e7abd677c268a8ab7299f8aeb.zip | |
Merge pull request #17699 from ziglang/elf-better-alloc
elf: allocated PHDR table always immediately succeeding the EHDR
Diffstat (limited to 'src/codegen.zig')
| -rw-r--r-- | src/codegen.zig | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/codegen.zig b/src/codegen.zig index 72084c3741..051c2b33b3 100644 --- a/src/codegen.zig +++ b/src/codegen.zig @@ -850,7 +850,7 @@ fn genDeclRef( bin_file: *link.File, src_loc: Module.SrcLoc, tv: TypedValue, - decl_index: Module.Decl.Index, + ptr_decl_index: Module.Decl.Index, ) CodeGenError!GenResult { const mod = bin_file.options.module.?; log.debug("genDeclRef: ty = {}, val = {}", .{ tv.ty.fmt(mod), tv.val.fmtValue(tv.ty, mod) }); @@ -859,6 +859,12 @@ fn genDeclRef( const ptr_bits = target.ptrBitWidth(); const ptr_bytes: u64 = @divExact(ptr_bits, 8); + const ptr_decl = mod.declPtr(ptr_decl_index); + const decl_index = switch (mod.intern_pool.indexToKey(try ptr_decl.internValue(mod))) { + .func => |func| func.owner_decl, + .extern_func => |extern_func| extern_func.decl, + else => ptr_decl_index, + }; const decl = mod.declPtr(decl_index); if (!decl.ty.isFnOrHasRuntimeBitsIgnoreComptime(mod)) { |
