Skip to content

Boost 1.87 undefined jump_fcontext on loongarch platform #289

Open
@setarcos

Description

@setarcos

The resulting libboost_context.so has undefined symble for jump_fcontext, make_fcontext and ontop_fcontext.

nm -D usr/lib/libboost_context.so | grep jump_fcontext
                 U jump_fcontext
0000000000000ba0 T _ZN5boost7context6detail13jump_fcontextEPvS2_

and the building system complains about

error: No best alternative for /build/boost/src/boost_1_87_0/libs/context/build/asm_sources with <abi>aapcs <address-model>64 <architecture>loongarch <asynch-exceptions>off <binary-format>elf <boost.beast.allow-deprecated>on <boost.beast.separate-compilation>on <boost.cobalt.executor>any_io_executor <boost.cobalt.pmr>std <context-impl>fcontext <coverage>off <cxxstd-dialect>iso <cxxstd>23 <debug-symbols>off <exception-handling>on <extern-c-nothrow>off <inlining>full <known-warnings>hide <link>static <optimization>speed <os>LINUX <pch>on <preserve-test-targets>on <profiling>off <python-debugging>off <python>3.13 <relevant>abi <relevant>address-model <relevant>architecture <relevant>binary-format <relevant>toolset <rtti>on <runtime-debugging>off <runtime-link>shared <stdlib>native <strip>off <target-os>linux <testing.execute>on <threadapi>pthread <threading>multi <toolset-gcc:version>14 <toolset>gcc <variant>release <vectorize>off <visibility>hidden <warnings-as-errors>off <warnings>on <x-deduced-platform>loongarch_64

The abi for loongarch is clearly wrong. following code in libs/context/boost-context-features.jam may be related.

local rule default_abi ( )
{
    local tmp = sysv ;
    if [ os.name ] = "NT" { tmp = ms ; }
    else if [ os.name ] = "CYGWIN" { tmp = ms ; }
    else if [ os.platform ] in "ARM" "ARM64" { tmp = aapcs ; }
    else if [ os.platform ] = "MIPS32" { tmp = o32 ; }
    else if [ os.platform ] = "MIPS64" { tmp = n64 ; }
    return $(tmp) ;
}

On my loongarch platform, the os.platform variable is empty, and above function return aapcs. Force the function return sysv gives correct so file.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions