Linker error on HP-UX with OpenMP
Josh Hykes
Joshua.Hykes@studsvik.com
Thu May 21 17:31:00 GMT 2015
I was able to reproduce this error with the small test program below.
The program compiles and runs okay on Linux, but not on HP-UX.
I have tried building more recent versions of gcc on HP-UX, but
gcc-4.7.4 is the most recent version with which I've had success.
$ cat prog.f90
module mod1
integer, parameter :: n = 1000000
contains
subroutine sub(j, res)
implicit none
integer :: j
real :: res
real :: y(n)
real :: z(n)
logical :: is_first=.true.
save y, z, is_first
!$omp threadprivate(is_first, y, z)
if (is_first) then
y(:) = 1.0
z(:) = 2.0
is_first=.false.
endif
y(j) = y(j) + 1.0
z(j) = z(j) + 2.0
res = y(j) + z(j)
end subroutine sub
end module mod1
program test
use mod1, only: n, sub
implicit none
integer :: i
real :: x, y
x = 0.0
y = 0.0
!$omp parallel do reduction(+: y)
do i=1,n
call sub(i, x)
y = y + x
enddo
!$omp end parallel do
print *, y
end program test
$ gfortran -mlp64 -fopenmp prog.f90
ld: The value 0x3d0918 does not fit when applying the relocation TPREL22
or DTPREL22 for symbol "z.839" at offset 0x102 in section index 1 of
file /var/tmp//ccWaJnu6.o
ld: The value 0x3d0918 does not fit when applying the relocation TPREL22
or DTPREL22 for symbol "z.839" at offset 0x242 in section index 1 of
file /var/tmp//ccWaJnu6.o
ld: The value 0x3d0918 does not fit when applying the relocation TPREL22
or DTPREL22 for symbol "z.839" at offset 0x292 in section index 1 of
file /var/tmp//ccWaJnu6.o
ld: The value 0x3d0918 does not fit when applying the relocation TPREL22
or DTPREL22 for symbol "z.839" at offset 0x312 in section index 1 of
file /var/tmp//ccWaJnu6.o
4 errors.
collect2: error: ld returned 1 exit status
$ uname -a
HP-UX rx2800 B.11.31 U ia64 ...
$ gfortran -v
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/home/joshua2/opt/gcc/hp/gcc-4.7.4/libexec/gcc/ia64-hp-hpux11.31/4.7.4/lto-wrapper
Target: ia64-hp-hpux11.31
Configured with: /home/joshua2/opt/gcc/hp/gcc-4.7.4-src/configure
--prefix=/home/joshua2/opt/gcc/hp/gcc-4.7.4 --with-gnu-as
--with-as=/opt/hp-gcc/bin/as --enable-languages=c,c++,fortran
Thread model: posix
gcc version 4.7.4 (GCC)
$ ld -V
ld: 92453-07 linker ld HP Itanium(R) B.12.58 IPF/IPF
ld: No input files
Fatal error.
It compiles and runs okay without OpenMP:
$ gfortran -mlp64 prog.f90
$ ./a.out
6000000.00
On 2015-05-20 11:31 AM, Josh Hykes wrote:
> Hello,
>
>
>
> I posted this to the GNU Fortran Google Groups forum, but someone there
> suggested I post here instead.
>
>
>
> I am trying to use gfortran on our HP-UX B.11.31 ia64 machine. After
> several false starts, I was able to build gcc-4.7.4 using HP's aCC
> compiler (I had to disable java).
>
>
>
> Our code compiles with gfortran and runs successfully on the HP without
> OpenMP. (It compiles and runs okay with OpenMP on a variety of other
> platforms and compilers, including gfortran on linux.)
>
>
>
> When I enable OpenMP with -fopenmp, the compilation fails in the linker
> stage with a series of errors like the following:
>
>
>
> ld: The value 0xd01bf8 does not fit when applying the relocation TPREL22
> or DTPREL22 for symbol "ainf.2311" at offset 0x14cf1 in section index 1
> of file gendpx.o
>
> ld: The value 0xd01bf8 does not fit when applying the relocation TPREL22
> or DTPREL22 for symbol "ainf.2311" at offset 0x14da0 in section index 1
> of file gendpx.o
>
>
>
> The array ainf is a save'd automatic array that is declared
> threadprivate. There is no GNU linker on HP-UX, so this is using the HP
> linker.
>
>
>
> I am compiling with the following options:
>
>
>
> -mlp64 -O2 -fconvert=big-endian -fbacktrace
> -ffpe-trap=invalid,zero,overflow -fPIC -fopenmp
>
>
>
> I have experimented with a variety of gfortran and linker options, but
> none of them have allowed me to fix the above relocation error. Does
> anyone have any experience with this error message, or any suggestions
> that I could try?
>
>
>
> -Josh
>
>
>
More information about the Fortran
mailing list