RFR: 8248876: LoadObject with bad base address created for exec file on linux

Yasumasa Suenaga ysuenaga at openjdk.java.net
Wed Feb 3 04:31:53 UTC 2021


We could see NPE on `LinuxCDebugger::loadObjectContainingPC` which is used mainly by the clhsdb `findpc` command. (See [JDK-8248876](https://bugs.openjdk.java.net/browse/JDK-8248876) for more details)

It is caused by PIE executable handling.

Currently we use virtual address of top of PT_LOAD in executable as base address - it is valid for ET_EXEC binary.
However, in case of ET_DYN binary (PIE binary), we should handle it like a shared library.
In GDB, base address of executable would be calculated by dynamic section. SA should also do so.

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

Commit messages:
 - Remove unnecessary label from debug message
 - Calculate base address of ET_DYN executable

Changes: https://git.openjdk.java.net/jdk/pull/2366/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jdk&pr=2366&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8248876
  Stats: 21 lines in 2 files changed: 8 ins; 4 del; 9 mod
  Patch: https://git.openjdk.java.net/jdk/pull/2366.diff
  Fetch: git fetch https://git.openjdk.java.net/jdk pull/2366/head:pull/2366

PR: https://git.openjdk.java.net/jdk/pull/2366


More information about the serviceability-dev mailing list