[LLVMdev] -fPIC warning on every compile on Cygwin

Aaron Gray
Thu, 19 Feb 2009 18:32:40 -0000

On Thu, Feb 19, 2009 at 5:52 PM, Nick Lewycky <nicholas at mxc.ca> wrote:

>  Aaron Gray wrote:
> > Hi,
> >
> > I partly built LLVM on Cygwin yesterday and it was fine as far as it
> > went. But after doing a svn update today I am getting the following
> > warning on every compile :-
> >
> >
> >     llvm[3]: Compiling LowerAllocations.cpp for Debug build
> >     /usr/src/llvm/lib/Transforms/Utils/LowerAllocations.cpp:1:
warning:
> >     -fPIC ignored for target (all code is position independent)
> >
> >
> > This maybe happening on other targets too.
>
> Thanks for the report. This is certainly due to my change last night to
> make LLVM build as PIC by default.
>
 I was a little perplex at the warning as I could not ascertain where thery
were coming from and could see no obvious commit  !:)

Out of interest, could you point me to the patch or commit, please.


>
> Part of the fix is going to be splitting apart whether we're building
> PIC and whether we pass in the -fPIC flag. We want to know whether the
> build is PIC in order to control whether libLTO should be built. On your
> platform we'll still want to build libLTO but don't want to pass
the
> -fPIC flag.
>
Nice

>The other part of the fix I'm not so sure about. How should the build
>system detect that we're building PIC without the -fPIC flag on this
>platform?

 Looks like configure/autoconf territory. 'configure' flashes up that
Cygwin
supports PIC. See attached config.out file.


Aaron


>
> Nick
>
> > Aaron
> >
> >
> >
> >
> >
------------------------------------------------------------------------
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://lists.llvm.org/pipermail/llvm-dev/attachments/20090219/83dc5ec6/attachment.html>
-------------- next part --------------
checking build system type... i686-pc-cygwin
checking host system type... i686-pc-cygwin
checking target system type... i686-pc-cygwin
checking type of operating system we're going to host on... Cygwin
checking target architecture... x86
checking for gcc... gcc
checking for C compiler default output file name... a.exe
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables... .exe
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether gcc accepts -g... yes
checking for gcc option to accept ISO C89... none needed
checking how to run the C preprocessor... gcc -E
checking for grep that handles long lines and -e... /usr/bin/grep
checking for egrep... /usr/bin/grep -E
checking for ANSI C header files... yes
checking for sys/types.h... yes
checking for sys/stat.h... yes
checking for stdlib.h... yes
checking for string.h... yes
checking for memory.h... yes
checking for strings.h... yes
checking for inttypes.h... yes
checking for stdint.h... yes
checking for unistd.h... yes
checking whether byte ordering is bigendian... no
checking how to run the C preprocessor... gcc -E
checking whether we are using the GNU C compiler... (cached) yes
checking whether gcc accepts -g... (cached) yes
checking for gcc option to accept ISO C89... (cached) none needed
checking for g++... g++
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking ... checking for flex... flex
checking for yywrap in -lfl... yes
checking lex output file root... lex.yy
checking whether yytext is a pointer... yes

checking ... checking for bison... bison -y

