PING: [PATCH FOR REVIEW] System Zlib Support (original) (raw)

Andrew Hughes ahughes at redhat.com
Tue Aug 14 12:36:24 UTC 2012


----- Original Message -----

On 10/08/2012 18:40, Andrew Hughes wrote: > ----- Original Message ----- >> Hi Andrew >> >> Alan mentioned the other day that the build (with your latest >> patch, >> with zlib-dev) failed at pack200 >> when he tried to turn it on on linux. Can your double check on >> your >> system? >> > What kind of failure? All webrevs I've posted pass a complete > build here, > and we've been using system zlib for years as previously mentioned, > so I'm > surprised by this. > I grabbed your patch a few days ago and did a build+test job on all platforms (Linux/Solaris/Mac/Windows) and didn't see any issues. This was of course using the defaults, I didn't set SYSTEMZLIB explicitly.

However I did see an issue on Ubuntu 12.0.4 (32-bit) with SYSTEMZLIB=true. Attached is the tail of the log. I haven't had time to look at it but I do see that libzip.so is built as expected (ldd shows it is linked to libz). The build failure is with unpack200 as it uses the the zlib functions. Building with SYSTEMZLIB=false is fine on this system. -Alan rm -f ../../../../../build/linux-i586/bin/unpack200 rm -f ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/mapfile-vers /bin/cp mapfile-vers-unpack200 ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/mapfile-vers /usr/bin/gcc -O2 -DPRODUCT -fPIC -DCCNOEX -W -Wall -Wno-unused -Wno-parentheses -fno-omit-frame-pointer -DLITTLEENDIAN -DFULL -DSYSTEMZLIB -DNDEBUG -DARCH='"i586"' -Di586 -DLINUX -DRELEASE='"1.8.0-internal"' -DLARGEFILE64SOURCE -DGNUSOURCE -DREENTRANT -I. -I../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/CClassHeaders -I../../../../../src/closed/share/javavm/export -I../../../../../src/solaris/javavm/export -I../../../../../src/share/javavm/export -I../../../../../src/share/native/common -I../../../../../src/solaris/native/common -I../../../../../src/share/native/com/sun/java/util/jar/pack -I../../../../../src/solaris/native/com/sun/java/util/jar/pack -Xlinker -O1 -Xlinker -version-script=mapfile-vers -Wl,--hash-style=both -Xlinker -z -Xlinker origin -Xlinker -rpath -Xlinker $ORIGIN -Xlinker -z -Xlinker defs -L../../../../../build/linux-i586/lib/i386 -Wl,-soname=libunpack.so -lz -lc ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/bands.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/bytes.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/coding.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/unpack.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/utils.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/main.o -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic -o ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200 ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function jar::deflatebytes(bytes&, bytes&)':_ _zip.cpp:(.text+0x79b): undefined reference to deflateInit2' zip.cpp:(.text+0x828): undefined reference to deflate'_ _zip.cpp:(.text+0x842): undefined reference to deflateEnd' zip.cpp:(.text+0x854): undefined reference to deflateEnd'_ _zip.cpp:(.text+0x87c): undefined reference to deflate' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function jar::addJarEntry(char const*, bool, int, bytes&,_ _bytes&)':_ _zip.cpp:(.text+0x8d2): undefined reference to crc32' zip.cpp:(.text+0x9d1): undefined reference to crc32'_ _zip.cpp:(.text+0x9ee): undefined reference to crc32' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function gunzip::free()':_ _zip.cpp:(.text+0xb33): undefined reference to inflateEnd' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function readinputviagzip(unpacker*, void*, long long, long_ _long)':_ _zip.cpp:(.text+0xbfe): undefined reference to inflate' ../../../../../build/linux-i586/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj/zip.o: In function gunzip::start(int)':_ _zip.cpp:(.text+0xf35): undefined reference to inflateInit2' collect2: ld returned 1 exit status

Ok, the obvious difference between my output and yours is you seem to be linking statically via gcc rather than dynamically with g++.

