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

16 HP MLIB User’s Guide
Accessing VECLIB
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
Another MLIB subprogram used by your program also calls that
subprogram
PA-RISC and Itanium processors
Also note that all the workarounds listed for Itanium are more generic and can
also be used for PA-RISC. Therefore, if you are coding your own version of a
MLIB routine called "mlib_routine" on PA-RISC or Itanium, a Fortran version
might be implemented as:
!$HP$ ALIAS mlib_routine='mlib_routine'
!$HP$ ALIAS mlib_routine_='mlib_routine_'