[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-serviceability-dev
Subject:    Re: RFR: JDK-8320005 :  Allow loading of shared objects with .a extension on AIX [v7]
From:       Suchismith Roy <sroy () openjdk ! org>
Date:       2023-12-22 10:14:55
Message-ID: JzY_5sETDOUwuzeo1SPIoWlsMJylypcvUYAFVVdVMEU=.1c2f6630-b69e-4e5d-b8a4-80c9ec848a1f () github ! com
[Download RAW message or body]

On Thu, 21 Dec 2023 10:01:04 GMT, Thomas Stuefe <stuefe@openjdk.org> wrote:

> > > > > What happens if we accidentally attempt to load a "real" static library, \
> > > > > which is also named *.a? Would dlopen() then crash? What would happen?
> > > 
> > > 
> > > > I don't think the problem is with *.a . They would load as the default \
> > > > behaviour of the dlopen. It is only when the dlopen fails for *.so , we give \
> > > > another chance to check for .a file with the same name.
> > > 
> > > 
> > > No, what I meant, and what must be clarified before going forward with this \
> > > solution, is the following: 
> > > * is _every_ `*.a` object on AIX loadable with `dlopen`, and will the result be \
> > >                 the same as when loading a `*.so` object
> > > * or, if we present arbitrary `*.a` files to dlopen, is there a chance for \
> > > dlopen to crash or misbehave. 
> > > Reason is that I was under the impression that *.a libraries are static \
> > > libraries and cannot be loaded dynamically. This is what you now try to do. If \
> > > we cannot safely answer this question, I would opt for a more narrow solution \
> > > by hard-wiring known alternative names. So, do the second *.a attempt only for \
> > > your `ibm_16_am.a` which you know works. That could also be done in a \
> > > reasonably maintainable manner.
> > 
> > 
> > In AIX, both static and dynamic libraries have *.a extension. And AIX also \
> > supports *.so files.Bascially shared objects in AIX have both *.a and *.so \
> > extension. Hence we need to implement this logic. If we try loading a static \
> > archive specifically ,how the dlopen would behave , that is something probably \
> > @JoKern65 can answer ?
> 
> Rather, this is a question you have to ask your collegues at IBM that develop the \
> AIX libc. 
> Since AIX libc is not open source, we cannot look for ourselves, nor can Joachim \
> (her works at SAP). 
> > > > > Does this really have to be handled in the OpenJDK? What does J9 on AIX do? \
> > > > > Could this be done in a simpler way outside OpenJDK, e.g. by providing an \
> > > > > *.so variant of the library in question? Where does this library come from?
> > > 
> > > 
> > > > I am not sure how J9 handles this. I would have to consult .
> > > 
> > > 
> > > J9 is Open Source, can't you just look? :)
> > 
> > 
> > I did try comparing the file structures, and i do not see a similar file \
> > structure over there. I am unable to find the jvmTiAgent code and also os_aix \
> > file. So i am not sure which functions over there are doing the same \
> > functionality. You have any suggestion on how i can check and correlate ?
> 
> Someone must implement LoadLibrary. Try looking for places where dlopen() is \
> called. 
> > > > However as per current observation, this issue does not show up on Semuru. \
> > > > This issue is only happening on Adoptium. The team that release these file \
> > > > has always released *.a files which work fine for Semuru.
> > > 
> > > 
> > > I don't know what Semuru is. What is the context, is that a different VM? Also \
> > > OpenJDK? J9 derived?
> > 
> > 
> > Semuru is J9 derived.

Ok , i was not able to find the right file yet. I will collaborate on this further \
once i am back from vacation, in January.

-------------

PR Comment: https://git.openjdk.org/jdk/pull/16604#issuecomment-1867498645


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic