HP MLIB for PA-RISC and Itanium HP-UX Version 9.5.6 Release Note
HP MLIB for PA-RISC and Itanium HP-UX Version 9.5.6 Release Note
Known Problems and Workarounds
17
Furthermore, the reverse can occur in the PA-RISC 32-bit libraries if you compile with the
+ppu compiler option.
Itanium-based platforms
If you compile on Itanium-based processors using the compiler option +noppu your xerbla.o
object has an entry point xerbla (without the postpended underbar). However the Intel®
Itanium MLIB libraries were compiled with +ppu option (following the default behavior
described in Table 1-2) and the entry points without underbars were added as synonyms to
the entry points with underbars. Hence the various MLIB Fortran source subprograms that
call XERBLA reference them as xerbla_. Therefore, your xerbla (without the postpended
underbar) does not satisfy the Fortran calls to XERBLA, so the linker accesses xerbla.o from
the library. This file contains both entry points xerbla and xerbla_, and xerbla conflicts with
your XERBLA subroutine.
Moreover, the various MLIB C source subprograms that call XERBLA still reference them as
xerbla (without the postpended underbar). It means that both xerbla and xerbla_ entry points
must be provided in your xerbla.o.
Use one of the following workarounds on Itanium-based platforms if you are compiling your
own Fortran version of XERBLA:
• Compile your Fortran source for XERBLA with +noppu and provide both xerbla and
xerbla_ entry points:
SUBROUTINE XERBLA(SRNAME,INFO)
ENTRY XERBLA_(SRNAME,INFO)
...
• Use f90 ALIAS directives and provide both xerbla and xerbla_ entry points:
!$HP$ ALIAS xerbla='xerbla'
!$HP$ ALIAS xerbla_='xerbla_'
SUBROUTINE XERBLA(SRNAME,INFO)
ENTRY XERBLA_(SRNAME,INFO)
...
The ALIAS directives prevent the compiler from postpending the underbar onto the entry
points and external references to XERBLA.
Use the following workaround on Itanium-based platforms if you are compiling your own C
version of XERBLA:
• Undefine any previous aliasing from include files and provide both xerbla and xerbla_
entry points explicitly:
#undef xerbla
#undef xerbla_