Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.

Close

#2 Static linker not working

closed-wont-fix
None
2
2003-04-22
2001-03-08
Olin Shivers
No

Static linker doesn't work in either 0.5.2, 0.5.3 or
0.6 tree.

Discussion

  • Logged In: YES
    user_id=27364

    From: Bruno.Verlyck@inria.fr
    To: scsh-bugs@zurich.ai.mit.edu
    Subject: problems with static linker
    Date: Wed, 10 May 2000 14:51:01 +0200 (MET DST)

    I recently decided to install scsh 0.5.2 on Solaris (5.6)
    and Linux
    (RH 6.1, kernel 2.2.12-20). Everything compiled fine (with
    gcc).

    But, as I had static-linked scsh.image with scsh 0.5.1, and
    changed
    the #! .. !# lines of my scripts accordingly, I had to do
    the same
    with 0.5.2.

    On Solaris, I get problems while compiling the scripts; for
    example:
    Error: unknown #\ name
    space
    #{Input-port}
    If I replace #\space with #\ , compilation fails a little
    later:
    Error: exception
    (car 'else)
    This particular piece of code works under the standard
    scsh.image.

    On Linux, static linking fails with some undefined symbols:
    (gcc -rdynamic -o
    /afs/inria.fr/common/usr/local/src/scsh-
    0.5.2/scsh/scsh.vm
    static-p0.o static-i0.o [...] static-p336.o static-
    i336.o static.o
    -L /usr/local/lib/scsh -lscshvm -ldl -lelf -lnsl -lm -lc)
    static-i51.o(.data+0x5c8): undefined reference to
    `df_compile_re'
    static-i51.o(.data+0x764): undefined reference to
    `df_free_re'
    static-i51.o(.data+0xb18): undefined reference to
    `df_scheme_tcgetattrB'
    static-i51.o(.data+0xb28): undefined reference to
    `df_re_search'
    static-i51.o(.data+0xb5c): undefined reference to
    `df_re_errint2str'
    collect2: ld returned 1 exit status

    In both cases, I used this command to do the link:
    time ./scsh/static.scm --cc gcc --temp /tmp -o
    scsh/scsh.vm -i scsh/scsh.ima\ ge
    (.. that worked for scsh 0.5.1). I didn't find anything
    resembling
    the scsh-hlink command referred to near the pages 173-175
    of the new
    manual, so I used the same recipe than with 0.5.1. I can
    give you
    more specific details if you need them.

    Have you heard of anything like this ? Can you give me
    some advice ?

    Thanks in advance,

    Bruno.

     
  • Logged In: YES
    user_id=27364

    From: Bruno.Verlyck@inria.fr
    To: scsh-bugs@zurich.ai.mit.edu
    Subject: problems with static linker
    Date: Wed, 10 May 2000 14:51:01 +0200 (MET DST)

    I recently decided to install scsh 0.5.2 on Solaris (5.6)
    and Linux
    (RH 6.1, kernel 2.2.12-20). Everything compiled fine (with
    gcc).

    But, as I had static-linked scsh.image with scsh 0.5.1, and
    changed
    the #! .. !# lines of my scripts accordingly, I had to do
    the same
    with 0.5.2.

    On Solaris, I get problems while compiling the scripts; for
    example:
    Error: unknown #\ name
    space
    #{Input-port}
    If I replace #\space with #\ , compilation fails a little
    later:
    Error: exception
    (car 'else)
    This particular piece of code works under the standard
    scsh.image.

    On Linux, static linking fails with some undefined symbols:
    (gcc -rdynamic -o
    /afs/inria.fr/common/usr/local/src/scsh-
    0.5.2/scsh/scsh.vm
    static-p0.o static-i0.o [...] static-p336.o static-
    i336.o static.o
    -L /usr/local/lib/scsh -lscshvm -ldl -lelf -lnsl -lm -lc)
    static-i51.o(.data+0x5c8): undefined reference to
    `df_compile_re'
    static-i51.o(.data+0x764): undefined reference to
    `df_free_re'
    static-i51.o(.data+0xb18): undefined reference to
    `df_scheme_tcgetattrB'
    static-i51.o(.data+0xb28): undefined reference to
    `df_re_search'
    static-i51.o(.data+0xb5c): undefined reference to
    `df_re_errint2str'
    collect2: ld returned 1 exit status

    In both cases, I used this command to do the link:
    time ./scsh/static.scm --cc gcc --temp /tmp -o
    scsh/scsh.vm -i scsh/scsh.ima\ ge
    (.. that worked for scsh 0.5.1). I didn't find anything
    resembling
    the scsh-hlink command referred to near the pages 173-175
    of the new
    manual, so I used the same recipe than with 0.5.1. I can
    give you
    more specific details if you need them.

    Have you heard of anything like this ? Can you give me
    some advice ?

    Thanks in advance,

    Bruno.

     
  • Logged In: YES
    user_id=27364

    From: Bruno.Verlyck@inria.fr
    To: Eric Marsden <emarsden@mail.dotcom.fr>
    CC: scsh-bugs@zurich.ai.mit.edu
    Subject: Re: problems with static linker
    Subject: Re: problems with static linker
    Date: Thu, 18 May 2000 12:39:46 +0200 (MET DST)

    > >>>>> "bv" == Bruno Verlyck <Bruno.Verlyck@inria.fr>
    writes:
    > bv> On Solaris, I get problems while compiling the
    scripts; for example:
    > bv> Error: unknown #\ name
    > bv> space
    > bv> #{Input-port}

    > bv> On Linux, static linking fails with some undefined
    symbols:
    > bv> (gcc -rdynamic -o
    > bv> /afs/inria.fr/common/usr/local/src/scsh-
    0.5.2/scsh/scsh.vm
    > bv> static-p0.o static-i0.o [...] static-p336.o static-
    i336.o static.o
    > bv> -L /usr/local/lib/scsh -lscshvm -ldl -lelf -lnsl -
    lm -lc)
    > bv> static-i51.o(.data+0x5c8): undefined reference to
    `df_compile_re'
    > bv> static-i51.o(.data+0x764): undefined reference to
    `df_free_re'

    > are you sure the symptoms aren't the other way round?
    (I might misinterpret your question, but..)

    It just happens that I compiled scsh on Solaris first,
    where static linking
    scsh.image worked, but the resulting heap image couldn't
    interpret my
    scripts in the byte-compilation phase.

    Then I tried to compile scsh on Linux, where I couldn't
    even static-link
    scsh.image. I described my two problems in chronological
    order, but to me,
    they are unrelated.

    > I get similar strange string-related errors on Linux
    (calls to
    > `make-string' of length -1 for example), and link errors
    for all the
    > syscalls on Solaris (though for me on Solaris 2.7 it
    links fine but fails
    > upon execution in unix.c:lookup_external_name).
    (Just in case..) I remember I had to use this #! line:
    #!/usr/local/lib/scsh/scsh.vm \ -o /usr/local/lib/scsh/scsh.vm -- <other options>
    !#
    The -o /usr/local/lib/scsh/scsh.vm was mandatory under
    Solaris only (on
    other systems it worked, and a little faster, without it).

    > The link problem is fixed for me by removing the line in
    > scsh/machine/sysdep.h which #undefs HAVE_DLOPEN
    My machine/sysdep.h is empty :-(.

    > Then I reach similar string errors to on Linux: no idea
    where these come
    > from.
    So I'm not alone.

    The manual says:
    `In spite of .. we are providing the static linker .. so
    that people may
    get some experience with it.'
    Then my experience is that it worked better in scsh 5.0.1.

    Any reaction from the scsh maintainers ? (even to say I'll
    have to wait :-)

    Bruno.

     
    • status: open --> closed-wont-fix
     
  • Logged In: YES
    user_id=17553

    We dropped support for the static linker a little while ago.