chicken-janitors
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Chicken-janitors] #150: csc -Ob (-O5) bug (unsafe)


From: Chicken Trac
Subject: [Chicken-janitors] #150: csc -Ob (-O5) bug (unsafe)
Date: Fri, 25 Dec 2009 19:11:41 -0000

#150: csc -Ob (-O5) bug (unsafe)
----------------------+-----------------------------------------------------
 Reporter:  ddp       |       Owner:       
     Type:  defect    |      Status:  new  
 Priority:  major     |   Milestone:  4.3.0
Component:  compiler  |     Version:  4.3.0
 Keywords:            |  
----------------------+-----------------------------------------------------
 [Mac OS X, 10.6.2 (Snow Leopard), Chicken 4.3.0]

 There's a bug with the unsafe processing in csc.  When it's compiling
 unsafe, it doesn't reflect this out to the 'install_name_tool' invocation,
 resulting in no fixup in the resulting image.  So if libuchicken.dylib
 doesn't happen to be in the standard library search path, it blows up at
 runtime:

 fluffy656% csc -verbose hello.scm
 /usr/local/chicken/bin/chicken hello.scm -output-file hello.c -verbose
 Loading compiler extensions...
 debugging info: calltrace
 loading identifier database /usr/local/chicken/lib/chicken/4/modules.db
 ...
 compiling `hello.scm' ...
 pass: source
 pass: canonicalized
 pass: initial node tree
 pass: cps
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized
 pass: final-analysis
 pass: closure-converted
 generating `hello.c' ...
 compilation finished.
 gcc hello.c -o hello.o -c -no-cpp-precomp -fno-strict-aliasing -fno-common
 -DHAVE_CHICKEN_CONFIG_H
 -m64 -DC_ENABLE_PTABLES -Os -fomit-frame-pointer
 -I/usr/local/chicken/include
 rm hello.c
 gcc hello.o -o hello -m64 -L/usr/local/chicken/lib -lchicken -lm
 install_name_tool -change libchicken.dylib
 /usr/local/chicken/lib/libchicken.dylib hello
 rm hello.o
 fluffy657% otool -L hello
 hello:
         /usr/local/chicken/lib/libchicken.dylib (compatibility version
 1.0.0, current version 1.0.0)
         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
 version 125.0.0)
 fluffy658% ./hello
 Hello, World!

 fluffy659% csc -O5 -verbose hello.scm
 /usr/local/chicken/bin/chicken hello.scm -output-file hello.c -unsafe-
 libraries -optimize-level
 5 -verbose
 Loading compiler extensions...
 debugging info: none
 loading identifier database /usr/local/chicken/lib/chicken/4/modules.db
 ...
 compiling `hello.scm' ...
 pass: source
 pass: canonicalized
 pass: initial node tree
 pass: analysis
 pass: lambda lifted
 pass: cps
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized-iteration
 pass: analysis
 pass: optimized
 pass: final-analysis
 pass: closure-converted
 generating `hello.c' ...
 compilation finished.
 gcc hello.c -o hello.o -c -no-cpp-precomp -fno-strict-aliasing -fno-common
 -DHAVE_CHICKEN_CONFIG_H
 -m64 -DC_ENABLE_PTABLES -Os -fomit-frame-pointer -O3 -fomit-frame-pointer
 -I/usr/local/chicken/include
 rm hello.c
 gcc hello.o -o hello -m64 -L/usr/local/chicken/lib -luchicken -lm
 install_name_tool -change libchicken.dylib
 /usr/local/chicken/lib/libchicken.dylib hello
 rm hello.o
 fluffy660% otool -L hello
 hello:
         libuchicken.dylib (compatibility version 1.0.0, current version
 1.0.0)
         /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current
 version 125.0.0)
 fluffy661% ./hello
 dyld: Library not loaded: libuchicken.dylib
   Referenced from: /Users/ddp/src/scm/./hello
   Reason: image not found
 Trace/BPT trap
 fluffy662% install_name_tool -change libuchicken.dylib
 /usr/local/chicken/lib/libuchicken.dylib hello
 fluffy663% ./hello
 Hello, World!

-- 
Ticket URL: <http://www.irp.oist.jp/trac/chicken/ticket/150>
Chicken Scheme <http://www.call-with-current-continuation.org/>
Chicken Scheme is a compiler for the Scheme programming language.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]