Release 1.6 LLVM-Cfrontend build error on cygwin

Dear llvmdev,
     I am new to LLVM , but have a task on writing a LLVM backend to generate some architecture specific assembly file.
   Here is my cygwin build setting: GCC 3.4.4 , BIN UTILITY 2.15 ,and all other packages of the right version listed on the LLVM Getting Started doc.
    
   I have successfully built Release 1.6 LLVM. All the tools has been installed there /usr/local/bin .
   But I have problem with building LLVM-Cfrontend that comes with this Release.
   CFrontend build stopped after these lines

I don't really know anything about the cygwin port, but can you try LLVM 1.7? 1.6 is quite old by now...

-Chris

Chris Lattner <sabre <at> nondot.org> writes:

> Deeply confused now. Anyone coming for help?

I don't really know anything about the cygwin port, but can you try LLVM
1.7? 1.6 is quite old by now...

-Chris

I tried 1.7 version llvm, but the result is even worse, I cannot build llvm
now.

Hello, Chuck.

You wrote Tuesday, May 16, 2006, 6:03:14 PM:

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld: BFD
2.16.91
20050610 assertion fail
/netrel/src/binutils-20050610-1/bfd/cofflink.c:1926
make[2]: ***

This is a bug in binutils also seen in mingw32 build. :frowning:

I've sent bug report to binutils bugzilla this weekend.
Hope, this will be fixed sometimes.

As for me, CVS checkout of 8 of May was compiled without
any problems (latest CVS snapshot triggers an assertion).

Hello, Chuck.

You wrote Tuesday, May 16, 2006, 6:03:14 PM:

/netrel/src/binutils-20050610-1/bfd/cofflink.c:1926
make[2]: ***

I've tracked this assertion some more deep. The problem is in
LLVMSelectionDAG.o file.

If I run the next lines, I've got and assertion:
ld -r -o LLVMSelectionDAG.o ScheduleDAGList.o ScheduleDAGRRList.o
ld -o llc LLVMSelectionDAG.o

If I remove one of the SheduleDAG* files from the full list of objects,
LLVMSelectionDAG.o is built from, the assertion is not longer
triggered.

Any ideas, why? I think, there is duplicate symbols somewhere, but I'm
not sure.

What does the assertion say?

Hello, Reid.

You wrote Tuesday, May 16, 2006, 11:13:19 PM:

What does the assertion say?

The same text, as in the original e-mail:

<=cut=>

/usr/lib/gcc/i686-pc-cygwin/3.4.4/../../../../i686-pc-cygwin/bin/ld:
BFD 2.16.91 20050610 assertion fail /netrel/src/binutils-20050610-1/bfd/cofflink.c:1926

<=cut=>

This assertions is in big function named:

bfd_boolean
_bfd_coff_link_input_bfd (struct coff_final_link_info *finfo, bfd *input_bfd)

The text around assertion:

          h = NULL;
          if (*indexp < 0)
            {
              h = *sym_hash;

              /* The m68k-motorola-sysv assembler will sometimes
                 generate two symbols with the same name, but only one
                 will have aux entries. */
              BFD_ASSERT (isymp->n_numaux == 0
                          >> h->numaux == isymp->n_numaux);
            }

Hello, Chuck.

You wrote Tuesday, May 16, 2006, 6:03:14 PM:

I shall skip llc and have another try.

The cheap workaround is to use .a files instead of relinked .o. If you
want, I can send patch.