Skip to Content.
Sympa Menu

svadev - Re: [svadev] SAFECode/PoolAllocator module is not compilable with Cygwin

svadev AT lists.siebelschool.illinois.edu

Subject: Svadev mailing list

List archive

Re: [svadev] SAFECode/PoolAllocator module is not compilable with Cygwin


Chronological Thread 
  • From: John Criswell <criswell AT illinois.edu>
  • To: <Stefan.Scheruebl AT continental-corporation.com>, <svadev AT cs.uiuc.edu>
  • Subject: Re: [svadev] SAFECode/PoolAllocator module is not compilable with Cygwin
  • Date: Mon, 12 May 2014 10:25:40 -0500
  • List-archive: <http://lists.cs.uiuc.edu/pipermail/svadev/>
  • List-id: <svadev.cs.uiuc.edu>
  • Organization: University of Illinois

Dear Stefan,

Responses inline below.

On 5/12/14, 5:15 AM, Stefan.Scheruebl AT continental-corporation.com wrote:
Hello,
 
I've problems with the compilation of the SAFECode/PoolAllocator modules.
 
Preconditions:
Windows 7
Latest version of Cygwin (Setup-x86.exe version 2.850 (32 bit))
I followed the instructions in "SAFECode Install Guide", i.e.

Just an FYI that I don't have a Windows 7/Cygwin setup, so I can't test out the problem myself.

 
   cd LLVM_OBJ
   ../LLVM_SRC/configure --disable-embed-stdcxx --enable-shared --enable-targets=powerpc,x86 --enable-optimized
   make tools-only

   •cd projects/poolalloc
   •make

The make failed with the following message:
 
 
llvm[2]: Compiling PoolAllocator.cpp for Release+Asserts build
/tmp/LLVM_SRC/projects/poolalloc/runtime/FL2Allocator/PoolAllocator.cpp:23:14: Fehler: in Konflikt stehende Deklaration »typedef long int intptr_t« typedef long intptr_t;
 
(Error: Conflicting declaration »typedef long int intptr_t« typedef long intptr_t;)

If you want to use SAFECode, I think you can disable compilation of the runtime libraries in the poolalloc project.  Modify pooalloc/runtime/Makefile and remove the directories from DIRS and PARALLEL_DIRS that aren't compiling.

If you run into similar errors while compiling other run-time libraries (such as those needed by SAFECode), then you'll need to fix them.  If you see code that is relying upon integers being a particular size (e.g., to match the pointer size), then the code should be changed to uintptr_t instead of unsigned long or unsigned int or whatever.  If you make such a fix, please send a patch so that I can apply it and get it fixed in SVN.

 
 
 
   •cd projects/safecode
   •make
 
The make failed with the following message:
 
llvm[2]: Compiling PoolAllocatorBitMask.cpp for Release+Asserts build
/tmp/LLVM_SRC/projects/safecode/runtime/DebugRuntime/PoolAllocatorBitMask.cpp:62:22: schwerwiegender Fehler: ucontext.h: No such file or directory

This error is a bit trickier but can still be fixed.  The SAFECode run-time relies on knowing the PC value that caused a segmentation fault or bus error to occur.  Apparently Windows doesn't have a ucontext.h header file.  You could try sys/ucontext.h, but it may or may not have that file.

My recommendation here is to look at the getProgramCounter() function in PoolAllocatorBitMask.cpp and modify it so that it returns zero.  You should then be able to comment out the #include of ucontext.h.

If you know how to get the PC value out of the context pointer of a signal handler, that would be even better; you could fix getProgramCounter() to work on Cygwin/Windows 7.

Just out of curiosity, why do you need SAFECode to work on Windows?

Regards,

John Criswell





Archive powered by MHonArc 2.6.16.

Top of Page