[Vm-dev] [commit][2661] Add yet another libc line to the linux launch script(s), and try and make the

Bert Freudenberg bert at freudenbergs.de
Tue Jan 8 20:35:30 UTC 2013


Why is this even necessary? To look up libc functions we used to leave the module name empty in the FFI declaration, so it wouldn't ever need to know the exact location of libc. This used to end up in a dlopen() call with a null file name.

- Bert -


On 08.01.2013, at 11:57, commits at squeakvm.org wrote:

> 
> Revision: 2661
> Author:   eliot
> Date:     2013-01-08 11:57:41 -0800 (Tue, 08 Jan 2013)
> Log Message:
> -----------
> Add yet another libc line to the linux launch script(s), and try and make the
> script suggest users extend it themselves.  you can lead a horse to water...
> Rationalize the includes in sqUnixUUID.c.
> 
> Modified Paths:
> --------------
>    branches/Cog/platforms/unix/config/bin.squeak.sh.in
>    branches/Cog/platforms/unix/config/squeak.sh.in
>    branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c
> 
> Property Changed:
> ----------------
>    branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
> 
> 
> Property changes on: branches/Cog/platforms/Cross/vm/sqSCCSVersion.h
> ___________________________________________________________________
> Modified: checkindate
>   - Mon Jan  7 13:52:47 PST 2013
>   + Tue Jan  8 11:56:08 PST 2013
> 
> Modified: branches/Cog/platforms/unix/config/bin.squeak.sh.in
> ===================================================================
> --- branches/Cog/platforms/unix/config/bin.squeak.sh.in	2013-01-07 21:54:37 UTC (rev 2660)
> +++ branches/Cog/platforms/unix/config/bin.squeak.sh.in	2013-01-08 19:57:41 UTC (rev 2661)
> @@ -14,15 +14,18 @@
> # libc (e.g. through the FFI) then it must use the same version that the VM uses
> # and so it should take precedence over /lib libc.  This is done by setting
> # LD_LIBRARY_PATH appropriately, based on ldd's idea of the libc use by the VM.
> -case `/usr/bin/ldd "$BIN/squeak" | /bin/fgrep /libc. | sed 's/^.*=> //'` in
> +LIBC_SO="`/usr/bin/ldd "$BIN/squeak" | /bin/fgrep /libc. | sed 's/^.*=> //'`"
> +case "$LIBC_SO" in
> /lib/libc*)					SVMLLP="/lib:/usr/lib";;
> /lib32/libc*)				SVMLLP="/lib32:/usr/lib32";;
> /lib64/libc*)				SVMLLP="/lib64:/usr/lib64";;
> /lib/tls/libc*)				SVMLLP="/lib/tls:/lib:/usr/lib/tls:/usr/lib";;
> /lib/i386-linux-gnu/libc*)	\
> -	SVMLLP="/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu";;
> +	SVMLLP="/lib/i386-linux-gnu:/lib:/usr/lib/i386-linux-gnu:/usr/lib";;
> /lib/tls/i686/cmov/libc*)	\
> 	SVMLLP="/lib/tls/i686/cmov:/lib:/usr/lib/tls/i686/cmov:/usr/lib";;
> +/lib/386-linux-gnu/i686/cmov/libc*)	\
> +	SVMLLP="/lib/386-linux-gnu/i686/cmov:/lib:/usr/lib/386-linux-gnu/i686/cmov:/usr/lib";;
> /lib/tls/i686/nosegneg/libc*)	\
> 	SVMLLP="/lib/i686/nosegneg/tls:/lib:/usr/lib/i686/nosegneg/tls:/usr/lib";;
> "")	case `/bin/uname -m || /usr/bin/uname -m` in
> @@ -30,7 +33,7 @@
> 	*)	echo "/usr/bin/ldd didn't produce any output. Can't infer base LD_LIBRARY_PATH. Aborting." 1>&2
> 	esac
> 	exit 1;;
> -*)	echo "Can't infer base LD_LIBRARY_PATH. Aborting." 1>&2
> +*)	echo "Can't infer base LD_LIBRARY_PATH. Aborting. Try adding a line for $LIBC_SO to $0. Please report your edit to squeak vm-dev." 1>&2
> 	exit 1
> esac
> # prepending is less flexible but safer because it ensures we find the plugins
> 
> Modified: branches/Cog/platforms/unix/config/squeak.sh.in
> ===================================================================
> --- branches/Cog/platforms/unix/config/squeak.sh.in	2013-01-07 21:54:37 UTC (rev 2660)
> +++ branches/Cog/platforms/unix/config/squeak.sh.in	2013-01-08 19:57:41 UTC (rev 2661)
> @@ -14,15 +14,18 @@
> # libc (e.g. through the FFI) then it must use the same version that the VM uses
> # and so it should take precedence over /lib libc.  This is done by setting
> # LD_LIBRARY_PATH appropriately, based on ldd's idea of the libc use by the VM.
> -case `/usr/bin/ldd "$BIN/squeak" | /bin/fgrep /libc. | sed 's/^.*=> //'` in
> +LIBC_SO="`/usr/bin/ldd "$BIN/squeak" | /bin/fgrep /libc. | sed 's/^.*=> //'`"
> +case "$LIBC_SO" in
> /lib/libc*)					SVMLLP="/lib:/usr/lib";;
> /lib32/libc*)				SVMLLP="/lib32:/usr/lib32";;
> /lib64/libc*)				SVMLLP="/lib64:/usr/lib64";;
> /lib/tls/libc*)				SVMLLP="/lib/tls:/lib:/usr/lib/tls:/usr/lib";;
> /lib/i386-linux-gnu/libc*)	\
> -	SVMLLP="/lib/i386-linux-gnu:/usr/lib/i386-linux-gnu";;
> +	SVMLLP="/lib/i386-linux-gnu:/lib:/usr/lib/i386-linux-gnu:/usr/lib";;
> /lib/tls/i686/cmov/libc*)	\
> 	SVMLLP="/lib/tls/i686/cmov:/lib:/usr/lib/tls/i686/cmov:/usr/lib";;
> +/lib/386-linux-gnu/i686/cmov/libc*)	\
> +	SVMLLP="/lib/386-linux-gnu/i686/cmov:/lib:/usr/lib/386-linux-gnu/i686/cmov:/usr/lib";;
> /lib/tls/i686/nosegneg/libc*)	\
> 	SVMLLP="/lib/i686/nosegneg/tls:/lib:/usr/lib/i686/nosegneg/tls:/usr/lib";;
> "")	case `/bin/uname -m || /usr/bin/uname -m` in
> @@ -30,7 +33,7 @@
> 	*)	echo "/usr/bin/ldd didn't produce any output. Can't infer base LD_LIBRARY_PATH. Aborting." 1>&2
> 	esac
> 	exit 1;;
> -*)	echo "Can't infer base LD_LIBRARY_PATH. Aborting." 1>&2
> +*)	echo "Can't infer base LD_LIBRARY_PATH. Aborting. Try adding a line for $LIBC_SO to $0. Please report your edit to squeak vm-dev." 1>&2
> 	exit 1
> esac
> # prepending is less flexible but safer because it ensures we find the plugins
> 
> Modified: branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c
> ===================================================================
> --- branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c	2013-01-07 21:54:37 UTC (rev 2660)
> +++ branches/Cog/platforms/unix/plugins/UUIDPlugin/sqUnixUUID.c	2013-01-08 19:57:41 UTC (rev 2661)
> @@ -3,12 +3,12 @@
> #if defined(HAVE_SYS_UUID_H)
> # include <sys/types.h>
> # include <sys/uuid.h>
> -#endif
> -#if defined(HAVE_UUID_UUID_H)
> +#elif defined(HAVE_UUID_UUID_H)
> # include <uuid/uuid.h>
> -#endif
> -#if defined(HAVE_UUID_H)
> +#elif defined(HAVE_UUID_H)
> # include <uuid.h>
> +#else
> +# error cannot find a uuid.h to include
> #endif
> 
> #include "sq.h"
> 



More information about the Vm-dev mailing list