12.4.2016, 15:06, Jonathan Wakely kirjoitti:
On 12 April 2016 at 13:00, Jonathan Wakely <jwakely.gcc@xxxxxxxxx> wrote:
On 31 March 2016 at 19:30, onkel.jack@xxxxxxxxxxx
<onkel.jack@xxxxxxxxxxx> wrote:
Thanks Kai.
In the meantime I did some more experiments after I figured out I can repro the problem on RHEL6 too which does build much faster ...
It turned out, the problem goes away if newlib gets configured with --enable-newlib-multithread, I lost that, for whatever reason.
Somehow it seems to have an influence on configure libstdc++. Guess a diff in newlib headers might find it.
I think, threading in gcc and newlib needs to be configured consistent despite the "single" default means NO, maybe its different in libstdc++ ...
single means NO, but single is not necessarily the default!
The docs you quoted say:
"Beware that on some systems, GCC has not been taught what threading
models are generally available for the system. In this case,
--enable-threads is an alias for --enable-threads=single."
But that's not the case for your target. GCC has been taught what
threading models are available for arm-geabi using newlib, so when you
say --enable-threads it assumes you want to enable threads!
Ok, my point was based on what I understand "threads" being :
https://en.wikipedia.org/wiki/Thread_%28computing%29
That they need at least some simple "operating system" being implemented to
schedule the "tasks" running at the same time. In very early 1980's I
myself made one
simple one on a 8080 which tried to change task every 10 ms or even 1 ms
(interrupt
received, "sharing the CPU time") in the circular queue of known tasks
and if the task
in order had nothing to do (waiting something), gave its 10 ms or 1 ms
turn to the next
in the queue.
So using for instance RTEMS :
https://www.rtems.org/
as that "operating system" with newlib (I remember RTEMS using it) would
make
using threads understandable. But I cannot "grok" how the bare
"arm-eabi" object
format or the generic newlib C library could provide that required
"operating system"
for threads.