misc/60243: Problem in calling kpathsea library from Python
extension
Kris Kennaway
kris at obsecurity.org
Sun Feb 22 18:50:20 PST 2004
The following reply was made to PR misc/60243; it has been noted by GNATS.
From: Kris Kennaway <kris at obsecurity.org>
To: Jin-Hwan Cho <chofchof at ktug.or.kr>
Cc: Kris Kennaway <kris at obsecurity.org>,
freebsd-gnats-submit at FreeBSD.org
Subject: Re: misc/60243: Problem in calling kpathsea library from Python extension
Date: Sun, 22 Feb 2004 18:48:59 -0800
On Mon, Feb 23, 2004 at 11:41:53AM +0900, Jin-Hwan Cho wrote:
> >>Is there any way to use "hash_create" in the kpathsea library
> >>instead of the standard libc?
> >
> >Sorry for the delay in responding to this. Did you ever resolve this?
>
> Surely. In my FreeBSD 5 machine, the command above gives exactly.
> Here is another information of my libc.so.5.
>
> /usr/lib$ ls -al libc.so.5
> -r--r--r-- 1 root wheel 886848 Jun 5 2003 libc.so.5
> /usr/lib$ objdump -f libc.so.5
>
> libc.so.5: file format elf32-i386-freebsd
> architecture: i386, flags 0x00000150:
> HAS_SYMS, DYNAMIC, D_PAGED
> start address 0x0001c470
OK, you have an old 5.x installation. It was fixed at some point in
the last 8 months.
> >I wonder if you are linking to libc before libkpathsea (e.g. -lc
> >-lkpathsea); symbols are resolved to the first library in the sequence
> >that contains them.
>
> I already new because there was some discussion on that topic in the
> TeX world. Here is the compiling commands generated by Python.
>
> ~/test/kpathsea$ python setup.py build
> running build
> running build_ext
> building 'kpse' extension
> creating build
> creating build/temp.freebsd-5.1-RELEASE-i386-2.2
> cc -DNDEBUG -O -pipe -mcpu=pentiumpro -D_THREAD_SAFE -fPIC
> -DHASH_SHARED -I/usr/local/include -I/usr/local/include/python2.2 -c
> kpse_module.c -o build/temp.freebsd-5.1-RELEASE-i386-2.2/kpse_module.o
> creating build/lib.freebsd-5.1-RELEASE-i386-2.2
> cc -shared -lc_r build/temp.freebsd-5.1-RELEASE-i386-2.2/kpse_module.o
> -L/usr/local/lib -lkpathsea -o
> build/lib.freebsd-5.1-RELEASE-i386-2.2/kpse.so
>
> I tried the last link command without -lc_r and -lkpathsea -lc_r, etc.
> But all failed. Could you tell me what I missed?
>
> >Also, I can't reproduce that libc.so.5 contains the hash_create symbol:
> >
> >kkenn at enigma:/lib objdump -T libc.so.5 | grep hash
> >00000000000000e8 l d .hash 0000000000000000
> >000000000003b4a0 g DF .text 0000000000000020 uuid_hash
> >00000000001ee970 g DO .data 0000000000000008 __default_hash
> >00000000000cff00 g DF .text 0000000000000040 __call_hash
> >00000000000cec80 g DF .text 00000000000003a4 __hash_open
>
> Is your operating system FreeBSD? My machine does not have the directory
> /lib. Actually I tested my code in another operating systems, but no
> problem yet; even there was no problem in Mac OS X.
FreeBSD 5.2 moved a number of libraries from /usr/lib to /lib to allow
a dynamically-linked root partition. This aspect is unrelated to your
problem, but it sounds like upgrading to 5.2-RELEASE will fix it
anyway.
Kris
More information about the freebsd-bugs
mailing list