Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 21 Aug 2020 14:49:36 +0200
From:      =?UTF-8?B?VMSzbA==?= Coosemans <tijl@FreeBSD.org>
To:        Gleb Popov <arrowd@freebsd.org>
Cc:        Dimitry Andric <dim@freebsd.org>, toolchain@freebsd.org
Subject:   Re: Undefined reference to __bswapsi2/__bswapdi2
Message-ID:  <20200821144936.4d5201e2@FreeBSD.org>
In-Reply-To: <CALH631mnsKVEduCDnmcEgDTfvQ6c8Vp6_jf-=ywKpnZDj8cxSw@mail.gmail.com>
References:  <CALH631mXOLvLrrMcB3rfqQT5c%2BEEMRBnGgEBSEooHJYELOE9Fw@mail.gmail.com> <CALH631==P4bA27wV1V1U8gUPff4RrmFd=ReRV8OeiZHHsppA5w@mail.gmail.com> <4616D1DE-55B4-43AA-B8D9-A3C0513C9BC1@FreeBSD.org> <CALH631mnsKVEduCDnmcEgDTfvQ6c8Vp6_jf-=ywKpnZDj8cxSw@mail.gmail.com>

index | next in thread | previous in thread | raw e-mail

On Fri, 21 Aug 2020 14:54:35 +0400 Gleb Popov <arrowd@freebsd.org> wrote:
> On Thu, Aug 20, 2020 at 11:53 PM Dimitry Andric <dim@freebsd.org> wrote:
>> On 20 Aug 2020, at 19:52, Gleb Popov <arrowd@freebsd.org> wrote:
>>> On Wed, Aug 19, 2020 at 10:15 PM Gleb Popov <arrowd@freebsd.org> wrote:
>>>> I'm building the latest GHC on 12.1-RELEASE i386 and having almost the
>>>> same problem as with atomic functions. This time the error is
>>>>
>>>> d: error: undefined symbol: __bswapsi2
>>>> >>> referenced by TTY.c
>>>> >>>              RTS.thr_p_o:(rtsSyms) in archive
>>>> /wrkdirs/usr/ports/lang/ghc/work/ghc-8.10.2/rts/dist/build/libHSrts_thr_p.a
>>>>
>>>> ld: error: undefined symbol: __bswapdi2
>>>> >>> referenced by TTY.c
>>>> >>>              RTS.thr_p_o:(rtsSyms) in archive
>>>> /wrkdirs/usr/ports/lang/ghc/work/ghc-8.10.2/rts/dist/build/libHSrts_thr_p.a
>>>>
>>>> What's wrong with that? These functions seem to be present in our
>>>> compiler-rt.
>>>>  
>>>
>>> Reading /usr/src/lib/libcompiler_rt/Makefile.inc, it seems that we don't
>>> compile these functions. What's the reason for this?  
>>
>> I'm not aware of any particular reason, except that nobody seems to have
>> run into this omission before. It looks like on x86, compilers usually
>> just emit bswap instructions instead of libcalls for these situations.
>>
>> Apparently we have historically only added bswapdi and bswapsi for arm,
>> mips and riscv.
>
> I see thanks. I worked my problem around by adding implementations of these
> functions right into GHC code.

The bswap instruction was added in the i486 so something very weird is
going on that should be investigated instead of simply worked around.


home | help

Want to link to this message? Use this
URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200821144936.4d5201e2>