[llvm-dev] Compiling SAFECode poolalloc in cygwin create different libraries compared to linux.

kiran pawar via llvm-dev llvm-dev at lists.llvm.org
Wed Oct 14 08:44:17 PDT 2015


Hi John,
Yes I am working with Nikhil.
I compiled Clang 3.2 in Cygwin using gcc ( note- with clang there were lot
of errors during compilation). Going ahead, Installation is successful for
me.

However there new issue with SAFECode clang installed in cygwin.

If you check below snippet it looks like clang invoke gcc which in-turn
fails to recognize ‘-fmemsafety’ and so sample.exe is not created.
Any clue why clang fallback to gcc ? On my linux machine I do not see gcc
invocation.

==============
$ clang -v -g -fmemsafety -o sample sample.c
-L/home/kpawar/SAFECode/LLVM_INSTALL/lib
-I/home/kpawar/SAFECode/LLVM_INSTALL/include
clang version 3.2 (:
http://llvm.org/svn/llvm-project/safecode/branches/release_32/tools/clang)
(llvm/branches/release_32 ^/llvm/branches/release_32 250143)
Target: i386-pc-cygwin
Thread model: posix
 "/home/kpawar/SAFECode/LLVM_INSTALL/bin/clang" -cc1 -triple i386-pc-cygwin
-S -disable-free -main-file-name sample.c -mrelocation-model static
-mdisable-fp-elim -fmath-errno -mconstructor-aliases -target-cpu pentium4
-target-linker-version 2.25.2 -momit-leaf-frame-pointer -v -g -resource-dir
/home/kpawar/SAFECode/LLVM_INSTALL/bin/../lib/clang/3.2 -I
/home/kpawar/SAFECode/LLVM_INSTALL/include -fmodule-cache-path
/var/tmp/clang-module-cache -fno-dwarf-directory-asm
-fdebug-compilation-dir /home/kpawar/Documents -ferror-limit 19
-fmessage-length 237 -fmemsafety -mstackrealign -fno-use-cxa-atexit
-fobjc-runtime=gcc -fdiagnostics-show-option -fcolor-diagnostics -o
/tmp/sample-T1WCmN.s -x c sample.c
clang -cc1 version 3.2 based upon LLVM 3.2svn default target i386-pc-cygwin
ignoring nonexistent directory "/usr/local/include"
#include "..." search starts here:
#include <...> search starts here:
 /home/kpawar/SAFECode/LLVM_INSTALL/include
 /home/kpawar/SAFECode/LLVM_INSTALL/bin/../lib/clang/3.2/include
 /usr/include/w32api
 /usr/include
End of search list.
 "
*/usr/bin/gcc" -v -fmemsafety -L/home/kpawar/SAFECode/LLVM_INSTALL/lib -I
/home/kpawar/SAFECode/LLVM_INSTALL/include -c -m32 -o /tmp/sample-5Zz17i.o
-x assembler /tmp/sample-T1WCmN.sUsing built-in specs.*
COLLECT_GCC=/usr/bin/gcc
gcc: error: unrecognized command line option ‘-fmemsafety’
Target: i686-pc-cygwin
Configured with:
/cygdrive/i/szsz/tmpp/gcc/gcc-4.9.3-1.i686/src/gcc-4.9.3/configure
--srcdir=/cygdrive/i/szsz/tmpp/gcc/gcc-4.9.3-1.i686/src/gcc-4.9.3
--prefix=/usr --exec-prefix=/usr --localstatedir=/var --sysconfdir=/etc
--docdir=/usr/share/doc/gcc --htmldir=/usr/share/doc/gcc/html -C
--build=i686-pc-cygwin --host=i686-pc-cygwin --target=i686-pc-cygwin
--without-libiconv-prefix --without-libintl-prefix --libexecdir=/usr/lib
--enable-shared --enable-shared-libgcc --enable-static
--enable-version-specific-runtime-libs --enable-bootstrap
--enable-__cxa_atexit --with-dwarf2 --with-arch=i686 --with-tune=generic
--disable-sjlj-exceptions
--enable-languages=ada,c,c++,fortran,java,lto,objc,obj-c++
--enable-graphite --enable-threads=posix --enable-libatomic
--enable-libgomp --disable-libitm --enable-libquadmath
--enable-libquadmath-support --enable-libssp --enable-libada
--enable-libjava --enable-libgcj-sublibs --disable-java-awt
--disable-symvers --with-ecj-jar=/usr/share/java/ecj.jar --with-gnu-ld
--with-gnu-as --with-cloog-include=/usr/include/cloog-isl
--without-libiconv-prefix --without-libintl-prefix --with-system-zlib
--enable-linker-build-id
Thread model: posix
gcc version 4.9.3 (GCC)
clang: error: assembler (via gcc) command failed with exit code 1 (use -v
to see invocation)

============

~ Kiran

On Wed, Oct 14, 2015 at 7:06 PM, John Criswell <jtcriswel at gmail.com> wrote:

> Dear Kiran,
>
> Egads!  It looks like /usr/bin/clang is crashing.  This isn't a bug in
> SAFECode; it's a bug in Clang.
>
> What version of Clang are you using in Cygwin to compile SAFECode?
>
> One thing you should try is compiling Clang 3.2 in Cygwin (either using
> gcc or clang).  SAFECode Clang is standard Clang modified with a few new
> command-line options to run the SAFECode transformation passes.  If
> unmodified Clang 3.2 won't compile on Cygwin, then SAFECode Clang for LLVM
> 3.2 won't compile either.
>
> BTW, are you working with Nikhil?
>
> Regards,
>
> John Criswell
>
>
>
> On 10/13/15 11:29 PM, kiran pawar wrote:
>
> Hi John,
> That worked for me. I am using llvm 3.2 only and following
> <http://safecode.cs.illinois.edu/docs/Install.html>
> http://safecode.cs.illinois.edu/docs/Install.html
>
> So for I am able to make inside llvm/projects/poolalloc by doing such
> cosmetic changes.
> Now, when I tried to make inside llvm/projects/safecode, I see another
> error.
>
> kpawar at KPAWAR-LT ~/SAFECode/LLVM_SRC/llvm/projects/safecode
> $ /usr/bin/clang -cc1 -triple i386-pc-windows-cygnus -emit-obj
> -disable-free -disable-llvm-verifier -main-file-name Parser.cpp
> -mrelocation-model static -relaxed-aliasing -fmath-errno -masm-verbose
> -mconstructor-aliases -target-cpu pentium4 -target-linker-version 2.25
> -dwarf-column-info -coverage-file
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -resource-dir /usr/bin/../lib/clang/i686-pc-cygwin/3.5.2 -dependency-file
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.d.tmp
> -MP -MT
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -MT
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.d
> -D _DEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS
> -D __STDC_LIMIT_MACROS -D SAFECODE -D SAFECODE -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse
> -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include
> -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include
> -I /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -O3
> -Woverloaded-virtual -Wcast-qual -Wall -Wno-deprecated -Wall -Wno-long-long
> -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcovered-switch-default
> -pedantic -fdebug-compilation-dir
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse
> -ferror-limit 19 -fmessage-length 271 -fvisibility-inlines-hidden
> -mstackrealign -fno-rtti -fobjc-runtime=gcc -fdiagnostics-show-option
> -fcolor-diagnostics -vectorize-loops -vectorize-slp -o
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -x c++  tools/clang/lib/Parse/Parser.cpp
> *Stack dump:*
> 0.      Program arguments: /usr/bin/clang -cc1 -triple
> i386-pc-windows-cygnus -emit-obj -disable-free -disable-llvm-verifier
> -main-file-name Parser.cpp -mrelocation-model static -relaxed-aliasing
> -fmath-errno -masm-verbose -mconstructor-aliases -target-cpu pentium4
> -target-linker-version 2.25 -dwarf-column-info -coverage-file
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -resource-dir /usr/bin/../lib/clang/i686-pc-cygwin/3.5.2 -dependency-file
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.d.tmp
> -MP -MT
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -MT
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.d
> -D _DEBUG -D _GNU_SOURCE -D __STDC_CONSTANT_MACROS -D __STDC_FORMAT_MACROS
> -D __STDC_LIMIT_MACROS -D SAFECODE -D SAFECODE -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse
> -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include
> -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include
> -I /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -I
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/poolalloc/include -O3
> -Woverloaded-virtual -Wcast-qual -Wall -Wno-deprecated -Wall -Wno-long-long
> -Wall -W -Wno-unused-parameter -Wwrite-strings -Wcovered-switch-default
> -pedantic -fdebug-compilation-dir
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse
> -ferror-limit 19 -fmessage-length 271 -fvisibility-inlines-hidden
> -mstackrealign -fno-rtti -fobjc-runtime=gcc -fdiagnostics-show-option
> -fcolor-diagnostics -vectorize-loops -vectorize-slp -o
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/Release+Asserts/Parser.o
> -x c++ tools/clang/lib/Parse/Parser.cpp
> 1.
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include/clang/Sema/DeclSpec.h:855:3:
> current parser token 'SourceLocation'
> 2.
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include/clang/Sema/DeclSpec.h:38:1:
> parsing namespace 'clang'
> 3.
> /home/kpawar/SAFECode/LLVM_SRC/llvm/projects/safecode/tools/clang/lib/Parse/../../include/clang/Sema/DeclSpec.h:783:1:
> parsing struct/union/class body 'UnqualifiedId'
>
>
>
> ~ Kiran
>
> On Tue, Oct 13, 2015 at 11:16 PM, John Criswell <jtcriswel at gmail.com>
> wrote:
>
>> Dear Kiran,
>>
>> Which version of LLVM/SAFECode are you using?  Is it LLVM 3.2?
>>
>> I'm guessing that you're using LLVM 3.2 and trying to compile
>> safecode/tools/LTO (that's the only component that links in AssistDS.a).
>> You could try changing the following line:
>>
>> $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/libAssistDS.a:
>> $(POOLALLOC_OBJDIR)/$(BuildMode)/lib/AssistDS.a
>>
>> ... to:
>>
>> $(PROJ_OBJ_ROOT)/$(BuildMode)/lib/libAssistDS.a:
>> $(POOLALLOC_OBJDIR)/$(BuildMode)/lib/libAssistDS.a
>>
>> You'll need to fix the problem for other libraries for which SAFECode
>> creates links in its own object tree (such as libpoolalloc.a).
>>
>> That might fix the problem on Cygwin.
>>
>> Regards,
>>
>> John Criswell
>>
>>
>> On 10/13/15 2:36 AM, kiran pawar via llvm-dev wrote:
>>
>> Hi,
>> On Linux I observed
>>
>> [root at localhost poolalloc]# find . -name *.a
>> ./Release+Asserts/lib/LLVMDataStructure.a
>> ./Release+Asserts/lib/poolalloc.a
>> ./Release+Asserts/lib/AssistDS.a
>> ./Release+Asserts/lib/libpoolalloc_fl_rt.a
>> ./Release+Asserts/lib/libpoolalloc_rt.a
>> ./Release+Asserts/lib/libpa_pre_rt.a
>> ./Release+Asserts/lib/libcount.a
>>
>>
>> On cygwin I observed
>>
>> kpawar at KPAWAR-LT ~/SAFECode/LLVM_SRC/llvm/projects/poolalloc
>> $ find . -name *.a
>> ./Release+Asserts/lib/libAssistDS.a
>> ./Release+Asserts/lib/libcount.a
>> ./Release+Asserts/lib/libLLVMDataStructure.a
>> ./Release+Asserts/lib/libpa_pre_rt.a
>> ./Release+Asserts/lib/libpoolalloc.a
>> ./Release+Asserts/lib/libpoolalloc_fl_rt.a
>> ./Release+Asserts/lib/libpoolalloc_rt.a
>> ./Release+Asserts/lib/libtypechecks_rt.a
>>
>>
>> This creates issue to llvm/safecode since it tries to search libraries
>> named as poolalloc.a, AssistDS.a etc. Any solution for this ?
>>
>> ~ Kiran
>>
>>
>>
>>
>> _______________________________________________
>> LLVM Developers mailing listllvm-dev at lists.llvm.orghttp://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>>
>>
>>
>> --
>> John Criswell
>> Assistant Professor
>> Department of Computer Science, University of Rochesterhttp://www.cs.rochester.edu/u/criswell
>>
>>
>
>
> --
> John Criswell
> Assistant Professor
> Department of Computer Science, University of Rochesterhttp://www.cs.rochester.edu/u/criswell
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20151014/245f339e/attachment.html>


More information about the llvm-dev mailing list