Skip to content

x86: long-double stub functions are not built-in to libgcc #603

Open
@cfriedt

Description

@cfriedt

It looks as though qemu_x86 is having some problems with SDK version 0.15.2 and c++

/home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/bin/../lib/gcc/x86_64-zephyr-elf/12.1.0/../../../../x86_64-zephyr-elf/bin/ld.bfd: /home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/x86_64-zephyr-elf/lib/32/soft-float/libstdc++.a(c++locale.o): in function `void std::__convert_to_v<long double>(char const*, long double&, std::_Ios_Iostate&, int* const&)':
c++locale.cc:(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0x77): undefined reference to `__unordxf2'
/home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/bin/../lib/gcc/x86_64-zephyr-elf/12.1.0/../../../../x86_64-zephyr-elf/bin/ld.bfd: c++locale.cc:(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0x97): undefined reference to `__gexf2'
/home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/bin/../lib/gcc/x86_64-zephyr-elf/12.1.0/../../../../x86_64-zephyr-elf/bin/ld.bfd: c++locale.cc:(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0xb7): undefined reference to `__unordxf2'
/home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/bin/../lib/gcc/x86_64-zephyr-elf/12.1.0/../../../../x86_64-zephyr-elf/bin/ld.bfd: c++locale.cc:(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0xd7): undefined reference to `__lexf2'
/home/cfriedt/zephyr-sdk-0.15.2/x86_64-zephyr-elf/bin/../lib/gcc/x86_64-zephyr-elf/12.1.0/../../../../x86_64-zephyr-elf/bin/ld.bfd: c++locale.cc:(.text._ZSt14__convert_to_vIeEvPKcRT_RSt12_Ios_IostateRKPi+0xf4): undefined reference to `__gtxf2'

This works fine with mps2_an385, qemu_cortex_a53, qemu_riscv32, qemu_riscv64, and qemu_x86_64, so it looks as though it's localized to 32-bit x86 support. qemu_x86_64 also fails on the tls test permutation at runtime, but it's unrelated.

To reproduce with the fewest steps:

cat << EOF > submanifests/99-thrift.yaml
manifest:
  defaults:
    remote: upstream

  remotes:
    - name: upstream
      url-base: https://github.com/zephyrproject-rtos

  projects:
    - name: gsoc-2022-thrift
      path: modules/lib/thrift
      revision: main
      submodules: true
EOF
west update
twister -i -p qemu_x86 -T ../modules/lib/thrift/tests/lib/thrift/ThriftTest

^^ requires thrift to be available

brew install -y thrift
apt install -y thrift-compiler
dnf install -y thrift

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: GCCIssues related to GCC (GNU Compiler Collection)area: libstdc++Issues related to libstdc++ (GNU C++ Library)priority: mediumMedium impact/importance issue

    Type

    Projects

    Status

    No status

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions