LLVM 2.6 cygwin build fails

Hi,

I'm trying to build LLVM 2.6 (from svn branch release_26) on cygwin
1.7, and I have the following errors with both GCC 3.4.4 and GCC 4.3.4

llvm[2]: Linking Release Loadable Module profile_rt.dll
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
warning: cannot find entry symbol __cygwin_dll_entry@12; defaulting to
62fc1000
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/BasicBlockTracing.o:BasicBlockTracing.c:(.text+0x36):
undefined reference to `_free'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/BasicBlockTracing.o:BasicBlockTracing.c:(.text+0xca):
undefined reference to `_malloc'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/BasicBlockTracing.o:BasicBlockTracing.c:(.text+0xe8):
undefined reference to `_atexit'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/BlockProfiling.o:BlockProfiling.c:(.text+0x65):
undefined reference to `_atexit'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x76):
undefined reference to `_strdup'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x9a):
undefined reference to `_memmove'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0xe3):
undefined reference to `_memmove'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x105):
undefined reference to `_printf'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x113):
undefined reference to `_puts'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x13c):
undefined reference to `_strlen'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x14e):
undefined reference to `_malloc'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x182):
undefined reference to `_strlen'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x19b):
undefined reference to `_memcpy'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x1fb):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x21a):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x23b):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x25e):
undefined reference to `_open'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x296):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x2b5):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x2d6):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x30d):
undefined reference to `_write'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x332):
undefined reference to `_fprintf'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/CommonProfiling.o:CommonProfiling.c:(.text+0x33e):
undefined reference to `_perror'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/EdgeProfiling.o:EdgeProfiling.c:(.text+0x65):
undefined reference to `_atexit'
/cygdrive/c/projects/thesis/llvm-suite-2.6/llvm-2.6/runtime/libprofile/Release/FunctionProfiling.o:FunctionProfiling.c:(.text+0x65):
undefined reference to `_atexit'
/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../libpthread.a(t-d000053.o):(.text+0x2):
undefined reference to `__imp____getreent'
collect2: ld returned 1 exit status

This is what I got after

  ./configure --enable-optimized --enable-targets=x86
  make -j2

Can anybody help me with this?

GCC version info:

  gcc-3 (GCC) 3.4.4 (cygming special, gdc 0.12, using dmd 0.125)
  gcc-4 (GCC) 4.3.4 20090804 (release) 1

Binutils version 2.19.51-1.

                Gregory

I'm trying to build LLVM 2.6 (from svn branch release_26) on cygwin
1.7, and I have the following errors with both GCC 3.4.4 and GCC 4.3.4

llvm[2]: Linking Release Loadable Module profile_rt.dll

Cygwin does not support dynamic linking (as any windows target).
For the moment - you can just build tools and not the runtime via
"make tools-only".

I'm trying to build LLVM 2.6 (from svn branch release_26) on cygwin
1.7, and I have the following errors with both GCC 3.4.4 and GCC 4.3.4

llvm[2]: Linking Release Loadable Module profile_rt.dll

Cygwin does not support dynamic linking (as any windows target).
For the moment - you can just build tools and not the runtime via
"make tools-only".

Thanks! What about the following patch?

commit cca46eac77c6a397aa85c903ba516165b85f98a9
Author: Gregory Petrosyan <gregory.petrosyan@gmail.com>

    GettingStarted: mention problems with dynamic linking on Windows

    Signed-off-by: Gregory Petrosyan <gregory.petrosyan@gmail.com>

diff --git a/docs/GettingStarted.html b/docs/GettingStarted.html
index 2e2200d..b1fce86 100644
--- a/docs/GettingStarted.html
+++ b/docs/GettingStarted.html
@@ -252,13 +252,15 @@ software you will need.</p>
</tr>
<tr>
   <td>Cygwin/Win32</td>
- <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a></sup></td>
+ <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_8">8</a>,
+ <a href="#pf_11">11</a></sup></td>
   <td>GCC 3.4.X, binutils 2.15</td>
</tr>
<tr>
   <td>MinGW/Win32</td>
   <td>x86<sup><a href="#pf_1">1</a>,<a href="#pf_6">6</a>,
- <a href="#pf_8">8</a>, <a href="#pf_10">10</a></sup></td>
+ <a href="#pf_8">8</a>,<a href="#pf_10">10</a>,
+ <a href="#pf_11">11</a></sup></td>
   <td>GCC 3.4.X, binutils 2.15</td>
</tr>
</table>
@@ -331,6 +333,9 @@ up</a></li>
     before any Windows-based versions such as Strawberry Perl and
     ActivePerl, as these have Windows-specifics that will cause the
     build to fail.</a></li>
+<li><a name="pf_11">At the moment, LLVM modules requiring dynamic linking can
+ not be built on Windows. However, you can build LLVM tools using
+ <i>"make tools-only"</i>.</li>
</ol>
</div>

Forgot to include the mailing list, sorry.

I think MSYS can build DLLs on Win32 so it's only the Cygwin version that can
not build the modules.
That's what our team is trying to do right now using LLVM-GCC.

The system does not matter.
The issue here is that on windows you cannot have undefined symbols in
the binaries. Thus there is no support for "loadable modules".

Hi,
do you know about LoadLibrary and GetProcAddress?
http://msdn.microsoft.com/en-us/library/ms682599(VS.85).aspx
This might be what you need for loadable modules in generic, but I don't know the actual use case, so i'm not 100% sure if you are able to archieve your goal with the above.
Cornelius

do you know about LoadLibrary and GetProcAddress?

Yes, surely :slight_smile:

know the actual use case, so i'm not 100% sure if you are able to
archieve your goal with the above.

No