Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
29234 Discussions

"relocation trucation" using mcmodel=medium on a EM64T

mkcolg
Beginner
935 Views
Hello,

I'm having trouble getting a program containing a large array to link even though I'm using "-mcmodel=medium" on an EM64T running SuSE9.1. Am I missing a flag or are large static arrays not supported?

Thanks,
Mat

test2.f:
program main
integer a(600000000)
a(1) = 10
stop
end

ifort -mcmodel=medium -O0 test2.f -o test2 -V
Intel Fortran Compiler for Intel EM64T-based applications, Version 8.1 Build 20040812 Package ID: l_fce_pc_8.1.022
Copyright (C) 1985-2004 Intel Corporation. All rights reserved.

GNU ld version 2.15.90.0.1.1 20040303 (SuSE Linux)
Supported emulations:
elf_x86_64
elf_i386
i386linux
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x20): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x2a): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x34): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x46): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x95): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 for__l_excpt_info
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x1a8): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 for__l_argc
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x1af): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 for__a_argv
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x1b9): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x1c3): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 .bss
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x220): In function `for_rtl_init_':
: relocation truncated to fit: R_X86_64_PC32 for__l_excpt_info
/opt/intel_fce_81/lib/libifcore.a(for_init.o)(.text+0x24b): In function `for__signal_handler':
: additional relocation overflows omitted from the output
% ls test2 -l
ls: test2: No such file or directory
0 Kudos
4 Replies
zaleski
Beginner
935 Views
Hello

I am having a similar problem. Does anybody have an explanation or a solution ?

Thanks

zaleski@lmm.jussieu.fr
0 Kudos
TimP
Honored Contributor III
935 Views
Your test case has no problem with l_fce_pc_8.1.025 running on RH EL3_U3, which has a much older version of binutils. SuSE 9.1 is supported by 64-bit ifort, but it won't install on my EM64T machine. You might consider submitting the problem report on premier.intel.com.
0 Kudos
Intel_C_Intel
Employee
935 Views
The older version of binutils included in RHEL3 is not reliable for generating shared libraries for EM64T (x86_64). Numerous changes (mostly improvements, it appears) to the x86_64 infrastructure are included in binutils 2.15, so I am using 2.15 on my RHEL3 box. Unfortunately this means I get the same error reported above.
0 Kudos
k_stevenson
Beginner
935 Views
I raised this as an issue on my Premier support pages and was told that this was a known issue and to use -i_dynamic

Seems to have solved the problem for me on SuSE 9.1 X86_64 EM64T

Couldn't see this answered anywhere else on the forums or in the known issues for the compiler so I thought I may as well post it here.

Kenny
0 Kudos
Reply