On 12/10/2016 9:57 PM, Magnus Ihse Bursie wrote:
On 2016-10-12 13:07, David Holmes wrote:



On 12/10/2016 7:04 PM, Magnus Ihse Bursie wrote:
On 2016-10-12 04:38, David Holmes wrote:
On 11/10/2016 7:41 PM, Erik Joelsson wrote:
Hello,

After the cleanup of C++ linking with the GCC toolchain. We missed
updating one instance with the correct TOOLCHAIN configuration. This
leads to build failures for arm ports with slowdebug. I have no
idea why
it only happens there, but correcting the TOOLCHAIN configuration (so
that g++ is used to link instead of gcc) makes it build again.

Unexplained errors raise alarm bells for me. This particular reference
relates to C++ exception handling which raises questions:

- why only on this platform?
- why only in slowdebug?
- why only in this code? (which seems unrelated to exceptions)

I agree the fix is to use g++ instead of gcc for linking, assuming the
exception related code should actually be there.
The alarm bells ringed for me too. :-) I actually started debugging this
one, but Erik beat me to it. :) I did however conclude that this error
occured due to static linking (without it, everything went fine) and if
I explicitely specified -lstdc++ as well, I got a more informative
error, telling me that the static version of libgcc was not found. I
didn't go further, since Erik found the (correct) solution, but I assume
that the devkit we use to build for the arm platforms are missing some
bits, which was only needed for slowdebug builds.

Still too vague for me. What is special about this code?
I have no idea. The question should probably be rephrased: "Why does
this work on all the other platforms, when it's obviously incorrect?"
And the answer to that is most likely "*shrug* ... pure luck?".

As I said there are three questions to answer:

>>>> - why only on this platform?
>>>> - why only in slowdebug?
>>>> - why only in this code? (which seems unrelated to exceptions)

I just realized that "why this code" can be answered by this being the only bit of code not already being linked with g++. If we reverted the other g++ linker changes and ran this build I suspect we would see a lot more issues.

David

/Magnus


Thanks,
David

/Magnus


Thanks,
David

The build error looks like this:

/localhome/hg/jdk9-dev-CDR/build/linux-arm64-slowdebug/support/native/jdk.pack200/unpackexe/bands.o:(.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0):


undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

Bug: https://bugs.openjdk.java.net/browse/JDK-8167479

Webrev: http://cr.openjdk.java.net/~erikj/8167479/webrev.01/

/Erik



Reply via email to