Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8246770

Atomic::add() with 64 bit value fails to link on 32-bit platforms

XMLWordPrintable

    • jfr
    • b27
    • Verified

      Spotted on 32-bit builds post-check in for JDK-8242088.

      Atomic::add(&_tip._value, (traceid)1); // fails to link where type traceid is 64-bit

      Manifests as link issues, for example:

      jfrStorage.obj : error LNK2019: unresolved external symbol "public: unsigned __int64 __thiscall Atomic::PlatformAdd<8>::add_and_fetch<unsigned __int64,unsigned __int64>(unsigned __int64 volatile *,unsigned __int64,enum atomic_memory_order)const " (??$add_and_fetch@_K_K@?$PlatformAdd@$07@Atomic@@QBE_KPC_K_KW4atomic_memory_order@@@Z) referenced in function "public: static unsigned __int64 __cdecl Atomic::add<unsigned __int64,unsigned __int64>(unsigned __int64 volatile *,unsigned __int64,enum atomic_memory_order)" (??$add@_K_K@Atomic@@SA_KPC_K_KW4atomic_memory_order@@@Z)
      jfrTraceIdKlassQueue.obj : error LNK2001: unresolved external symbol "public: unsigned __int64 __thiscall Atomic::PlatformAdd<8>::add_and_fetch<unsigned __int64,unsigned __int64>(unsigned __int64 volatile *,unsigned __int64,enum atomic_memory_order)const " (??$add_and_fetch@_K_K@?$PlatformAdd@$07@Atomic@@QBE_KPC_K_KW4atomic_memory_order@@@Z)
      d:/priv/openjdk/nb/NTintel/nightly/output-jdk-dev/support/modules_libs/java.base/server/jvm.dll : fatal error LNK1120: 1 unresolved externals

      Changing to a solution based on Atomic::cmpxchg() works.

            mgronlun Markus Grönlund
            mgronlun Markus Grönlund
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: