[oi-dev] What is the equivalent for GNU ld's --export-dynamic?
Chris
oidev at sunos.info
Thu Mar 25 16:02:44 UTC 2021
On 2021-03-24 21:27, cretin1997 via oi-dev wrote:
> ‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
> On Thursday, March 25, 2021 1:43 AM, Bob Friesenhahn
> <bfriesen at simple.dallas.tx.us> wrote:
>
>> On Wed, 24 Mar 2021, cretin1997 via oi-dev wrote:
>>
>> > I know the Solaris linker is what caused all of the trouble.
>> > FreeBASIC expects a GNU linker. This time is the same. The Solaris
>> > ld doesn't support --export-dynamic.
>>
>> The Solaris linker has not caused a problem. It seems like the Linux
>> linker has caused the problem! :-)
>>
>> I suggest trying without the option. If there is some problem later
>> with resolving symbols while actually running the program, then return
>> to the issue.
>>
>> If one looks at the Linux dlopen(3) manual page, there is a
>> RTLD_GLOBAL option. Apparently this used to be the Linux default,
>> then but then RTLD_LOCAL became the default due to security concerns.
>> It is my experience that Illumos will still behave as described for
>> RTLD_GLOBAL:
>>
>> "The symbols defined by this shared object will be made available for
>> symbol resolution of subsequently loaded shared objects."
>>
>> > Put this shit aside, what I do is I just removed the problematic
>> > option. FreeBASIC does turn on it option for Linux. I don't know
>> > what it does, nor I wanted to know, I only wanted to know the
>> > equivalent option for the Solaris linker. If no such equivalent
>> > option available, does the shared library produced by FreeBASIC with
>> > --export-dynamic removed work? What is the side effect if without
>> > --export-dynamic? This is the only thing I wanted to know! The one
>> > most qualified to answer such question should be the FreeBASIC
>> > developers, but, as you already known... do it yourself and you
>> > could submit the code to us!
>>
>> Since you are porting the code, you will soon learn if it works.
>>
>> Trial and error is a valid approach.
>>
>> Bob
>>
>> --------------------------------------------------------------------------------------------------------------
>>
>> Bob Friesenhahn
>> bfriesen at simple.dallas.tx.us, http://www.simplesystems.org/users/bfriesen/
>> GraphicsMagick Maintainer, http://www.GraphicsMagick.org/
>> Public Key, http://www.simplesystems.org/users/bfriesen/public-key.txt
>>
>> oi-dev mailing list
>> oi-dev at openindiana.org
>> https://openindiana.org/mailman/listinfo/oi-dev
>
> No. The GNU linker is not a problem. It is widely used across platforms.
> It's
> nothing wrong for the developers to insist it's the default. Even on
> platform
> doesn't use the GNU linker by default like FreeBSD, it's easily installed
> from
> ports/packages and it will just work. It is you, a weirded platform, with it
> incompatible linker, that caused the problem. As I said many times before
> and
> being hated because of this but I will not afraid said it again: software
> developers will just skip your platforms and support other platforms that
> they
> will have the least effort to support, that is platforms that behave almost
> identical to their first class platform, usually be Linux.
>
> Perhaps you didn't read my last email. OK, it's too long, I myself tired to
> read
> it, too. I did try to remove --export-dynamic and after that I could have
> the
> compiler to generate a shared library (.so file). And you are right, trial
> and
> error is the only solution, because I have no one to mentor, no one to ask
> for.
> But unfortunately, it seemed the produced shared library doesn't work. The
> program
> linked with it will just sit there but do nothing, it doesn't even seem to
> be
> launched, indicating that it failed to load the shared library or the shared
> library simply doesn't work. Someone on the internet said I should run truss
> on
> the binary, I did and I found after a while the program just sit there idle.
> No
> outputs were even printed by this program to the terminal. It just stuck and
> needs
> to be canceled with Ctrl+C.
Regarding your FreeBASIC adventure;
It sounds like your lib (.so file) is blocking on something. Is it possible
to
build it again with DEBUG symbols? This would cause it to be more informative
during load/execution and that would tell us where it's blocking, and what
it's
expecting, or waiting for. Also, does it allow starting in a VERBOSE mode?
Maybe
a -v , -V or --verbose switch? This may also provide the clues needed to
resolve
the problem. Congrats on your progress so far with it!
--Chris
>
>
> Sent with ProtonMail Secure Email.
>
--
~10yrs a FreeBSD maintainer of ~160 ports
~40yrs of UNIX
More information about the oi-dev
mailing list