ldd -d Warnings "offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded" (Doc ID 1627440.1)

Last updated on AUGUST 03, 2016

Applies to:

Oracle Solaris Studio - Version Forte Developer 6 Update 2 to Sun Studio 10 [Release 6.0 to 10.0]
Solaris Operating System - Version 10 1/13 U11 to 11.2 [Release 10.0 to 11.0]
Information in this document applies to any platform.

Symptoms

On Solaris 10 with kernel patch 147147-26 (SPARC) or 147148-26 (x86) installed, and on Solaris 11.1 or newer, the ldd -d command reports warnings on binaries linked with the incremental linker.


Example messages:

# ldd -d httpd
  libm.so.1 => /lib/libm.so.1
  libaprutil-1.so.0 => /products/ihs/7.0/lib/libaprutil-1.so.0
  libuuid.so.1 => /lib/libuuid.so.1
  libsendfile.so.1 => /lib/libsendfile.so.1
  librt.so.1 => /lib/librt.so.1
  libsocket.so.1 => /lib/libsocket.so.1
  libnsl.so.1 => /lib/libnsl.so.1
  libpthread.so.1 => /lib/libpthread.so.1
  libdl.so.1 => /lib/libdl.so.1
  libexpat.so.0 => /products/ihs/7.0/lib/libexpat.so.0
  libapr-1.so.0 => /products/ihs/7.0/lib/libapr-1.so.0
  libthread.so.1 => /lib/libthread.so.1
  libc.so.1 => /lib/libc.so.1
  libaio.so.1 => /lib/libaio.so.1
  libmd.so.1 => /lib/libmd.so.1
  libmp.so.2 => /lib/libmp.so.2
  libscf.so.1 => /lib/libscf.so.1
  libdoor.so.1 => /lib/libdoor.so.1
  libuutil.so.1 => /lib/libuutil.so.1
  libgen.so.1 => /lib/libgen.so.1
  move 0 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 1 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 2 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 3 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 4 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 5 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
...
  move 336 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 337 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 338 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 339 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 340 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 341 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 342 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  move 343 offset invalid: section[0]: offset=0x0 lies outside memory image; move discarded
  libm.so.2 => /lib/libm.so.2
  /lib/libm/libm_hwcap1.so.2
  /platform/sun4v/lib/libc_psr.so.1
  /platform/sun4v/lib/libmd_psr.so.1

Changes

The problem shows up only with ldd from Solaris 10 1/13 (Update 11) resp. ldd from Solaris 11.1, or newer.


The problem shows up only for binaries linked with the incremental linker.
The incremental linker created objects with "holes" for various sections.
These holes could then be filled in with the material from future incremental links.

For that purpose, it uses so-called move sections.

To identify binaries which have been linked with the incremental linker, mcs can be used:

 

Cause

Sign In with your My Oracle Support account

Don't have a My Oracle Support account? Click to get started

My Oracle Support provides customers with access to over a
Million Knowledge Articles and hundreds of Community platforms