/usr/bin/g++ -O2 -DPRODUCT -fPIC -DCC_NOEX -W -Wall
-Wno-unused -Wno-parentheses -fno-omit-frame-pointer -D_LITTLE_ENDIAN -g
-DFULL -DSYSTEM_ZLIB -DNDEBUG -DARCH='"amd64"' -Damd64 -DLINUX -DRELEASE='"1.8.0-internal"'
-D_LARGEFILE64_SOURCE -D_GNU_SOURCE -D_REENTRANT -D_LP64=1 -I.
-I/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/CClassHeaders
-I../../../../../src/solaris/javavm/export -I../../../../../src/share/javavm/export
-I../../../../../src/share/native/common -I../../../../../src/solaris/native/common
-I../../../../../src/share/native/com/sun/java/util/jar/pack
-I../../../../../src/solaris/native/com/sun/java/util/jar/pack
-Xlinker -O1 -Xlinker -version-script=mapfile-vers -Xlinker -z -Xlinker origin
-Xlinker -rpath -Xlinker $ORIGIN -Xlinker -z -Xlinker defs -L/home/andrew/builder/awt/lib/amd64
-Wl,-soname=libunpack.so -lz -lc
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/bands.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/bytes.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/coding.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/unpack.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/utils.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/zip.o
/home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack-cmd/obj64/main.o
-lstdc++ -o /home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200 /bin/cp /home/andrew/builder/awt/tmp/sun/com.sun.java.util.jar.pack/unpack/unpack200
/home/andrew/builder/awt/bin/unpack200 Checking for mapfile use in: /home/andrew/builder/awt/bin/unpack200 Library loads for: /home/andrew/builder/awt/bin/unpack200 linux-vdso.so.1 (0x00007ffff315c000) libz.so.1 => /lib64/libz.so.1 (0x00007fd609351000) libstdc++.so.6 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/libstdc++.so.6 (0x00007fd60904a000) libm.so.6 => /lib64/libm.so.6 (0x00007fd608d56000) libc.so.6 => /lib64/libc.so.6 (0x00007fd6089ac000) libgcc_s.so.1 => /usr/lib/gcc/x86_64-pc-linux-gnu/4.7.1/libgcc_s.so.1 (0x00007fd608796000) /lib64/ld-linux-x86-64.so.2 (0x00007fd609567000) RUNPATH for: /home/andrew/builder/awt/bin/unpack200 0x0000000000000001 (NEEDED) Shared library: [libz.so.1] 0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6] 0x0000000000000001 (NEEDED) Shared library: [libm.so.6] 0x0000000000000001 (NEEDED) Shared library: [libc.so.6] 0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1] 0x000000000000000f (RPATH) Library rpath: [$ORIGIN] 0x000000000000001d (RUNPATH) Library runpath: [$ORIGIN]

Do you have a static libz.a installed (from zlib1g-dev) and all dependent static libraries?

I suspect you'll get the same failure with or without my patch (though you'll probably need the change to defines.h to get this far...)

I'd guess you have STATIC_CXX set to true (the default apparently):

From Compiler-gcc.gmk:

STATIC_CXX = true ifeq ($(STATIC_CXX),true) # g++ always dynamically links libstdc++, even we use "-Wl,-Bstatic -lstdc++" # We need to use gcc to statically link the C++ runtime. gcc and g++ use # the same subprocess to compile C++ files, so it is OK to build using gcc. CXX = $(COMPILER_PATH)gcc else CXX = $(COMPILER_PATH)g++ endif

From Defs-linux.gmk:

ifeq ($(STATIC_CXX),true) override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic else override LIBCXX = -lstdc++ endif

-- Andrew :)

Free Java Software Engineer Red Hat, Inc. (http://www.redhat.com)

PGP Key: 248BDC07 (https://keys.indymedia.org/) Fingerprint = EC5A 1F5E C0AD 1D15 8F1F 8F91 3B96 A578 248B DC07



More information about the core-libs-dev mailing list