Hello Thomas, Volker,


Hi Kumar,


    On 9/16/2016 10:34 AM, Volker Simonis wrote:

        Hi Christoph,

        I think your change is fine as a quick-fix to fix the build. But
        you're completely right that this should be reworked in the
        long term.
        I hate to see that we now have the third version of these
        routines in
        the OpenJDK. Unfortunately a clean solution is not trivial.

        libjli is not linked against libjvm because libjli is actually
        used to
        load libjvm. So we can not put the dladdr routines for AIX
        there. But
        I think we should at least consolidate the two versions which
        will be
        in the class library after your change. Initially I
        intentionally put
        porting_aix.{c,h} into jdk/aix/porting with the intent to make it
        available to ALL jdk native libraries.

        Unfortunately, with the source code reorganization due to the
        modular
        changes, the common, top-level aix repository had to go away
        and the
        code was moved to
        src/java.desktop/aix/native/libawt/porting_aix.c.
        With the reorganized, modularized source code layout and build
        system
        it is not possible to share code between modules. We somehow
        have to
        fix this although I currently don't know how. IF somebody has
        an idea,
        please let me know :)


    Why doesn't AIX support a Standard C API that most other
    *nix based OS'es support ?


dladdr() is not Posix, hence it should not be used in code that wants to be portable across Unix systems. Afaik dladdr() is a propietary Solaris API that was adapted by the glibc and slowly spread over to some other Unices, but by no means all of them. dladdr makes a number of assumptions about the architecture: e.g. that a C function pointer points into the text segment of the binary instead of e.g. a PLT, or that a loaded binary is placed continuously in memory (we only have one dli_fbase in DL_info). So imho it makes sense to not make this a standard Posix API.

We (SAP) implemented dladdr atop of loadquery(), and this kind of works, although we had to add some hacks to handle both real code addresses and C function pointers. So the code is there, it is "just" a question of where to place it.

I understand your desire to keep AIX pristine and clean, similarly,
we should also keep  OpenJDK sources clean, having 3 identical
dladdr implementation, spread across the OpenJDK does not
bode well.

So, is it possible to park the sources in hotspot repo, and create a
shared shared object, that can be suitably linked to the launchers,
awt and hotspot to this library/object ?

Thanks
Kumar



Kind Regards, Thomas

    Thanks

    Kumar



        Regarding your change:

        - can you please move

        +#if defined(_AIX)
        +#include "java_md_aix.h"
        +#endif
        +

        from java_md_common.c to the end of
        java.base/unix/native/libjli/java_md.h. It will then be
        automatically
        included into java_md_common.c trough java.h which includes
        java_md.h

        Also, this version of dladdr is inherently not thread safe. I
        don't
        think that's a problem here, but it would be nice if you could
        quickly
        check if that's indeed true.

        Besides that, looks good.

        Thanks for fixing,
        Volker




        On Fri, Sep 16, 2016 at 11:58 AM, Langer, Christoph
        <christoph.lan...@sap.com <mailto:christoph.lan...@sap.com>>
        wrote:

            Hi,

            the fix for
            https://bugs.openjdk.java.net/browse/JDK-8165524
            <https://bugs.openjdk.java.net/browse/JDK-8165524> breaks
            the AIX build as function dladdr is not available on AIX.

            There already exist ports of that API in hotspot and awt.
            With the proposed change I duplicate the awt port to
            libjli. This is maybe only a quick fix - eventually we
            should think about consolidating and using the hotspot
            port in all places by exporting it from libjvm.so for AIX.

            Bug: https://bugs.openjdk.java.net/browse/JDK-8166189
            <https://bugs.openjdk.java.net/browse/JDK-8166189>
            Webrev:
            http://cr.openjdk.java.net/~clanger/webrevs/8166189.0/
            <http://cr.openjdk.java.net/%7Eclanger/webrevs/8166189.0/>

            Thanks
            Christoph


                -----Original Message-----
                From: core-libs-dev
                [mailto:core-libs-dev-boun...@openjdk.java.net
                <mailto:core-libs-dev-boun...@openjdk.java.net>] On Behalf
                Of Kumar Srinivasan
                Sent: Montag, 12. September 2016 22:57
                To: core-libs-dev <core-libs-dev@openjdk.java.net
                <mailto:core-libs-dev@openjdk.java.net>>; Mandy Chung
                <mandy.ch...@oracle.com
                <mailto:mandy.ch...@oracle.com>>; Chris Bensen
                <chris.ben...@oracle.com <mailto:chris.ben...@oracle.com>>
                Subject: RFR: 8165524: Better detect JRE that Linux
                JLI will be using

                Hello,

                I am sponsoring this changeset for Chris Bensen of the
                java packager
                team, please review  fix for the launcher to better
                locate java.home.

                http://cr.openjdk.java.net/~ksrini/8165524/
                <http://cr.openjdk.java.net/%7Eksrini/8165524/>

                Thanks
                Kumar




Reply via email to