Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.297.mcz
==================== Summary ====================
Name: VMMaker.oscog-eem.297 Author: eem Time: 10 June 2013, 1:57:07.909 pm UUID: cb5c5783-9e64-4e06-ac22-1303b40171e9 Ancestors: VMMaker.oscog-eem.296
Fix 3 (!!) bugs in primitiveDLSymInLibrary
=============== Diff against VMMaker.oscog-eem.296 ===============
Item was changed: ----- Method: VMProfileLinuxSupportPlugin>>primitiveDLSymInLibrary (in category 'primitives') ----- primitiveDLSymInLibrary "Answer the address of the symbol whose name is the first argument in the library whose name is the second argument, or nil if none." | nameObj symName libName lib sz addr ok | <export: true> <var: #symName type: #'char *'> <var: #libName type: #'char *'> <var: #lib type: #'void *'> <var: #addr type: #'void *'> nameObj := interpreterProxy stackValue: 0. (interpreterProxy isBytes: nameObj) ifFalse: [^interpreterProxy primitiveFailFor: PrimErrBadArgument]. sz := interpreterProxy byteSizeOf: nameObj. libName := self malloc: sz+1. self st: libName rn: (interpreterProxy firstIndexableField: nameObj) cpy: sz. + libName at: sz put: 0. nameObj := interpreterProxy stackValue: 1. (interpreterProxy isBytes: nameObj) ifFalse: [self free: libName. ^interpreterProxy primitiveFailFor: PrimErrBadArgument]. sz := interpreterProxy byteSizeOf: nameObj. symName := self malloc: sz+1. self st: symName rn: (interpreterProxy firstIndexableField: nameObj) cpy: sz. + symName at: sz put: 0. + lib := self dl: libName open: (#'RTLD_LAZY' bitOr: #'RTLD_NODELETE'). - lib := self dl: libName open: #'RTLD_LAZY' | #'RTLD_NODELETE'. lib ifNil: [self free: libName; free: symName. ^interpreterProxy primitiveFailFor: PrimErrInappropriate]. self dlerror. "clear dlerror" addr := self dl: lib sym: symName. ok := self dlerror isNil. self free: symName. self free: libName. self dlclose: lib. ok ifFalse: [^interpreterProxy primitiveFailFor: PrimErrNotFound]. + ^interpreterProxy methodReturnValue: (interpreterProxy positive32BitIntegerFor: addr asUnsignedLong)! - ^interpreterProxy methodReturnValue: (interpreterProxy positiveMachineIntegerValueOf: addr asUnsignedLong)!
vm-dev@lists.squeakfoundation.org