acrux_it at libero.it
2011-Dec-02 11:30 UTC
[LLVMdev] LLVM-3.0 fails to build on linux ppc32
hi, i just try to build llvm-3.0 (stable) on linux ppc32 (CRUX PPC 2.7) with
gcc-4.5.3, binutils-2.21.1, glibc-2.12.2 .
As this suggestion:
http://llvm.org/bugs/show_bug.cgi?id=10969
I applied a patch like this one:
--- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
2011-07-26 01:24:55.000000000 +0200
+++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h
2011-12-02 02:04:06.000000000 +0100
@@ -34,6 +34,10 @@
} // End llvm namespace
+// Generated files will use "namespace PPC". To avoid symbol clash,
+// undefine PPC here. PPC may be predefined on some hosts.
+#undef PPC
+
// Defines symbolic names for PowerPC registers. This defines a mapping from
// register name to register number.
//
--- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h
2011-07-26 02:24:13.000000000 +0200
+++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h
2011-12-02 02:05:22.000000000 +0100
@@ -14,6 +14,10 @@
#ifndef LLVM_TARGET_POWERPC_PPCPREDICATES_H
#define LLVM_TARGET_POWERPC_PPCPREDICATES_H
+// Generated files will use "namespace PPC". To avoid symbol clash,
+// undefine PPC here. PPC may be predefined on some hosts.
+#undef PPC
+
namespace llvm {
namespace PPC {
/// Predicate - These are "(BI << 5) | BO" for various
predicates.
but i got this further error:
[...]
make[3]: Leaving directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/JIT'
make[3]: Entering directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT'
llvm[3]: Compiling Intercept.cpp for Release build
llvm[3]: Compiling MCJIT.cpp for Release build
llvm[3]: Building Release Archive Library libLLVMMCJIT.a
make[3]: Leaving directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT'
make[3]: Entering directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld'
llvm[3]: Compiling RuntimeDyld.cpp for Release build
llvm[3]: Compiling RuntimeDyldMachO.cpp for Release build
llvm[3]: Building Release Archive Library libLLVMRuntimeDyld.a
make[3]: Leaving directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld'
make[2]: Leaving directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine'
make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.
src/lib/Linker'
llvm[2]: Compiling LinkArchives.cpp for Release build
llvm[2]: Compiling LinkItems.cpp for Release build
llvm[2]: Compiling LinkModules.cpp for Release build
llvm[2]: Compiling Linker.cpp for Release build
llvm[2]: Building Release Archive Library libLLVMLinker.a
make[2]: Leaving directory
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/Linker'
make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC'
llvm[2]: Compiling ELFObjectWriter.cpp for Release build
In file included from ELFObjectWriter.cpp:33:0:
../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected
identifier before numeric constant
../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected
unqualified-id before numeric constant
ELFObjectWriter.cpp:1832:1: error: expected '}' at end of input
/bin/rm: cannot remove
`/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.d.tmp':
No such file or directory
make[2]: ***
[/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.o]
Error
1
make[2]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC'
make[1]: *** [MC/.makeall] Error 2
make[1]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib'
make: *** [all] Error 1
cheers,
--nico
On Fri, Dec 02, 2011 at 12:30:29PM +0100, acrux_it at libero.it wrote:> +// Generated files will use "namespace PPC". To avoid symbol clash, > +// undefine PPC here. PPC may be predefined on some hosts. > +#undef PPC > +I wonder if it shouldn't just be renamed to PowerPC everywhere. It's not that much longer. Joerg
Nico, There is a third place that '#undef PPC' is needed (at the top of PPCFixupKinds.h). Alternatively, you can run configure with -UPPC in your CPPFLAGS. I'll try to get this fixed in trunk shortly. -Hal On Fri, 2011-12-02 at 12:30 +0100, acrux_it at libero.it wrote:> hi, i just try to build llvm-3.0 (stable) on linux ppc32 (CRUX PPC 2.7) with > gcc-4.5.3, binutils-2.21.1, glibc-2.12.2 . > > As this suggestion: > http://llvm.org/bugs/show_bug.cgi?id=10969 > I applied a patch like this one: > > --- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h > 2011-07-26 01:24:55.000000000 +0200 > +++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h > 2011-12-02 02:04:06.000000000 +0100 > @@ -34,6 +34,10 @@ > > } // End llvm namespace > > +// Generated files will use "namespace PPC". To avoid symbol clash, > +// undefine PPC here. PPC may be predefined on some hosts. > +#undef PPC > + > // Defines symbolic names for PowerPC registers. This defines a mapping from > // register name to register number. > // > --- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h > 2011-07-26 02:24:13.000000000 +0200 > +++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h > 2011-12-02 02:05:22.000000000 +0100 > @@ -14,6 +14,10 @@ > #ifndef LLVM_TARGET_POWERPC_PPCPREDICATES_H > #define LLVM_TARGET_POWERPC_PPCPREDICATES_H > > +// Generated files will use "namespace PPC". To avoid symbol clash, > +// undefine PPC here. PPC may be predefined on some hosts. > +#undef PPC > + > namespace llvm { > namespace PPC { > /// Predicate - These are "(BI << 5) | BO" for various predicates. > > > > > > but i got this further error: > > [...] > make[3]: Leaving directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/JIT' > make[3]: Entering directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT' > llvm[3]: Compiling Intercept.cpp for Release build > llvm[3]: Compiling MCJIT.cpp for Release build > llvm[3]: Building Release Archive Library libLLVMMCJIT.a > make[3]: Leaving directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT' > make[3]: Entering directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld' > llvm[3]: Compiling RuntimeDyld.cpp for Release build > llvm[3]: Compiling RuntimeDyldMachO.cpp for Release build > llvm[3]: Building Release Archive Library libLLVMRuntimeDyld.a > make[3]: Leaving directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld' > make[2]: Leaving directory > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine' > make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0. > src/lib/Linker' > llvm[2]: Compiling LinkArchives.cpp for Release build > llvm[2]: Compiling LinkItems.cpp for Release build > llvm[2]: Compiling LinkModules.cpp for Release build > llvm[2]: Compiling Linker.cpp for Release build > llvm[2]: Building Release Archive Library libLLVMLinker.a > make[2]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/Linker' > make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC' > llvm[2]: Compiling ELFObjectWriter.cpp for Release build > In file included from ELFObjectWriter.cpp:33:0: > ../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected > identifier before numeric constant > ../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected > unqualified-id before numeric constant > ELFObjectWriter.cpp:1832:1: error: expected '}' at end of input > /bin/rm: cannot remove > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.d.tmp': > No such file or directory > make[2]: *** > [/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.o] > Error > 1 > make[2]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC' > make[1]: *** [MC/.makeall] Error 2 > make[1]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib' > make: *** [all] Error 1 > > > cheers, > --nico > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
On Fri, 2011-12-02 at 13:28 +0100, Joerg Sonnenberger wrote:> On Fri, Dec 02, 2011 at 12:30:29PM +0100, acrux_it at libero.it wrote: > > +// Generated files will use "namespace PPC". To avoid symbol clash, > > +// undefine PPC here. PPC may be predefined on some hosts. > > +#undef PPC > > + > > I wonder if it shouldn't just be renamed to PowerPC everywhere. It's not > that much longer.Would we need to change the 'PPC' prefix on all of the file names and other associated classes too? -Hal> > Joerg > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory
On Fri, 2011-12-02 at 06:58 -0600, Hal Finkel wrote:> Nico, > > There is a third place that '#undef PPC' is needed (at the top of > PPCFixupKinds.h). Alternatively, you can run configure with -UPPC in > your CPPFLAGS. I'll try to get this fixed in trunk shortly.I just tested this, and I was wrong: passing -UPPC to configure in CPPFLAGS does not work for some reason. Providing CPPFLAGS=-UPPC as an argument to make, however, does seem to work. $ make CPPFLAGS=-UPPC -Hal> > -Hal > > On Fri, 2011-12-02 at 12:30 +0100, acrux_it at libero.it wrote: > > hi, i just try to build llvm-3.0 (stable) on linux ppc32 (CRUX PPC 2.7) with > > gcc-4.5.3, binutils-2.21.1, glibc-2.12.2 . > > > > As this suggestion: > > http://llvm.org/bugs/show_bug.cgi?id=10969 > > I applied a patch like this one: > > > > --- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h > > 2011-07-26 01:24:55.000000000 +0200 > > +++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCMCTargetDesc.h > > 2011-12-02 02:04:06.000000000 +0100 > > @@ -34,6 +34,10 @@ > > > > } // End llvm namespace > > > > +// Generated files will use "namespace PPC". To avoid symbol clash, > > +// undefine PPC here. PPC may be predefined on some hosts. > > +#undef PPC > > + > > // Defines symbolic names for PowerPC registers. This defines a mapping from > > // register name to register number. > > // > > --- llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h > > 2011-07-26 02:24:13.000000000 +0200 > > +++ llvm-3.0.src/lib/Target/PowerPC/MCTargetDesc/PPCPredicates.h > > 2011-12-02 02:05:22.000000000 +0100 > > @@ -14,6 +14,10 @@ > > #ifndef LLVM_TARGET_POWERPC_PPCPREDICATES_H > > #define LLVM_TARGET_POWERPC_PPCPREDICATES_H > > > > +// Generated files will use "namespace PPC". To avoid symbol clash, > > +// undefine PPC here. PPC may be predefined on some hosts. > > +#undef PPC > > + > > namespace llvm { > > namespace PPC { > > /// Predicate - These are "(BI << 5) | BO" for various predicates. > > > > > > > > > > > > but i got this further error: > > > > [...] > > make[3]: Leaving directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/JIT' > > make[3]: Entering directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT' > > llvm[3]: Compiling Intercept.cpp for Release build > > llvm[3]: Compiling MCJIT.cpp for Release build > > llvm[3]: Building Release Archive Library libLLVMMCJIT.a > > make[3]: Leaving directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/MCJIT' > > make[3]: Entering directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld' > > llvm[3]: Compiling RuntimeDyld.cpp for Release build > > llvm[3]: Compiling RuntimeDyldMachO.cpp for Release build > > llvm[3]: Building Release Archive Library libLLVMRuntimeDyld.a > > make[3]: Leaving directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine/RuntimeDyld' > > make[2]: Leaving directory > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/ExecutionEngine' > > make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0. > > src/lib/Linker' > > llvm[2]: Compiling LinkArchives.cpp for Release build > > llvm[2]: Compiling LinkItems.cpp for Release build > > llvm[2]: Compiling LinkModules.cpp for Release build > > llvm[2]: Compiling Linker.cpp for Release build > > llvm[2]: Building Release Archive Library libLLVMLinker.a > > make[2]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/Linker' > > make[2]: Entering directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC' > > llvm[2]: Compiling ELFObjectWriter.cpp for Release build > > In file included from ELFObjectWriter.cpp:33:0: > > ../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected > > identifier before numeric constant > > ../Target/PowerPC/MCTargetDesc/PPCFixupKinds.h:16:11: error: expected > > unqualified-id before numeric constant > > ELFObjectWriter.cpp:1832:1: error: expected '}' at end of input > > /bin/rm: cannot remove > > `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.d.tmp': > > No such file or directory > > make[2]: *** > > [/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC/Release/ELFObjectWriter.o] > > Error > > 1 > > make[2]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib/MC' > > make[1]: *** [MC/.makeall] Error 2 > > make[1]: Leaving directory `/mnt/EXT/00/llvm/work/src/llvm-3.0.src/lib' > > make: *** [all] Error 1 > > > > > > cheers, > > --nico > > _______________________________________________ > > LLVM Developers mailing list > > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >-- Hal Finkel Postdoctoral Appointee Leadership Computing Facility Argonne National Laboratory