From c53b253261a0fe3a9f63daff5cf3b50126017c8d Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Thu, 9 Jul 2020 08:52:35 -0500 Subject: [PATCH] Fix debug information relocation (when imports present) (#1997) --- crates/obj/src/builder.rs | 4 +++- tests/all/debug/testsuite/fraction-norm.cc | 8 ++++---- tests/all/debug/testsuite/fraction-norm.wasm | Bin 2065 -> 2289 bytes 3 files changed, 7 insertions(+), 5 deletions(-) diff --git a/crates/obj/src/builder.rs b/crates/obj/src/builder.rs index ef4f33e945..bb8197efaf 100644 --- a/crates/obj/src/builder.rs +++ b/crates/obj/src/builder.rs @@ -448,7 +448,9 @@ impl<'a> ObjectBuilder<'a> { let section_id = *dwarf_sections_ids.get(name).unwrap(); for reloc in relocs { let target_symbol = match reloc.target { - DwarfSectionRelocTarget::Func(index) => func_symbols[FuncIndex::new(index)], + DwarfSectionRelocTarget::Func(index) => { + func_symbols[module.local.func_index(DefinedFuncIndex::new(index))] + } DwarfSectionRelocTarget::Section(name) => { obj.section_symbol(*dwarf_sections_ids.get(name).unwrap()) } diff --git a/tests/all/debug/testsuite/fraction-norm.cc b/tests/all/debug/testsuite/fraction-norm.cc index c896c38238..ef4aab66ba 100644 --- a/tests/all/debug/testsuite/fraction-norm.cc +++ b/tests/all/debug/testsuite/fraction-norm.cc @@ -1,6 +1,6 @@ // Compile with: -// clang++ --target=wasm32 fraction-norm.cc -o fraction-norm.wasm -g \ -// -O0 -nostdlib -fdebug-prefix-map=$PWD=. +// clang++ --target=wasm32-wasi fraction-norm.cc -o fraction-norm.wasm -g \ +// -O0 -fdebug-prefix-map=$PWD=. struct Fraction { long numerator; @@ -32,9 +32,9 @@ void norm(Fraction &n) } } -extern "C" -void _start() +int main() { Fraction c = {6, 27}; norm(c); + return 0; } diff --git a/tests/all/debug/testsuite/fraction-norm.wasm b/tests/all/debug/testsuite/fraction-norm.wasm index 23f34181a512f2750d7d2b224e7803a85c866644..14c730a0d8740d6d6c163327adb4f96305ce0ee6 100755 GIT binary patch delta 857 zcmYjQ&ubGw6n-n-Nd!o-LRY53c{we zwu*QND_%Slf1K<=Jb4vS5cTFkPyPpjp1k^As>Ox*-uvEseDBRNGq8UZFMyi_3;0G9F!JGAB|zLSJ*H@P15oNnyh^u4v2k!~C{9dF(50SL=v47gxyFnOZ> z%rH5~X~t4}qu=j?eTT3N_6|k9py2!{D6oeO&O;+D9zp^&qW)3xH4~$ zPi5Fri7|--7Qo&n#Xd?o#$d5;Nz1@LaSRvia9LaSuC2BmKWs(6v7%8KvMXXTtz*JC zmVSWPy-maxe30KAW?v9BKCs>p8-Ksgw735=ct>o4_CTLSqjgM%W*eB?!^Lv6Nv0nT z7#MpfZ2_dD<-3n)XX-N|wu6tvj(WnW(MT;{^cee zt~UDj#IYN;y@U=qgAHlE7r3Z-QD6})0{mWPk+yQV#)@p*SU4gIr{x*BR5~|-6I4JH z&Ppj!Y{OCs2Pm;QDGE}O2p~6#f~69Xd87b85B_(@54}cqR6oh;*(Louo6Ty*`~-Cu zQ%uk2_)JL`*40gZ81UYG%{GjuX5jiE_+eHx>uIcoZs4&M3v9<3Uf+Yu%8J8E;56M% z$7%MWIN^qq^xU{7v@nVTZN$BnR69}Fp4P`4CyM>HAG#ff{0)71H3)8*;|@K8t{Zz! VD~k6Y!9zwbVtKXc#o4xb{|^U*u228~ delta 547 zcmYk2F=$jl5Qb-VcHi5VO)gIlMGeYZc^n3U7!W-a#4CefpF)y5?hJ{!caYOAnip(r zEFKFYf*jaLDzOl&h+2q^rEQROf)-i}I&(pB;h&vvX832>ABU>+B(#Tp1OS|(W!wT5 zZY=|lCO}nPo1=Y0)$=B9S6@!y_RHV7qAtauLB3->Wh$dJuQTmU3w)GCv#NYhmf+*e zWbs7>nMq4N&`Q1KVY}v&EXl{EY3HU9TBUV1;s?yI;1{~H-CpO;%F=3abMP(fQsX*t z9TkB74m8>nNJ&+bPsiCuj#^drjnLtD2c+NrPw-yoxb(o7Ft3l^kX$@INM~Z)QTKR7 zmzme7(IaW(Vk`@=@rffu4>=ee3t00?BAR5xw>V$~$&TdVg+6v#9dY!Oi&Lf3A zvxg?^M$H-7Lphqs2{m6gWETzIS4RL5K8ITT%q$IWw>QG;_?-8;X!m<~f