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>

next in thread | previous in thread | raw e-mail | index | archive | help
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.



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