checking for BSD-compatible nm... /usr/bin/nm -B
checking for GNU make... make
checking whether ln -s works... yes
checking for cmp... /usr/bin/cmp
checking for cp... /usr/bin/cp
checking for date... /usr/bin/date
checking for find... /usr/bin/find
checking for grep... (cached) /usr/bin/grep
checking for mkdir... /usr/bin/mkdir
checking for mv... /usr/bin/mv
checking for ranlib... ranlib
checking for rm... /usr/bin/rm
checking for sed... /usr/bin/sed
checking for tar... /usr/bin/tar
checking for pwd... /usr/bin/pwd
checking for Graphviz... echo Graphviz
checking for dot... echo dot
checking for gv... no
checking for gsview32... no
checking for dotty... echo dotty
checking for perl... /usr/bin/perl
checking for Perl 5.006 or newer... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for bzip2... /usr/bin/bzip2
checking for doxygen... /usr/bin/doxygen
checking for groff... /usr/bin/groff
checking for gzip... /usr/bin/gzip
checking for pod2html... /usr/bin/pod2html
checking for pod2man... /usr/bin/pod2man
checking for runtest... /usr/bin/runtest
checking for the tclsh program in tclinclude directory... none
checking for tclsh8.4... no
checking for tclsh8.4.8... no
checking for tclsh8.4.7... no
checking for tclsh8.4.6... no
checking for tclsh8.4.5... no
checking for tclsh8.4.4... no
checking for tclsh8.4.3... no
checking for tclsh8.4.2... no
checking for tclsh8.4.1... no
checking for tclsh8.4.0... no
checking for tclsh8.3... no
checking for tclsh8.3.5... no
checking for tclsh8.3.4... no
checking for tclsh8.3.3... no
checking for tclsh8.3.2... no
checking for tclsh8.3.1... no
checking for tclsh8.3.0... no
checking for tclsh... /usr/bin/tclsh
checking for zip... no
checking for ocamlc... /usr/bin/ocamlc
checking for ocamlopt... /usr/bin/ocamlopt
checking for ocamldep... /usr/bin/ocamldep
checking for ocamldoc... /usr/bin/ocamldoc
checking for gas... no
checking for as... /usr/bin/as
checking for compiler -Wl,-R<path> option... yes
checking for an ANSI C-conforming const... yes
checking for dirent.h that defines DIR... yes
checking for library containing opendir... none required
checking dlfcn.h usability... yes
checking dlfcn.h presence... yes
checking for dlfcn.h... yes
checking dynamic linker characteristics... Win32 ld.exe
checking which extension is used for loadable modules... .dll
checking which variable specifies run-time library path... PATH
checking for the default library search path... /lib /usr/lib
checking for objdir... .libs
checking command to parse /usr/bin/nm -B output from  object... ok
checking whether libtool supports -dlopen/-dlpreopen... yes
checking for shl_load... no
checking for shl_load in -ldld... no
checking for dlopen in -ldl... yes
checking for dlerror... yes
checking for _ prefix in compiled symbols... yes
checking whether we have to add an underscore for dlsym... unknown
checking whether deplibs are loaded by dlopen... unknown
checking argz.h usability... yes
checking argz.h presence... yes
checking for argz.h... yes
checking for error_t... yes
checking for argz_append... yes
checking for argz_create_sep... yes
checking for argz_insert... yes
checking for argz_next... yes
checking for argz_stringify... yes
checking assert.h usability... yes
checking assert.h presence... yes
checking for assert.h... yes
checking ctype.h usability... yes
checking ctype.h presence... yes
checking for ctype.h... yes
checking errno.h usability... yes
checking errno.h presence... yes
checking for errno.h... yes
checking malloc.h usability... yes
checking malloc.h presence... yes
checking for malloc.h... yes
checking for memory.h... (cached) yes
checking for stdlib.h... (cached) yes
checking stdio.h usability... yes
checking stdio.h presence... yes
checking for stdio.h... yes
checking for unistd.h... (cached) yes
checking dl.h usability... no
checking dl.h presence... no
checking for dl.h... no
checking sys/dl.h usability... no
checking sys/dl.h presence... no
checking for sys/dl.h... no
checking dld.h usability... no
checking dld.h presence... no
checking for dld.h... no
checking mach-o/dyld.h usability... no
checking mach-o/dyld.h presence... no
checking for mach-o/dyld.h... no
checking for string.h... (cached) yes
checking for strchr... yes
checking for strrchr... yes
checking for memcpy... yes
checking for memmove... yes
checking for strcmp... yes
checking for closedir... yes
checking for opendir... yes
checking for readdir... yes
checking for a sed that does not truncate output... /usr/bin/sed
checking for ld used by gcc... /usr/i686-pc-cygwin/bin/ld.exe
checking if the linker (/usr/i686-pc-cygwin/bin/ld.exe) is GNU ld... yes
checking for /usr/i686-pc-cygwin/bin/ld.exe option to reload object files... -r
checking how to recognise dependent libraries... file_magic ^x86 archive
import|^x86 DLL
checking how to run the C++ preprocessor... g++ -E
checking for g77... no
checking for f77... no
checking for xlf... no
checking for frt... no
checking for pgf77... no
checking for cf77... no
checking for fort77... no
checking for fl32... no
checking for af77... no
checking for f90... no
checking for xlf90... no
checking for pgf90... no
checking for pghpf... no
checking for epcf90... no
checking for gfortran... no
checking for g95... no
checking for f95... no
checking for fort... no
checking for xlf95... no
checking for ifort... no
checking for ifc... no
checking for efc... no
checking for pgf95... no
checking for lf95... no
checking for ftn... no
checking whether we are using the GNU Fortran 77 compiler... no
checking whether  accepts -g... no
checking the maximum length of command line arguments... 8192
checking command to parse /usr/bin/nm -B output from gcc object... (cached) ok
checking for objdir... .libs
checking for ar... ar
checking for ranlib... (cached) ranlib
checking for strip... strip
checking if gcc supports -fno-rtti -fno-exceptions... no
checking for gcc option to produce PIC...
checking if gcc static flag -static works... yes
checking if gcc supports -c -o file.o... yes
checking whether the gcc linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared
libraries... yes
checking whether -lc should be explicitly linked in... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
checking whether stripping libraries is possible... yes
checking whether a program can dlopen itself... no
checking if libtool supports shared libraries... yes
checking whether to build shared libraries... yes
checking whether to build static libraries... yes
configure: creating mklib
appending configuration tag "CXX" to mklib
checking for ld used by g++... /usr/i686-pc-cygwin/bin/ld.exe
checking if the linker (/usr/i686-pc-cygwin/bin/ld.exe) is GNU ld... yes
checking whether the g++ linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared
libraries... yes
checking for g++ option to produce PIC...
checking if g++ static flag -static works... yes
checking if g++ supports -c -o file.o... yes
checking whether the g++ linker (/usr/i686-pc-cygwin/bin/ld.exe) supports shared
libraries... yes
checking dynamic linker characteristics... Win32 ld.exe
checking how to hardcode library paths into programs... immediate
appending configuration tag "F77" to mklib
checking for llvm-gcc.exe... no
checking for llvm-g++.exe... no
checking tool compatibility... ok
checking for elf_begin in -lelf... no
checking for sin in -lm... yes
checking for library containing dlopen... none required
checking for ffi_call in -lffi... no
checking for library containing mallinfo... none required
checking for pthread_mutex_init in -lpthread... yes
checking for library containing pthread_mutex_lock... none required
checking for dirent.h that defines DIR... (cached) yes
checking for library containing opendir... (cached) none required
checking for MAP_ANONYMOUS vs. MAP_ANON... yes
checking whether stat file-mode macros are broken... no
checking for ANSI C header files... (cached) yes
checking for sys/wait.h that is POSIX.1 compatible... yes
checking whether time.h and sys/time.h may both be included... yes
checking for dlfcn.h... (cached) yes
checking execinfo.h usability... no
checking execinfo.h presence... no
checking for execinfo.h... no
checking fcntl.h usability... yes
checking fcntl.h presence... yes
checking for fcntl.h... yes
checking for inttypes.h... (cached) yes
checking limits.h usability... yes
checking limits.h presence... yes
checking for limits.h... yes
checking link.h usability... no
checking link.h presence... no
checking for link.h... no
checking for malloc.h... (cached) yes
checking setjmp.h usability... yes
checking setjmp.h presence... yes
checking for setjmp.h... yes
checking signal.h usability... yes
checking signal.h presence... yes
checking for signal.h... yes
checking for stdint.h... (cached) yes
checking for unistd.h... (cached) yes
checking utime.h usability... yes
checking utime.h presence... yes
checking for utime.h... yes
checking windows.h usability... yes
checking windows.h presence... yes
checking for windows.h... yes
checking sys/mman.h usability... yes
checking sys/mman.h presence... yes
checking for sys/mman.h... yes
checking sys/param.h usability... yes
checking sys/param.h presence... yes
checking for sys/param.h... yes
checking sys/resource.h usability... yes
checking sys/resource.h presence... yes
checking for sys/resource.h... yes
checking sys/time.h usability... yes
checking sys/time.h presence... yes
checking for sys/time.h... yes
checking for sys/types.h... (cached) yes
checking malloc/malloc.h usability... no
checking malloc/malloc.h presence... no
checking for malloc/malloc.h... no
checking mach/mach.h usability... no
checking mach/mach.h presence... no
checking for mach/mach.h... no
checking pthread.h usability... yes
checking pthread.h presence... yes
checking for pthread.h... yes
checking for HUGE_VAL sanity... yes
checking for pid_t... yes
checking for size_t... yes
checking return type of signal handlers... void
checking whether struct tm is in sys/time.h or time.h... time.h
checking for int64_t... yes
checking for uint64_t... yes
checking for backtrace... no
checking for ceilf... yes
checking for floorf... yes
checking for roundf... yes
checking for rintf... yes
checking for nearbyintf... yes
checking for getcwd... yes
checking for powf... yes
checking for fmodf... yes
checking for strtof... yes
checking for round... yes
checking for getpagesize... yes
checking for getrusage... yes
checking for getrlimit... yes
checking for setrlimit... yes
checking for gettimeofday... yes
checking for isatty... yes
checking for mkdtemp... yes
checking for mkstemp... yes
checking for mktemp... yes
checking for realpath... yes
checking for sbrk... yes
checking for setrlimit... (cached) yes
checking for strdup... yes
checking for strerror... yes
checking for strerror_r... yes
checking for strtoll... yes
checking for strtoq... no
checking for sysconf... yes
checking for malloc_zone_statistics... no
checking for setjmp... yes
checking for longjmp... yes
checking for sigsetjmp... no
checking for siglongjmp... no
checking if printf has the %a format character...
checking for working alloca.h... yes
checking for alloca... yes
checking for srand48/lrand48/drand48 in <stdlib.h>... yes
checking whether the compiler implements namespaces... yes
checking whether the compiler has <ext/hash_map> defining template class
std::hash_map... no
checking whether the compiler has <ext/hash_map> defining template class
__gnu_cxx::hash_map... yes
checking whether the compiler has <hash_map> defining template class
::hash_map... no
checking whether the compiler has <ext/hash_set> defining template class
std::hash_set... no
checking whether the compiler has <ext/hash_set> defining template class
__gnu_cxx::hash_set... yes
checking whether the compiler has <hash_set> defining template class
::hash_set... no
checking whether the compiler has the standard iterator... yes
checking whether the compiler has the bidirectional iterator... no
checking whether the compiler has forward iterators... no
checking for isnan in <math.h>... yes
checking for isnan in <cmath>... no
checking for std::isnan in <cmath>... yes
checking for isinf in <math.h>... yes
checking for isinf in <cmath>... no
checking for std::isinf in <cmath>... no
checking for finite in <ieeefp.h>... yes
checking for stdlib.h... (cached) yes
checking for unistd.h... (cached) yes
checking for getpagesize... (cached) yes
checking for working mmap... no
checking for mmap of files... yes
checking if /dev/zero is needed for mmap... no
checking for __dso_handle... no
checking whether llvm-gcc is sane... no
checking for compiler -fvisibility-inlines-hidden option... no
configure: creating ./config.status
config.status: creating Makefile.config
config.status: creating llvm.spec
config.status: creating docs/doxygen.cfg
config.status: creating tools/llvm-config/llvm-config.in
config.status: creating include/llvm/Config/config.h
config.status: creating include/llvm/Support/DataTypes.h
config.status: creating include/llvm/ADT/hash_map.h
config.status: creating include/llvm/ADT/hash_set.h
config.status: creating include/llvm/ADT/iterator.h
config.status: executing setup commands
config.status: executing Makefile commands
config.status: executing Makefile.common commands
config.status: executing examples/Makefile commands
config.status: executing lib/Makefile commands
config.status: executing runtime/Makefile commands
config.status: executing test/Makefile commands
config.status: executing test/Makefile.tests commands
config.status: executing unittests/Makefile commands
config.status: executing tools/Makefile commands
config.status: executing utils/Makefile commands
config.status: executing projects/Makefile commands
config.status: executing bindings/Makefile commands
config.status: executing bindings/ocaml/Makefile.ocaml commands
=== configuring in projects/sample (/usr/build/llvm/projects/sample)
configure: running /bin/sh /usr/src/llvm/projects/sample/configure
--prefix=/usr/llvm  --cache-file=/dev/null
--srcdir=/usr/src/llvm/projects/sample
configure: creating ./config.status
config.status: creating Makefile.common
config.status: executing setup commands
config.status: executing Makefile commands
config.status: executing lib/Makefile commands
config.status: executing lib/sample/Makefile commands
config.status: executing tools/Makefile commands
config.status: executing tools/sample/Makefile commands