[8u] RFR: JDK-8164041: support old pre-c++11 toolchains and ucLibc

Andrey Petushkov andrey.petushkov at gmail.com
Wed Aug 24 15:25:42 UTC 2016


Hi Alex,

You, you're right and thank you for the fix! One small correction, I
believe there should be "itttt" rather than "ittt" :)

I'll include this fix into second revision of the patch update in
accordance with the results of discussion with Ed

Regards,
Andrey

PS. Pardon for delay, was busy preparing the C1 monster, it did not come
easy for some reason

On Fri, Aug 19, 2016 at 9:51 AM Alex Kashchenko <akashche at redhat.com> wrote:

> 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