Message ID | 20130409225958.760c72ac@zephyr.in.ibm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Apr 9, 2013 at 8:29 PM, Prerna Saxena <prerna@linux.vnet.ibm.com> wrote: > 'lkvm' compilation on ppc64 fails with the following error : > ...[snip].. > LINK guest/init > LINK lkvm > /usr/bin/ld: powerpc:common architecture of input file `guest/guest_init.o' > is incompatible with powerpc:common64 output > collect2: ld returned 1 exit status > make: *** [lkvm] Error 1 > > This patch corrects the error above, and enables 'lkvm' to compile on ppc64 > architecture. > > Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com> > --- > tools/kvm/Makefile | 4 ++++ > 1 file changed, 4 insertions(+) > > diff --git a/tools/kvm/Makefile b/tools/kvm/Makefile > index 0c59faa..269e29e 100644 > --- a/tools/kvm/Makefile > +++ b/tools/kvm/Makefile > @@ -335,7 +335,11 @@ $(PROGRAM_ALIAS): $(PROGRAM) > $(GUEST_INIT): guest/init.c > $(E) " LINK " $@ > $(Q) $(CC) -static guest/init.c -o $@ > +ifeq ($(ARCH), powerpc) > + $(Q) $(LD) -r -b binary --oformat elf64-powerpc -o guest/guest_init.o $(GUEST_INIT) > +else > $(Q) $(LD) -r -b binary -o guest/guest_init.o $(GUEST_INIT) > +endif > > $(DEPS): > > -- > 1.7.10.4 Michael, Sasha, comments? -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
On 04/10/2013 09:05 PM, Sasha Levin wrote: > Hm, what would LD create before this patch? I thought that the default > would be to create a binary that corresponds to the platform you're > building in, so if you build on ppc64 you'd get ppc64 binaries, no? > Hi Sasha, Thanks for the prompt response. Powerpc had historically supported 32 bit userspace on a 64 bit kernel, before everything moved 64 bit. I'd hit this issue since the default output of 'ld' was turning out to be 'elf32-powerpc' on my ppc64 build machine. This was running ld-2.22. I found that adding '--oformat=elf64-powerpc' to the Makefile helped me tide over it, so I sent a patch to that end. Today, I verified on another ppc64 machine that ld is automatically choosing 'elf64-powerpc'. This machine is running 'ld-2.23' So, this patch can be ignored, since it appears to be a toolchain dependency. Or, we could put it in place, to ensure kvmtool builds dont break even if the toolchain is not perfectly configured. As you suggest :) Regards, Prerna > > > On Wed, Apr 10, 2013 at 2:44 AM, Pekka Enberg <penberg@kernel.org > <mailto:penberg@kernel.org>> wrote: > > On Tue, Apr 9, 2013 at 8:29 PM, Prerna Saxena > <prerna@linux.vnet.ibm.com <mailto:prerna@linux.vnet.ibm.com>> wrote: > > 'lkvm' compilation on ppc64 fails with the following error : > > ...[snip].. > > LINK guest/init > > LINK lkvm > > /usr/bin/ld: powerpc:common architecture of input file > `guest/guest_init.o' > > is incompatible with powerpc:common64 output > > collect2: ld returned 1 exit status > > make: *** [lkvm] Error 1 > > > > This patch corrects the error above, and enables 'lkvm' to compile > on ppc64 > > architecture. > > > > Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com > <mailto:prerna@linux.vnet.ibm.com>> > > --- > > tools/kvm/Makefile | 4 ++++ > > 1 file changed, 4 insertions(+) > > > > diff --git a/tools/kvm/Makefile b/tools/kvm/Makefile > > index 0c59faa..269e29e 100644 > > --- a/tools/kvm/Makefile > > +++ b/tools/kvm/Makefile > > @@ -335,7 +335,11 @@ $(PROGRAM_ALIAS): $(PROGRAM) > > $(GUEST_INIT): guest/init.c > > $(E) " LINK " $@ > > $(Q) $(CC) -static guest/init.c -o $@ > > +ifeq ($(ARCH), powerpc) > > + $(Q) $(LD) -r -b binary --oformat elf64-powerpc -o > guest/guest_init.o $(GUEST_INIT) > > +else > > $(Q) $(LD) -r -b binary -o guest/guest_init.o $(GUEST_INIT) > > +endif > > > > $(DEPS): > > > > -- > > 1.7.10.4 > > Michael, Sasha, comments? > -- > To unsubscribe from this list: send the line "unsubscribe kvm" in > the body of a message to majordomo@vger.kernel.org > <mailto:majordomo@vger.kernel.org> > More majordomo info at http://vger.kernel.org/majordomo-info.html > >
On 04/11/2013 12:53 PM, Prerna Saxena wrote: > On 04/10/2013 09:05 PM, Sasha Levin wrote: >> Hm, what would LD create before this patch? I thought that the default >> would be to create a binary that corresponds to the platform you're >> building in, so if you build on ppc64 you'd get ppc64 binaries, no? >> > > Hi Sasha, > Thanks for the prompt response. > Powerpc had historically supported 32 bit userspace on a 64 bit kernel, > before everything moved 64 bit. > > I'd hit this issue since the default output of 'ld' was turning out to > be 'elf32-powerpc' on my ppc64 build machine. This was running ld-2.22. > I found that adding '--oformat=elf64-powerpc' to the Makefile helped me > tide over it, so I sent a patch to that end. > Today, I verified on another ppc64 machine that ld is automatically > choosing 'elf64-powerpc'. This machine is running 'ld-2.23' > > So, this patch can be ignored, since it appears to be a toolchain > dependency. Or, we could put it in place, to ensure kvmtool builds dont > break even if the toolchain is not perfectly configured. > As you suggest :) What worries me with about this patch is that it will break build on 32bit machines. I don't know if those are even supported these days or not, but if they are - we need something different to handle that. Thanks, Sasha -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/tools/kvm/Makefile b/tools/kvm/Makefile index 0c59faa..269e29e 100644 --- a/tools/kvm/Makefile +++ b/tools/kvm/Makefile @@ -335,7 +335,11 @@ $(PROGRAM_ALIAS): $(PROGRAM) $(GUEST_INIT): guest/init.c $(E) " LINK " $@ $(Q) $(CC) -static guest/init.c -o $@ +ifeq ($(ARCH), powerpc) + $(Q) $(LD) -r -b binary --oformat elf64-powerpc -o guest/guest_init.o $(GUEST_INIT) +else $(Q) $(LD) -r -b binary -o guest/guest_init.o $(GUEST_INIT) +endif $(DEPS):
'lkvm' compilation on ppc64 fails with the following error : ...[snip].. LINK guest/init LINK lkvm /usr/bin/ld: powerpc:common architecture of input file `guest/guest_init.o' is incompatible with powerpc:common64 output collect2: ld returned 1 exit status make: *** [lkvm] Error 1 This patch corrects the error above, and enables 'lkvm' to compile on ppc64 architecture. Signed-off-by: Prerna Saxena <prerna@linux.vnet.ibm.com> --- tools/kvm/Makefile | 4 ++++ 1 file changed, 4 insertions(+)