HP MLIB User's Guide Vol. 2 7th Ed.

Chapter 8 Introduction to LAPACK 641
Accessing LAPACK
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 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 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_
void xerbla (char*name, int*iarg, size_t len_name){
...
}
void xerbla_ (char*name, int*iarg, size_t len_name){
xerbla (name, iarg, len_name);
}
This problem is not confined to the XERBLA subroutine. It occurs on
Itanium when the following conditions are met:
Any subprogram with the same name as a user-visible MLIB
subprogram is compiled in your program with +noppu