<div dir="ltr"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default"><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">Hi everyone,</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif"><br></font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">I'm working on some custom transformation passes that have the side-effect of</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">significantly increasing the code size. While testing it on some larger,</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">real-world code bases, I run into a linker error for armv7 thumb code. The</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">particular error I get from ld64 is that "armv7 has no pc-rel bx thumb</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">instruction." I've been able to reproduce the problem by taking a random</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">thumbv7 bitcode file and cloning functions until the linker fails.</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif"><br></font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">From looking at the ld64 source code it seems that the problem is caused by</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">the relocation for a thumb 22-bit pc-rel branch. I'm guessing that the linker</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">is unable to perform the relocation because the new address doesn't fit in the</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">instruction's 22 bits.</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif"><br></font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">I know very little about the arm backend, but I'm wondering if there's anything</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">I can do to prevent this from happening during compilation, before the linker</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">is involved?</font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif"><br></font></div><div class="gmail_default"><font color="#20124d" face="tahoma, sans-serif">Jonas</font></div></div></div></div></div>
</div>