The implementation of `offset_of` for GCC/Clang only deals with types are 
aligned to 16 bytes or less, if they are more, such as `zCollectedHeap` the 
behavior is undefined. UBSan also suggests that `offset_of` is not always a 
compile time constant, as the stack trace came from the dynamic loader during 
library loading. This patch changes `offset_of` to use `offsetof` and disables 
the warning `invalid-offsetof` for the JVM.

-------------

Commit messages:
 - offset_of for GCC/Clang exhibits undefined behavior and is not always a 
compile-time constant

Changes: https://git.openjdk.org/jdk/pull/11978/files
 Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=11978&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8300080
  Stats: 19 lines in 2 files changed: 1 ins; 15 del; 3 mod
  Patch: https://git.openjdk.org/jdk/pull/11978.diff
  Fetch: git fetch https://git.openjdk.org/jdk pull/11978/head:pull/11978

PR: https://git.openjdk.org/jdk/pull/11978

Reply via email to