The gmk file currnetly allow usage of -z defs as LDFLAGS only for arches that are not PPC and are not 64-bit, without any comment on why this happens; counting that PPC Linux does not seem to be supported by OpenJDK anyway at the moment, -z defs works *mostly* fine on AMD64 Linux.
Where mostly is referred to demos that links using gcc even when the source code is C++, using the LIBCXX variable to fix the link; this works fine, unless you use STATIC_CXX=false at build time to use runtime link to libstdc++. The attached patch removes the conditionals and fixes the libstdc++ build, allowing a safer build with -z defs enabled even on amd64. -- Diego "Flameeyes" Pettenò http://farragut.flameeyes.is-a-geek.org/
Index: openjdk/j2se/make/common/Defs-linux.gmk =================================================================== --- openjdk.orig/j2se/make/common/Defs-linux.gmk +++ openjdk/j2se/make/common/Defs-linux.gmk @@ -208,12 +208,8 @@ endif EXTRA_LIBS += -lc -ifneq ($(ARCH),ppc) - ifneq ($(ARCH_DATA_MODEL),64) - LDFLAGS_DEFS_OPTION = -z defs - LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) - endif -endif +LDFLAGS_DEFS_OPTION = -z defs +LDFLAGS_COMMON += $(LDFLAGS_DEFS_OPTION) # # -L paths for finding and -ljava @@ -288,7 +284,7 @@ override LEX_LIBRARY = -lfl ifeq ($(STATIC_CXX),true) override LIBCXX = -Wl,-Bstatic -lstdc++ -lgcc -Wl,-Bdynamic else -override LIBCXX = +override LIBCXX = -lstdc++ endif override LIBPOSIX4 = override LIBSOCKET =
signature.asc
Description: PGP signature