[Vm-dev] Suspicious typing in Cog VM
Eliot Miranda
eliot.miranda at gmail.com
Wed Dec 8 18:04:00 UTC 2010
2010/12/8 Aleksej Saushev <asau at inbox.ru>
>
> Eliot Miranda <eliot.miranda at gmail.com> writes:
>
> > On Wed, Dec 8, 2010 at 12:30 AM, Aleksej Saushev <asau at inbox.ru> wrote:
> >
> > Hello!
> >
> > Types are inconsistent along the source, does Cog VM work on LP64
> platforms?
> >
> > Please read unixbuild/HowToBuild:
> >
> > 3d. If you're building the VM on a 64-bit OS, you'll need a compiler
> which can
> > compile and link to 32-bit binaries. On most Linuxes the gcc-multilib
> package
> > provides the 32-bit compiler and the ia32-libs provides the 32-bit
> libraries.
> > You'll also have to add the -m32 switch to all gcc & g++ invocations.
> The
> > easiest way to do this is to add CC="gcc -m32" & CXX="g++ -m32" to the
> configure
> > script:
> > ../../platforms/unix/config/configure CC="gcc -m32" CXX="g++ -m32"
> CFLAGS="-g -O2 -msse2 -D_GNU_SOURCE -DNDEBUG
> > -DITIMER_HEARTBEAT=1 -DNO_VM_PROFILE=1 -DCOGMTVM=0" LIBS=-lpthread
> > To run a 32-bit VM on a 64-bit OS, you'll also need the 32-bit libraries
> > provided by the ia32-libs package.
> >
> > According to Paul DeBruicker the following packages need to be installed
> to
> > compile in 32-bt mode on 64-bit ubuntu. YMMV.
>
> Perhaps I'm not clear enough. These changes are not an attempt to fix
> 64-bit build,
> it is an attempt to fix _32-bit_ build. Functions don't match their
> prototypes,
> and my builds (on NetBSD/i386) end with this kind of diagnostics:
>
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/unix/plugins/SoundPlugin/sqUnixSound.c:103:
> error: conflicting types for 'snd_InsertSamplesFromLeadTime'
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/Cross/plugins/SoundPlugin/SoundPlugin.h:9:
> error: previous declaration of 'snd_InsertSamplesFromLeadTime' was here
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/unix/plugins/SoundPlugin/sqUnixSound.c:108:
> error: conflicting types for 'snd_PlaySamplesFromAtLength'
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/Cross/plugins/SoundPlugin/SoundPlugin.h:10:
> error: previous declaration of 'snd_PlaySamplesFromAtLength' was here
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/unix/plugins/SoundPlugin/sqUnixSound.c:145:
> error: conflicting types for 'snd_RecordSamplesIntoAtLength'
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/Cross/plugins/SoundPlugin/SoundPlugin.h:20:
> error: previous declaration of 'snd_RecordSamplesIntoAtLength' was here
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/unix/plugins/SoundPlugin/sqUnixSound.c:153:
> error: conflicting types for 'snd_SetRecordLevel'
> /tmp/local/squeak-vm-cog/work/squeak-vm-cog/platforms/Cross/plugins/SoundPlugin/SoundPlugin.h:16:
> error: previous declaration of 'snd_SetRecordLevel' was here
>
That's a different issue. John McIntosh made some changes to these
prototypes for the iPhone platform. I haven't had time to fix the Carbon
platform build that these changes broke. Apologies.
> That is, without these changes the build doesn't even finish (resultant
> binary crashes on any image I tried: Pharo 1.0, Pharo 1.1.1, but that's
> another half of the story). My point is that something is going wrong,
> since the code lacks internal consistency (and I don't know what to
> assign further crashes to). Since you know the code much better than me,
> could you take a look?
>
> > I need this to make it build on NetBSD/i386:
> >
> > --- platforms/unix/plugins/SoundPlugin/sqUnixSound.c.orig
> 2010-12-07 17:40:51.000000000 +0000
> > +++ platforms/unix/plugins/SoundPlugin/sqUnixSound.c
> > @@ -99,12 +99,12 @@ int snd_AvailableSpace(void)
> > return snd->snd_AvailableSpace();
> > }
> >
> > -int snd_InsertSamplesFromLeadTime(int frameCount, int srcBufPtr, int
> samplesOfLeadTime)
> > +sqInt snd_InsertSamplesFromLeadTime(sqInt frameCount, void
> *srcBufPtr, sqInt samplesOfLeadTime)
> > {
> > return snd->snd_InsertSamplesFromLeadTime(frameCount, srcBufPtr,
> samplesOfLeadTime);
> > }
> >
> > -int snd_PlaySamplesFromAtLength(int frameCount, int arrayIndex, int
> startIndex)
> > +sqInt snd_PlaySamplesFromAtLength(sqInt frameCount, void
> *arrayIndex, sqInt startIndex)
> > {
> > return snd->snd_PlaySamplesFromAtLength(frameCount, arrayIndex,
> startIndex);
> > }
> > @@ -141,7 +141,7 @@ double snd_GetRecordingSampleRate(void)
> > return snd->snd_GetRecordingSampleRate();
> > }
> >
> > -int snd_RecordSamplesIntoAtLength(int buf, int startSliceIndex, int
> bufferSizeInBytes)
> > +sqInt snd_RecordSamplesIntoAtLength(void *buf, sqInt
> startSliceIndex, sqInt bufferSizeInBytes)
> > {
> > return snd->snd_RecordSamplesIntoAtLength(buf, startSliceIndex,
> bufferSizeInBytes);
> > }
> > @@ -150,7 +150,7 @@ int snd_RecordSamplesIntoAtLength(int bu
> >
> > void snd_Volume(double *left, double *right) {
> snd->snd_Volume(left, right); }
> > void snd_SetVolume(double left, double right) {
> snd->snd_SetVolume(left, right); }
> > -int snd_SetRecordLevel(int level) {
> return snd->snd_SetRecordLevel(level); }
> > +void snd_SetRecordLevel(sqInt level) {
> return snd->snd_SetRecordLevel(level); }
> > int snd_GetSwitch(int id, int captureFlag, int channel) {
> return snd->snd_GetSwitch(id, captureFlag, channel); }
> > int snd_SetSwitch(int id, int captureFlag, int parameter) {
> return snd->snd_SetSwitch(id, captureFlag, parameter); }
> > int snd_SetDevice(int id, char *name) {
> return snd->snd_SetDevice(id, name); }
> > --- src/vm/gcc3x-cointerp.c.orig 2010-12-07 18:00:09.000000000
> +0000
> > +++ src/vm/gcc3x-cointerp.c
> > @@ -975,7 +975,7 @@ sqInt quickPrimitiveInstVarIndexFor(sqIn
> > sqInt rawHeaderOf(sqInt methodPointer);
> > void rawHeaderOfput(sqInt methodOop, void *cogMethod);
> > sqInt readableFormat(sqInt imageVersion);
> > -sqInt readImageFromFileHeapSizeStartingAt(sqImageFile f, sqInt
> desiredHeapSize, squeakFileOffsetType imageOffset);
> > +sqInt readImageFromFileHeapSizeStartingAt(sqImageFile f, usqInt
> desiredHeapSize, squeakFileOffsetType imageOffset);
> > sqInt remap(sqInt oop);
> > static sqInt removeFirstLinkOfList(sqInt aList);
> > EXPORT(sqInt) removeGCRoot(sqInt *varLoc);
> > @@ -37959,7 +37959,7 @@ readableFormat(sqInt imageVersion) {
> > */
> >
> > sqInt
> > -readImageFromFileHeapSizeStartingAt(sqImageFile f, sqInt
> desiredHeapSize, squeakFileOffsetType imageOffset) {
> > +readImageFromFileHeapSizeStartingAt(sqImageFile f, usqInt
> desiredHeapSize, squeakFileOffsetType imageOffset) {
> > DECL_MAYBE_SQ_GLOBAL_STRUCT
> > sqInt anObject;
> > sqInt aValue;
>
>
> --
> HE CE3OH...
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20101208/5fd86919/attachment-0001.htm
More information about the Vm-dev
mailing list