[11u] RFR: 8256557: libharfbuzz fails to link on gcc 4.4.x due to -Wl, -z, defs

Severin Gehwolf sgehwolf at redhat.com
Fri Nov 20 20:49:05 UTC 2020


Hi Paul,

Thanks for the review!

On Thu, 2020-11-19 at 00:48 +0000, Hohensee, Paul wrote:
> Set according to gcc version instead?

OK. How about this?

diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
--- a/make/lib/Awt2dLibraries.gmk
+++ b/make/lib/Awt2dLibraries.gmk
@@ -547,6 +547,16 @@
     HARFBUZZ_CFLAGS += -DHB_EXTERN=__declspec\(dllexport\)
   endif
 
+  LIBHARFBUZZ_LDFLAGS := $(LDFLAGS_JDKLIB) \
+                         $(call SET_SHARED_LIBRARY_ORIGIN)
+  ifeq ($(TOOLCHAIN_TYPE), gcc)
+    ifeq ($(CC_VERSION_NUMBER), 4.4.7)
+      LIBHARFBUZZ_LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
+        $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) \
+        $(call SET_SHARED_LIBRARY_ORIGIN)
+    endif
+  endif
+
   ifneq ($(OPENJDK_TARGET_OS), windows)
     HARFBUZZ_CFLAGS += -DGETPAGESIZE -DHAVE_MPROTECT -DHAVE_PTHREAD \
                        -DHAVE_SYSCONF -DHAVE_SYS_MMAN_H -DHAVE_UNISTD_H \
@@ -608,8 +618,7 @@
           truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
           hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
       DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \
-      LDFLAGS := $(LDFLAGS_JDKLIB) \
-          $(call SET_SHARED_LIBRARY_ORIGIN), \
+      LDFLAGS := $(LIBHARFBUZZ_LDFLAGS), \
       LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
       LDFLAGS_aix := -Wl$(COMMA)-berok, \
       LIBS := $(BUILD_LIBHARFBUZZ), \


Thanks,
Severin


> On 11/18/20, 11:37 AM, "jdk-updates-dev on behalf of Severin Gehwolf" <jdk-updates-dev-retn at openjdk.java.net on behalf of sgehwolf at redhat.com> wrote:
> 
>     Hi,
> 
>     Please review this JDK 11.0.10 specific fix for building slowdebug on a
>     system with gcc 4.4.x (e.g. RHEL 6). JDK-8249821 got backported to
>     11.0.10 and that causes one slight difference in how libharfbuzz is
>     being linked: When it was linked as part of libfontmanager.so there was
>     no -Wl,-z,defs. After JDK-8249821 it's there, which makes the build
>     fail for slowdebug on this old toolchain. The proposal is to remove -
>     Wl,-z,defs from LDFLAGS_JDKLIB for libharfbuzz as was done before.
> 
>     Bug: https://bugs.openjdk.java.net/browse/JDK-8256557
> 
>     Patch:
> 
>     diff --git a/make/lib/Awt2dLibraries.gmk b/make/lib/Awt2dLibraries.gmk
>     --- a/make/lib/Awt2dLibraries.gmk
>     +++ b/make/lib/Awt2dLibraries.gmk
>     @@ -608,8 +608,9 @@
>                truncwarn wvarhidenmem wvarhidemem wbadlkginit identexpected \
>                hidevf w_novirtualdescr arrowrtn2 unknownpragma, \
>            DISABLED_WARNINGS_microsoft := 4267 4244 4090 4146 4334 4819 4101 4068 4805 4138, \
>     -      LDFLAGS := $(LDFLAGS_JDKLIB) \
>     -          $(call SET_SHARED_LIBRARY_ORIGIN), \
>     +      LDFLAGS := $(subst -Xlinker -z -Xlinker defs,, \
>     +        $(subst -Wl$(COMMA)-z$(COMMA)defs,,$(LDFLAGS_JDKLIB))) \
>     +        $(call SET_SHARED_LIBRARY_ORIGIN), \
>            LDFLAGS_unix := -L$(INSTALL_LIBRARIES_HERE), \
>            LDFLAGS_aix := -Wl$(COMMA)-berok, \
>            LIBS := $(BUILD_LIBHARFBUZZ), \
> 
>     Tested build on gcc 4.4.x slowdebug. Works with the patch.
> 
>     I know this isn't pretty, but as there were no code changes done
>     in JDK-8249821 it would preserve the status quo. Plus, it would unbreak
>     our vanilla JDK 11 builds.
> 
>     Thoughts?
> 
>     Thanks,
>     Severin
> 
> 



More information about the jdk-updates-dev mailing list