lpw,
The current implementation does not allow functions from one object to be called from another object. Functions all need to be in the same compilation unit for them to be called from another function. At the IL level, this implies that all functions need to be in the same kernel string and at the brook+ level, they need to be in the same compiled file. The reason we allow currently linking of multiple objects into a single image is to allow a single image to contain code for specific devices. This would allow you to write the same kernel optimized for two different stream devices, link them to the same image, and have the runtime select which one to use based on the underlying hardware.