ld.so slight difference Linux and FreeBSD ports/127946
Maho NAKATA
chat95 at mac.com
Sat Jun 13 23:17:23 UTC 2009
Hello Konstantin, and *
We have a longstanding OpenOffice.org porting issue for FreeBSD.
Strange crashes.
So I'd like to ask you about following issue.
http://www.openoffice.org/issues/show_bug.cgi?id=22253
.
There are some small difference between ld.so implementation
between FreeBSD and Linux. Here is the test program that identify
the difference clearly. (it also applies to NetBSD)
------------------------------------------------
"dlsym() search _on_the_main_program_" i.e. the handle is not the
dlopen()ed shared library itself, but the main program (which you get
back with dlopen(NULL, RTLD_LAZY) )
I've modified your test program a bit:
#include <stdio.h>
#include <stdlib.h>
#include <dlfcn.h>
int main(int argc, char **argv) {
void *handle, *handlemain;
double (*cosine)(double);
char *error;
handle = dlopen ("libm.so", RTLD_LAZY|RTLD_GLOBAL);
if (!handle) {
fprintf (stderr, "%s\n", dlerror());
exit(1);
}
handlemain = dlopen(NULL, RTLD_LAZY);
cosine = dlsym(handlemain, "cos");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
printf ("%f\n", (*cosine)(2.0));
dlclose(handle);
return 0;
}
On Linux:
bash-2.05b$ ./a.out
-0.416147
while on NetBSD:
-bash-2.05b$ ./a.out
Undefined symbol "cos"
------------------------------------------------
It seems that this is the root cause of some issues.
http://www.openoffice.org/issues/show_bug.cgi?id=22253
http://www.openoffice.org/issues/show_bug.cgi?id=98781
maybe also
http://www.freebsd.org/cgi/query-pr.cgi?pr=128176
It seems ld.so employs same mechanism between Linux and MacOSX.
Could you please help me a bit?
Thanks,
-- Nakata Maho http://accc.riken.jp/maho/ , http://ja.openoffice.org/
Nakata Maho's PGP public keys: http://accc.riken.jp/maho/maho.pgp.txt
More information about the freebsd-openoffice
mailing list