[Openmcl-devel] Elf symbols doesn't work on linuxx86-64.

Gary Byers gb at clozure.com
Mon Oct 13 04:40:31 PDT 2008


There seem to be a few different packages which provide incompatible
versions of libelf.  On a Fedora 9 system, I have

[src/ccl-dev] gb at rinpoche> ls -l /usr/lib64/libelf*
-rwxr-xr-x 1 root root 82680 2008-05-12 19:30 /usr/lib64/libelf-0.135.so
lrwxrwxrwx 1 root root    11 2008-09-15 20:06 /usr/lib64/libelf.so -> libelf.so.1
lrwxrwxrwx 1 root root    15 2008-09-15 20:02 /usr/lib64/libelf.so.1 -> libelf-0.135.so

e.g, the real underlying library has a version number of "0.135".

On an Ubuntu 8.0.4 system,

lrwxrwxrwx 1 root root    15 2008-08-14 17:25 /usr/lib64/libelf.so.0 -> libelf.so.0.8.6
lrwxrwxrwx 1 root root    15 2008-08-14 17:25 /usr/lib64/libelf.so.0.8 -> libelf.so.0.8.6
-rw-r--r-- 1 root root 91376 2007-10-02 13:52 /usr/lib64/libelf.so.0.8.6

the real library is apparently at version 0.8.6 (e.g., a totally different
libelf.)  Note that I did not have either "libelf-dev" or "libelfg0-dev"
installed and there ws no symbolic link named "libelf.so"

On Ubuntu (I assume that Debian is probably similar), a slightly older
version (0.131) of the same flavor of libelf that the lisp expects)
is available as part of the "libelf1" package, and the header files
and libraries are available as "libelf-dev".  After doing:


shell> sudo apt-get install libelf-dev

I had both the "0.8.6" flavor and the 0.13* flavor installed, with the
symbolic link pointing to the 0.131 version.  (I assume that "libelf-dev"
and "libelf-dev" can't coexist.)

-rw-r--r-- 1 root root  76048 2008-01-03 06:26 /usr/lib/libelf-0.131.so
-rw-r--r-- 1 root root 250888 2008-01-03 06:26 /usr/lib/libelf.a
lrwxrwxrwx 1 root root     11 2008-10-13 05:23 /usr/lib/libelf.so -> libelf.so.1
lrwxrwxrwx 1 root root     15 2008-08-14 17:25 /usr/lib/libelf.so.0 -> libelf.so.0.8.6
lrwxrwxrwx 1 root root     15 2008-08-14 17:25 /usr/lib/libelf.so.0.8 -> libelf.so.0.8.6
-rw-r--r-- 1 root root  91376 2007-10-02 13:52 /usr/lib/libelf.so.0.8.6
lrwxrwxrwx 1 root root     15 2008-10-13 05:23 /usr/lib/libelf.so.1 -> libelf-0.131.so

and then:

[src/ccl-dev] gb at koan> ccl64
Welcome to Clozure Common Lisp Version 1.3-dev-r11012M-trunk  (LinuxX8664)!
? (software-type)
"Linux"  ; Not very interesting ...
? (run-program "cat" '("/etc/issue") :output t)
Ubuntu 8.04.1 \n \l

#<EXTERNAL-PROCESS (cat /etc/issue)[21235] (EXITED : 0) #x300040DFA07D>
? (require "ELF")
"ELF"
("ELF")
? (ccl::write-elf-symbols-to-file "home:elf-symbols64")
"home:elf-symbols64"
? (quit)

[src/ccl-dev] gb at koan> readelf -W -s ~/elf-symbols64 | head

Symbol table '.symtab' contains 12020 entries:
    Num:    Value          Size Type    Bind   Vis      Ndx Name
      0: 0000000000000000     0 NOTYPE  LOCAL  DEFAULT  UND
      1: 00003000400009ff    57 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%FIXNUM-TO-BIGNUM-SET.0x3000400009FF>
      2: 0000300040000aaf   105 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%MULTIPLY-AND-ADD4.0x300040000AAF>
      3: 0000300040000b8f    81 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%MULTIPLY-AND-ADD3.0x300040000B8F>
      4: 0000300040000c4f    65 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%FLOOR.0x300040000C4F>
      5: 0000300040000cff    57 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%MULTIPLY.0x300040000CFF>
      6: 0000300040000daf    33 FUNC    GLOBAL DEFAULT    1 <Compiled-function.%SET-BIGNUM-LENGTH.0x300040000DAF>

I assume that the other 12013 symbols are there, too.

On Sat, 11 Oct 2008, David Brown wrote:

> Following the instructions from the manual for getting symbols with oprofile:
>
> Welcome to Clozure Common Lisp Version 1.3-dev-r11053M-trunk  (LinuxX8664)!
> ? (require "ELF")
> "ELF"
> ("ELF")
> ? (ccl::write-elf-symbols-to-file "home:elf-symbols")
>> Error: Can't initialize libelf object for "home:elf-symbols": Request error: invalid ELF_C_* argument
>> While executing: CCL::CREATE-ELF-OBJECT, in process listener(1).
>
> $ ls -l /usr/lib64/libelf.so*
>  0 lrwxrwxrwx 1 root root    15 2008-10-11 10:04 /usr/lib64/libelf.so -> libelf.so.0.8.4*
>  0 lrwxrwxrwx 1 root root    15 2008-10-11 10:04 /usr/lib64/libelf.so.0 -> libelf.so.0.8.4*
> 88 -rwxr-xr-x 1 root root 89392 2008-10-11 10:04 /usr/lib64/libelf.so.0.8.4*
>
> Thanks,
> David
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel
>
>



More information about the Openmcl-devel mailing list