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

[AIX] clang pollutes the burned-in library search paths of the generated executables

XMLWordPrintable

    • b09
    • ppc
    • aix

      The clang compiler which we use since jdk21 pollutes the burned-in library search paths of the generated executables.
      e.g. a dump -X64 -H ... /jdk-23.0.1+11-jre/lib/libnio.so

      amongst others produces the following lines

                              ***Import File Strings***
      INDEX PATH BASE MEMBER
      0 /opt/IBM/openxlC/17.1.1/../../../../usr/lpp/xlC/lib:/opt/IBM/openxlC/17.1.1/lib:/opt/IBM/openxlC/17.1.1/bin/../../../../../usr/lpp/xlC/lib:/usr/opt/zlibNX/lib:/opt/freeware/lib/pthread:/opt/freeware/lib:/usr/lib

      The long string is the burned in library search path which will be used after searching with LIBPATH envvar.
      You see there are some compiler paths which customers will not have; also /opt/freeware is unwanted.
      A proper executable should only have the burned in default search path
      /usr/lib:lib

      To ensure this we want to call the linker with the flag
      -fuse-ld=our-wrapper-script-cleaning-LIBPATH- and-calling-original-ld-afterwards
      This script we want to deliver in make/scripts/aix/ld.sh
      just containing
      #!/bin/bash
      unset LIBPATH
      exec /usr/bin/ld "$@"
      return $?

            jkern Joachim Kern
            jkern Joachim Kern
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved: