"relocation trucation" using mcmodel=medium on a EM64T

"relocation trucation" using mcmodel=medium on a EM64T

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

5 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

Hello

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

Thanks

zaleski@lmm.jussieu.fr

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.

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.

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

Leave a Comment

Please sign in to add a comment. Not a member? Join today