Openwall GNU/*/Linux - a small security-enhanced Linux distro for servers
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date: Wed, 18 Sep 2019 07:28:44 -0700
From: Khem Raj <raj.khem@...il.com>
To: musl@...ts.openwall.com
Cc: Andre McCurdy <armccurdy@...il.com>
Subject: Re: [PATCH] arm: avoid conditional branch to PLT in sigsetjmp.s

On Tue, Sep 17, 2019 at 11:04 PM Andre McCurdy <armccurdy@...il.com> wrote:
>
> The R_ARM_THM_JUMP19 relocation type generated for the original code
> when targeting Thumb 2 is not supported by the gold linker:
>
>  | .../arm-oe-linux-musleabi/9.2.0/ld: error: conditional branch to PLT in THUMB-2 not supported yet.
>  | src/signal/arm/sigsetjmp.s:9: error: unexpected opcode while processing relocation R_ARM_THM_JUMP19

if it is thumb2 specific another option could be to use `it eq` before
beq which should turn branch into an unconditional branch, which then
uses R_ARM_THM_JUMP24 relocation that has a range of 16MB.

> ---
>  src/signal/arm/sigsetjmp.s | 5 +++--
>  1 file changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/src/signal/arm/sigsetjmp.s b/src/signal/arm/sigsetjmp.s
> index 318addba..69ebbf49 100644
> --- a/src/signal/arm/sigsetjmp.s
> +++ b/src/signal/arm/sigsetjmp.s
> @@ -6,9 +6,10 @@
>  sigsetjmp:
>  __sigsetjmp:
>         tst r1,r1
> -       beq setjmp
> +       bne 1f
> +       b setjmp
>
> -       str lr,[r0,#256]
> +1:     str lr,[r0,#256]
>         str r4,[r0,#260+8]
>         mov r4,r0
>
> --
> 2.23.0
>

Powered by blists - more mailing lists

Your e-mail address:

Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.