Skip to contentSkip to conversation

Buildfix: fix libcacard build with -m32 on 64bit machine

PATCH In review Stefan Berger 3 participants 5 messages May 26, 2011 – Jun 7, 2011

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Buildfix: fix libcacard build with -m32 on 64bit machine

When configuring with --extra-cflags="-m32" on a 64bit machine the following error appears during compilation:

make -C libhw64 V="1" TARGET_DIR="libhw64/" all make[1]: Entering directory /root/tmp/qemu-git/libhw64' make[1]: Leaving directory /root/tmp/qemu-git/libhw64' make -C libcacard V="1" TARGET_DIR="libcacard/" all make[1]: Entering directory `/root/tmp/qemu-git/libcacard'
gcc -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4 -lpthread -ldl -lrt -o vscclient cac.o event.o vcard.o vreader.o vcard_emul_nss.o vcard_emul_type.o card_7816.o ../osdep.o ../oslib-posix.o ../qemu-thread-posix.o ../trace.o ../qemu-malloc.o ../qemu-timer-common.o vscclient.o
cac.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [vscclient] Error 1
make[1]: Leaving directory `/root/tmp/qemu-git/libcacard'
make: *** [subdir-libcacard] Error 2

The LDFLAGS are not passed to the compiled. The below patch fixes it.

---
 libcacard/Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)
