Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 14 Jun 2009 08:14:57 +0900 (JST)
From:      Maho NAKATA <chat95@mac.com>
To:        openoffice@freebsd.org
Cc:        kostikbel@gmail.com
Subject:   ld.so slight difference Linux and FreeBSD ports/127946
Message-ID:  <20090614.081457.193757375.chat95@mac.com>
In-Reply-To: <1244902235.49065.33.camel@localhost>
References:  <20090613.175239.193757216.chat95@mac.com> <20090613.211918.71168302.chat95@mac.com> <1244902235.49065.33.camel@localhost>

next in thread | previous in thread | raw e-mail | index | archive | help
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




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20090614.081457.193757375.chat95>