Problem compiling SqueakFFI Plugin

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Problem compiling SqueakFFI Plugin

melkyades
 
when generating the squeakffi plugin I get different sources than the ones in src/plugins dir. Mine generate a compiler error, because isImmediate is redefined, any idea?

the original src/X64SysVFFIPlugin.c contains (~ line 460):

#if !defined(isImmediate)
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#endif


while mine gets:

#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#if !defined(isImmediate)
#endif


Cheers,
Pocho

--
Javier Pimás
Ciudad de Buenos Aires
Reply | Threaded
Open this post in threaded view
|

Re: Problem compiling SqueakFFI Plugin

melkyades
 
And I have a similar problem with LargeIntegerPlugin

../../src/plugins/LargeIntegers/LargeIntegers.c:169:36: error: expected ‘)’ before ‘objectPointer’
 extern sqInt isIntegerObject(sqInt objectPointer);
                                    ^
../../src/plugins/LargeIntegers/LargeIntegers.c:105:33: note: in definition of macro ‘isIntegerObject’
 # define isIntegerObject(oop) ((oop) & 1)
 

$ git diff HEAD~2 ../../src/plugins/LargeIntegers/LargeIntegers.c
diff --git a/src/plugins/LargeIntegers/LargeIntegers.c b/src/plugins/LargeIntegers/LargeIntegers.c
index 267a96d2c..638ca631f 100644
--- a/src/plugins/LargeIntegers/LargeIntegers.c
+++ b/src/plugins/LargeIntegers/LargeIntegers.c
@@ -102,8 +102,7 @@ static const int  andOpIndex = 0;
 
 #if defined(SQUEAK_BUILTIN_PLUGIN)
 
-//sqInt isIntegerObject(sqInt oop) { return oop & 1; }
-//# define isIntegerObject(oop) ((oop) & 1)
+# define isIntegerObject(oop) ((oop) & 1)
 
where does this C code difference come from?

On Sat, Mar 31, 2018 at 6:48 PM, Javier Pimás <[hidden email]> wrote:
when generating the squeakffi plugin I get different sources than the ones in src/plugins dir. Mine generate a compiler error, because isImmediate is redefined, any idea?

the original src/X64SysVFFIPlugin.c contains (~ line 460):

#if !defined(isImmediate)
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#endif


while mine gets:

#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#if !defined(isImmediate)
#endif


Cheers,
Pocho

--
Javier Pimás
Ciudad de Buenos Aires



--
Javier Pimás
Ciudad de Buenos Aires
Reply | Threaded
Open this post in threaded view
|

Re: Problem compiling SqueakFFI Plugin

Eliot Miranda-2
 
Hi Javier,

    are you sure your sources are up to date?  Do you have a special version of sqVirtualMachine.h?  What happens if you do a clean checkout of opensmalltalk/vm and try and build that?  To me it looks like you may have imported your own modifications and hit the merge wrong because you've not included some new plugin support.

Let me recommend that you do a clean checkout and build of opensmalltalk/vm (in a separate directory, as a reference).  If that doesn't build then we have problems.  If it does build then you'll be able to compare your modified version and hence have a good chance of finding and fixing the issue.

_,,,^..^,,,_ (phone)

On Mar 31, 2018, at 7:09 PM, Javier Pimás <[hidden email]> wrote:

And I have a similar problem with LargeIntegerPlugin

../../src/plugins/LargeIntegers/LargeIntegers.c:169:36: error: expected ‘)’ before ‘objectPointer’
 extern sqInt isIntegerObject(sqInt objectPointer);
                                    ^
../../src/plugins/LargeIntegers/LargeIntegers.c:105:33: note: in definition of macro ‘isIntegerObject’
 # define isIntegerObject(oop) ((oop) & 1)
 

$ git diff HEAD~2 ../../src/plugins/LargeIntegers/LargeIntegers.c
diff --git a/src/plugins/LargeIntegers/LargeIntegers.c b/src/plugins/LargeIntegers/LargeIntegers.c
index 267a96d2c..638ca631f 100644
--- a/src/plugins/LargeIntegers/LargeIntegers.c
+++ b/src/plugins/LargeIntegers/LargeIntegers.c
@@ -102,8 +102,7 @@ static const int  andOpIndex = 0;
 
 #if defined(SQUEAK_BUILTIN_PLUGIN)
 
-//sqInt isIntegerObject(sqInt oop) { return oop & 1; }
-//# define isIntegerObject(oop) ((oop) & 1)
+# define isIntegerObject(oop) ((oop) & 1)
 
where does this C code difference come from?

On Sat, Mar 31, 2018 at 6:48 PM, Javier Pimás <[hidden email]> wrote:
when generating the squeakffi plugin I get different sources than the ones in src/plugins dir. Mine generate a compiler error, because isImmediate is redefined, any idea?

the original src/X64SysVFFIPlugin.c contains (~ line 460):

#if !defined(isImmediate)
#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#endif


while mine gets:

#if VM_PROXY_MAJOR > 1 || (VM_PROXY_MAJOR == 1 && VM_PROXY_MINOR >= 13)
extern sqInt isImmediate(sqInt anObject);
#else
# define isImmediate(anObject) 0
#endif
#if !defined(isImmediate)
#endif


Cheers,
Pocho

--
Javier Pimás
Ciudad de Buenos Aires



--
Javier Pimás
Ciudad de Buenos Aires