[8u] RFR: JDK-8164041: support old pre-c++11 toolchains and ucLibc
Alex Kashchenko
akashche at redhat.com
Fri Aug 19 06:51:38 UTC 2016
Hi,
On 08/15/2016 07:06 PM, Andrey Petushkov wrote:
> Hi All,
>
> We met a necessity to support an older kind of gcc toolchain which does not fully conform to c++ 11 and in particular do not have __atomic API as well as have some other peculiarities. In addition the support of ucLibc was desired.
>
> The resulting changes are here: http://cr.openjdk.java.net/~apetushkov/8164041/webrev/ <http://cr.openjdk.java.net/~apetushkov/8164041/webrev/>
> Checked with running on OpenWRT-based distribution
>
> When implementing the replacement code we also chosen to always use the assembly implementation and not builtins because:
> - there is no harm, the assembly is no worse than that gcc can generate
> - the code is more clear
> - there is no reliable way to determine if gcc has flaws or not, so the detection directives look really ugly
>
> Thanks,
> Andrey
>
A small fix for thumb mode (that is default on ubuntu xenial): in
Atomic::cmpxchg add "ittt eq" before the "cmpeq". Otherwise it will fail
on thumb with:
{standard input}: Assembler messages:
{standard input}:926: Error: thumb conditional instruction should be in
IT block -- `cmpeq r6,r2'
{standard input}:927: Error: thumb conditional instruction should be in
IT block -- `strexdeq lr,r3,r4,[r0]'
{standard input}:928: Error: thumb conditional instruction should be in
IT block -- `cmpeq lr,#1'
/home/u1604/jdk8u/hotspot/make/linux/makefiles/rules.make:157: recipe
for target 'atomic.o' failed
--
-Alex
More information about the aarch32-port-dev
mailing list