RFR(8u): 8211933: [8u] hotspot adlc needs to link statically with libstdc++ for gcc7.3 (original) (raw)

Kevin Walls kevin.walls at oracle.com
Wed Oct 24 23:16:04 UTC 2018


Hi,

I'd like to get a review of an 8u change:

8211933: [8u] hotspot adlc needs to link statically with libstdc++ for gcc7.3 https://bugs.openjdk.java.net/browse/JDK-8211933

webrev: http://cr.openjdk.java.net/~kevinw/8211933/webrev.00/

Essentially adds -static-libstdc++ for linking adlc during an 8u build. This is needed e.g. when we build with gcc7.x using our devkit bundle and we won't necessarily find a correct version of that library on the system.

(Things are still very different in 9+ compared to 8u, despite all our changes this year...) I find that changing the definition of

STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic

...in gcc.make is a problem, the linked VM fails to load with "undefined symbol: __cxa_pure_virtual"

If using STATIC_STDCXX as it's already defined, to build adlc, then adlc doesn't statically link again libcstd and it gives the symbol version not found error.  So defining a separate STATIC... var for adlc keeps everyone happy.

Many thanks Kevin

bash-4.2$ cd jdk8u-dev/hotspot bash-4.2$ hg diff diff -r 992120803410 make/linux/makefiles/adlc.make --- a/make/linux/makefiles/adlc.make    Mon Oct 22 05:26:38 2018 -0400 +++ b/make/linux/makefiles/adlc.make    Wed Oct 24 16:15:07 2018 -0700 @@ -105,9 +105,15 @@

 all: $(EXEC)

+ADLC_LD_FLAGS= +ifeq ($(STATIC_CXX), true) +  ADLC_LD_FLAGS = (STATICLIBGCC)(STATIC_LIBGCC) (STATICLIBGCC)(ADLC_STATIC_STDCXX) +endif + + (EXEC):(EXEC) : (EXEC):(OBJECTS)         @echo Making adlc -       (QUIETLY)(QUIETLY) (QUIETLY)(filter-out (ARCHFLAG),(ARCHFLAG),(ARCHFLAG),(HOST.LINK_NOPROF.CXX)) -o (EXEC)(EXEC) (EXEC)(OBJECTS) +       (QUIETLY)(QUIETLY) (QUIETLY)(filter-out (ARCHFLAG),(ARCHFLAG),(ARCHFLAG),(HOST.LINK_NOPROF.CXX)) (ADLCLDFLAGS)−o(ADLC_LD_FLAGS) -o (ADLCLDFLAGS)o(EXEC) $(OBJECTS)

 # Random dependencies:  $(OBJECTS): opcodes.hpp classes.hpp adlc.hpp adlcVMDeps.hpp adlparse.hpp archDesc.hpp arena.hpp dict2.hpp filebuff.hpp forms.hpp formsopt.hpp formssel.hpp diff -r 992120803410 make/linux/makefiles/gcc.make --- a/make/linux/makefiles/gcc.make     Mon Oct 22 05:26:38 2018 -0400 +++ b/make/linux/makefiles/gcc.make     Wed Oct 24 16:15:07 2018 -0700 @@ -277,6 +277,8 @@

 # statically link libstdc++.so, work with gcc but ignored by g++  STATIC_STDCXX = -Wl,-Bstatic -lstdc++ -Wl,-Bdynamic +# While the VM needs the above line, adlc needs a separate setting: +ADLC_STATIC_STDCXX = -static-libstdc++

 ifeq ($(USE_CLANG),)    # statically link libgcc and/or libgcc_s, libgcc does not exist before gcc-3.x. bash-4.2$



More information about the build-dev mailing list