Bug 8413 - Missing C++ features in ARM gcc
Summary: Missing C++ features in ARM gcc
Status: NEW
Alias: None
Product: ThinLinc
Classification: Unclassified
Component: Build system (show other bugs)
Version: trunk
Hardware: PC Unknown
: P2 Normal
Target Milestone: MediumPrio
Assignee: Bugzilla mail exporter
URL:
Keywords:
Depends on: 8368
Blocks:
  Show dependency treegraph
 
Reported: 2024-08-20 12:18 CEST by Pierre Ossman
Modified: 2024-08-20 16:07 CEST (History)
0 users

See Also:
Acceptance Criteria:


Attachments

Description Pierre Ossman cendio 2024-08-20 12:18:43 CEST
Something is amiss with our ARM Linux gcc as there are some C++ features that are missing. I stumbled upon std::to_string() being missing, but I suspect there are more things.

Digging a bit, I can see that c++config.h indicates that it thinks a lot of functionality is missing from glibc, which is why these C++ features are disabled.
Comment 1 Pierre Ossman cendio 2024-08-20 15:47:37 CEST
What gcc wants is some C99 features. It seems to find most of them, except for complex numbers support:

> checking for ISO C99 support in <math.h>... yes
> ...
> checking for ISO C99 support in <complex.h>... no
> checking for ISO C99 support in <stdio.h>... yes
> checking for ISO C99 support in <stdlib.h>... yes
> checking for ISO C99 support in <wchar.h>... yes
> checking for fully enabled ISO C99 support... no

Looking in the log, there appears to be some missing declarations:

> conftest.cpp:74:18: error: 'cabsl' was not declared in this scope
>   ld = cabsl(tmpld);

No idea why. These functions seem to be built in, as I cannot find them in any header.
Comment 2 Pierre Ossman cendio 2024-08-20 15:52:40 CEST
Debian has apparently also suffered from this bug, with a bit more analysis:

https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=443234

No fix, unfortunately. It is simply closed with the hope what modern glibc/gcc has resolved the issue.
Comment 4 Pierre Ossman cendio 2024-08-20 16:07:55 CEST
Note the discussion there indicates that this only changes what's seen in the headers. The missing functions have always been available as symbols on libc.so.

That means it is safe for us to apply this patch, as it does not modify the actual ABI.

The fix is available from glibc 2.15, if we chose to not patch things.

Note You need to log in before you can comment on or make changes to this bug.