libcacard/Makefile +1 -1
Index: qemu-git/libcacard/Makefile
===================================================================
@@ -9,7 +9,7 @@ QEMU_OBJS=$(addprefix ../, $(oslib-obj-y
 QEMU_CFLAGS+=-I../
 
 vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
-    $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^,"  LINK  $(TARGET_DIR)$@")
+    $(call quiet-command,$(CC) $(LDFLAGS) $(libcacard_libs) -lrt -o $@ $^,"  LINK  $(TARGET_DIR)$@")
 
 all: vscclient
Reviewed-by on v1 1/1
#1 lore raw
Quoted 2 lines · Stefan Berger

When configuring with --extra-cflags="-m32" on a 64bit machine the following error appears during compilation:

Thanks for the fix.

Quoted 41 lines

make -C libhw64 V="1" TARGET_DIR="libhw64/" all make[1]: Entering directory /root/tmp/qemu-git/libhw64' make[1]: Leaving directory /root/tmp/qemu-git/libhw64' make -C libcacard V="1" TARGET_DIR="libcacard/" all make[1]: Entering directory `/root/tmp/qemu-git/libcacard' gcc -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
-lpthread -ldl -lrt -o vscclient cac.o event.o vcard.o vreader.o
vcard_emul_nss.o vcard_emul_type.o card_7816.o ../osdep.o ../oslib-posix.o ../qemu-thread-posix.o ../trace.o ../qemu-malloc.o ../qemu-timer-common.o vscclient.o
cac.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [vscclient] Error 1
make[1]: Leaving directory `/root/tmp/qemu-git/libcacard'
make: *** [subdir-libcacard] Error 2

The LDFLAGS are not passed to the compiled. The below patch fixes it.

---
 libcacard/Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: qemu-git/libcacard/Makefile
===================================================================

libcacard/Makefile +1 -1
@@ -9,7 +9,7 @@ QEMU_OBJS=$(addprefix ../, $(oslib-obj-y
 QEMU_CFLAGS+=-I../
 
 vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
-    $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^,"
 LINK  $(TARGET_DIR)$@")
+    $(call quiet-command,$(CC) $(LDFLAGS) $(libcacard_libs) -lrt -o
 $@ $^,"  LINK  $(TARGET_DIR)$@")
 

all: vscclient

#2 lore raw
Quoted 4 lines · Alon Levy
Quoted 2 lines · Stefan Berger

When configuring with --extra-cflags="-m32" on a 64bit machine the following error appears during compilation:

Thanks for the fix.

Anybody else who thinks that this patch below is necessary?

Stefan

Quoted 42 lines
Quoted 40 lines

make -C libhw64 V="1" TARGET_DIR="libhw64/" all make[1]: Entering directory /root/tmp/qemu-git/libhw64' make[1]: Leaving directory /root/tmp/qemu-git/libhw64' make -C libcacard V="1" TARGET_DIR="libcacard/" all make[1]: Entering directory `/root/tmp/qemu-git/libcacard' gcc -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
-lpthread -ldl -lrt -o vscclient cac.o event.o vcard.o vreader.o
vcard_emul_nss.o vcard_emul_type.o card_7816.o ../osdep.o ../oslib-posix.o ../qemu-thread-posix.o ../trace.o ../qemu-malloc.o ../qemu-timer-common.o vscclient.o
cac.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [vscclient] Error 1
make[1]: Leaving directory `/root/tmp/qemu-git/libcacard'
make: *** [subdir-libcacard] Error 2

The LDFLAGS are not passed to the compiled. The below patch fixes it.

---
  libcacard/Makefile |    2 +-
  1 file changed, 1 insertion(+), 1 deletion(-)

Index: qemu-git/libcacard/Makefile
===================================================================

libcacard/Makefile +1 -1
@@ -9,7 +9,7 @@ QEMU_OBJS=$(addprefix ../, $(oslib-obj-y
  QEMU_CFLAGS+=-I../
 
  vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
-    $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^,"
 LINK  $(TARGET_DIR)$@")
+    $(call quiet-command,$(CC) $(LDFLAGS) $(libcacard_libs) -lrt -o
 $@ $^,"  LINK  $(TARGET_DIR)$@")
 

all: vscclient

#3 lore raw

Am 07.06.2011 um 16:06 schrieb Stefan Berger:

Quoted 6 lines · Alon Levy
Quoted 4 lines · Stefan Berger
Quoted 2 lines

When configuring with --extra-cflags="-m32" on a 64bit machine the following error appears during compilation:

Thanks for the fix.

Anybody else who thinks that this patch below is necessary?

Yes, this or a similar patch. Not sure if there's a QEMU_LDFLAGS and, if yes, whether that or LDFLAGS is more correct.

The only issue I see is that we may be passing unnecessary cruft in, but that seems negligible. Fixing up $libcacard_libs to contain the relevant LDFLAGS is probably more complicated.

Andreas

Quoted 43 lines
Quoted 42 lines
Quoted 40 lines

make -C libhw64 V="1" TARGET_DIR="libhw64/" all make[1]: Entering directory /root/tmp/qemu-git/libhw64' make[1]: Leaving directory /root/tmp/qemu-git/libhw64' make -C libcacard V="1" TARGET_DIR="libcacard/" all make[1]: Entering directory `/root/tmp/qemu-git/libcacard' gcc -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
-lpthread -ldl -lrt -o vscclient cac.o event.o vcard.o vreader.o
vcard_emul_nss.o vcard_emul_type.o card_7816.o ../osdep.o ../oslib-posix.o ../qemu-thread-posix.o ../trace.o ../qemu-malloc.o ../qemu-timer-common.o vscclient.o
cac.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [vscclient] Error 1
make[1]: Leaving directory `/root/tmp/qemu-git/libcacard'
make: *** [subdir-libcacard] Error 2

The LDFLAGS are not passed to the compiled. The below patch fixes it.

---
 libcacard/Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: qemu-git/libcacard/Makefile
===================================================================

libcacard/Makefile +1 -1
@@ -9,7 +9,7 @@ QEMU_OBJS=$(addprefix ../, $(oslib-obj-y
 QEMU_CFLAGS+=-I../
 
 vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
-    $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^,"
 LINK  $(TARGET_DIR)$@")
+    $(call quiet-command,$(CC) $(LDFLAGS) $(libcacard_libs) -lrt -o
 $@ $^,"  LINK  $(TARGET_DIR)$@")
 

all: vscclient

#4 lore raw
Quoted 11 lines · Andreas Färber

Am 07.06.2011 um 16:06 schrieb Stefan Berger:

Quoted 6 lines · Alon Levy
Quoted 4 lines · Stefan Berger
Quoted 2 lines

When configuring with --extra-cflags="-m32" on a 64bit machine the following error appears during compilation:

Thanks for the fix.

Anybody else who thinks that this patch below is necessary?

Yes, this or a similar patch. Not sure if there's a QEMU_LDFLAGS and, if yes, whether that or LDFLAGS is more correct.

There is no QEMU_LDFLAGS from what I can see.

Quoted 3 lines

The only issue I see is that we may be passing unnecessary cruft in, but that seems negligible. Fixing up $libcacard_libs to contain the relevant LDFLAGS is probably more complicated.

For the below linking step the LDFLAGS presumably contain the right command line parameters.

Stefan

Quoted 47 lines

Andreas

Quoted 43 lines
Quoted 42 lines
Quoted 40 lines

make -C libhw64 V="1" TARGET_DIR="libhw64/" all make[1]: Entering directory /root/tmp/qemu-git/libhw64' make[1]: Leaving directory /root/tmp/qemu-git/libhw64' make -C libcacard V="1" TARGET_DIR="libcacard/" all make[1]: Entering directory `/root/tmp/qemu-git/libcacard' gcc -lssl3 -lsmime3 -lnss3 -lnssutil3 -lplds4 -lplc4 -lnspr4
-lpthread -ldl -lrt -o vscclient cac.o event.o vcard.o vreader.o
vcard_emul_nss.o vcard_emul_type.o card_7816.o ../osdep.o ../oslib-posix.o ../qemu-thread-posix.o ../trace.o ../qemu-malloc.o ../qemu-timer-common.o vscclient.o
cac.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make[1]: *** [vscclient] Error 1
make[1]: Leaving directory `/root/tmp/qemu-git/libcacard'
make: *** [subdir-libcacard] Error 2

The LDFLAGS are not passed to the compiled. The below patch fixes it.

---
 libcacard/Makefile |    2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Index: qemu-git/libcacard/Makefile
===================================================================

libcacard/Makefile +1 -1
@@ -9,7 +9,7 @@ QEMU_OBJS=$(addprefix ../, $(oslib-obj-y
 QEMU_CFLAGS+=-I../
 
 vscclient: $(libcacard-y) $(QEMU_OBJS) vscclient.o
-    $(call quiet-command,$(CC) $(libcacard_libs) -lrt -o $@ $^,"
 LINK  $(TARGET_DIR)$@")
+    $(call quiet-command,$(CC) $(LDFLAGS) $(libcacard_libs) -lrt -o
 $@ $^,"  LINK  $(TARGET_DIR)$@")
 

all: vscclient