Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-19 Thread Rui Salvaterra
Good morning, Jason! On Fri, 19 Jun 2020 at 00:50, Jason A. Donenfeld wrote: > > Hey Rui, > > I fixed it! It turned out to be caused by -fvisibility=hidden undoing > the effect of the binutils fix from a while back. Here's the patch > that makes the problem go away: > >

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-18 Thread Jason A. Donenfeld
Hey Rui, I fixed it! It turned out to be caused by -fvisibility=hidden undoing the effect of the binutils fix from a while back. Here's the patch that makes the problem go away: https://git.zx2c4.com/wireguard-linux-compat/commit/?id=178cdfffb99f2fd6fb4a5bfd2f9319461d93f53b This will be in the

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-17 Thread Jason A. Donenfeld
On Wed, Jun 17, 2020 at 02:45:12PM -0600, Jason A. Donenfeld wrote: > Looks like my explanation there wasn't 100% accurate, but it does seem > like the issue occurs when gcc sees a clear tail call that it can > optimize into a B instruction instead of a BL instruction. > > The below patch avoids

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-17 Thread Jason A. Donenfeld
On Wed, Jun 17, 2020 at 02:33:49PM -0600, Jason A. Donenfeld wrote: > So, some more research: it looks like the R_ARM_THM_JUMP11 symbol is > actually wg_packet_send_staged_packets, a boring C function with > nothing fancy about it. That github issue you pointed to suggested > that it might have

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-17 Thread Jason A. Donenfeld
So, some more research: it looks like the R_ARM_THM_JUMP11 symbol is actually wg_packet_send_staged_packets, a boring C function with nothing fancy about it. That github issue you pointed to suggested that it might have something to do with complex crypto functions, but it looks like that's not

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-17 Thread Jason A. Donenfeld
Hi Rui, On Wed, Jun 17, 2020 at 7:19 AM Rui Salvaterra wrote: > After a bit more digging [1], I believe I've narrowed it down. > CONFIG_THUMB2_AVOID_R_ARM_THM_JUMP11=y is required in order to avoid > the emission of R_ARM_THM_JUMP11 relocations in the WireGuard module. > I'm now wondering why

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-17 Thread Rui Salvaterra
Hi again, Jason, On Wed, 10 Jun 2020 at 11:09, Jason A. Donenfeld wrote: > > Eventually I can probably get this building and testing and find some > hardware for this and such. But if you'd like things to move faster, > trying to reproduce the issue in the qemu test suite will result in a >

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-10 Thread Jason A. Donenfeld
On Wed, Jun 10, 2020 at 4:05 AM Rui Salvaterra wrote: > > Hi, Jason, > > On Wed, 10 Jun 2020 at 10:31, Rui Salvaterra wrote: > > > > Good question. :) You're testing in QEMU (which I personally never > > used), right? I don't know how familiar you are with OpenWrt, but I > > can surely send you

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-10 Thread Rui Salvaterra
Hi, Jason, Thanks for the quick reply! On Wed, 10 Jun 2020 at 10:20, Jason A. Donenfeld wrote: > > Is there some config combination you can stick into the test harness > to repro what you're seeing? Good question. :) You're testing in QEMU (which I personally never used), right? I don't know

Re: [OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-10 Thread Jason A. Donenfeld
Hi Rui, I'm unable to reproduce this: $ git clone https://git.zx2c4.com/wireguard-linux-compat $ ARCH=arm make -C wireguard-linux-compat/src test-qemu -j$(nproc) [... big test suite ...] $ vim wireguard-linux-compat/qemu-build/arm/linux-5.5.14/.config [... enable CONFIG_THUMB2_KERNEL=y ...] $

[OpenWrt-Devel] wireguard: unknown relocation: 102 [ARMv7 Thumb-2]

2020-06-10 Thread Rui Salvaterra
Hi, Jason, I'm trying to build OpenWrt master with Thumb-2 instructions for my Turris Omnia (both kernel and userspace) with GCC 9.3.0 and Binutils 2.34 from the toolchain. [1] Everything seems to work apart from WireGuard, for some reason the module won't load, throwing the relocation error in