[Search for users]
[Overall Top Noters]
[List of all Conferences]
[Download this site]
Title: | Alpha Developer Support |
Notice: | [email protected], 800-332-4786 |
Moderator: | HYDRA::SYSTEM |
|
Created: | Mon Jun 06 1994 |
Last Modified: | Fri Jun 06 1997 |
Last Successful Update: | Fri Jun 06 1997 |
Number of topics: | 3722 |
Total number of notes: | 11359 |
3150.0. "debis Systemhaus Muelheim - Point 19159" by RDGENG::ASAP () Thu Feb 06 1997 08:25
Company Name : debis Systemhaus Muelheim - Point 19159
Contact Name : L_GUINAUDEAU
Phone : (49) 208-3788-139 (fax=-222)
Fax : (49) 208-3788-139 (fax=-222)
Email : [email protected]
Date/Time in : 6-FEB-1997 13:24:17
Entered by : John Wood
SPE center : REO
Category : unix
OS Version :
System H/W :
Brief Description of Problem:
-----------------------------
From: ESSB::ESSB::MRGATE::"ILO::ESSC::dlennon" 6-FEB-1997 12:03:41.90
To: RDGENG::ASAP
CC:
Subj: POINT No 19159, DEBIS
From: NAME: ESCTECH@ILO
TEL: (822-)6704
ADDR: ILO <dlennon@ESSC@ILO>
To: ASAP@RDGENG@MRGATE
PROBLEM SUBMISSION FORM
*** VON: Louis Guinaudeau, debis Systemhaus Muelheim (Germany)
*** AN : ASAP Technical Support Galway (Irland)
([email protected])
ASAP Membership: D60682
Your name: LGU
Your full name: L_GUINAUDEAU
Your organization's name: DEBIS SYSTEMHAUS INDUSTRIE
Your phone number: (49) 208-3788-139 (fax=-222)
Your email-address: [email protected]
OPERATING SYSTEM: OSF1 V4.0 386 alpha
VERSION STRING: UNKNOWN
COMPONENT: F77, LD
MODULE: UNKNOWN
Problem priority (1-5, 1 being most critical): 5
Can you reproduce the problem [Y/N]: Y
Problem abstract: Linker does not support multiple initial of global vars
OPTIONAL INFORMATION
====================
CPU type: Alphastation 250 4/266
Memory size: 192 Mbytes
System disk: RZ26L
Compiler - Linker information :
DEC Fortran Compiler Driver V4.0-1
Digital Fortran 77 V4.0-1-3231
/usr/bin/ld version 3.11
PROBLEM STATEMENT:
==================
We are porting a large FORTRAN and C application currently running
under VMS platforms to DIGITAL UNIX platform.
Under VMS, the FORTRAN compiler permits the (DEC extension,
non-standard) initialization of variables belonging to named COMMON
using DATA statements or immediately following a type declaration out
of BLOCKDATA modules.
This feature was intensively used by the application we are porting.
Those common variables and their initialization are naturally declared
in include files, and this conducts to multiple initialization of
the same variables throughout the different modules of the same program.
The VMS linker (VAX or Alpha OpenVMS) does accept and handle correctly
those multiple initializations of global variables.
This is not the case on DIGITAL UNIX platform, and this is a great
trouble for the port of the application. A little wonder, the
Windows-NT PowerStation environment does support this !
We tested with the little test case appended this trouble and
discovered fortunately that when compiling and linking on the same
command line, this would work ! This seems tricky, and not easy to
use in our practical case where the program we are linking
are often very large and contains 50 modules, and there might be
difficulty to have one consistent command-line to compile every of
them (different incompatible include-paths)
Before we should change drastically the sources to avoid multiple
initialization for common variables, we would like to know :
- what about compiling and linking on the same command-line, why does
it work in that way ?
- whether a change for this VMS linker feature would be available
soon in DIGITAL UNIX ?
- whether one may suggest some methods and/or tools to process this
trouble ?
INSTRUCTIONS TO REPRODUCE PROBLEM
=================================
I attached (MIME format) a script file containing every information
needed :
- source files
- include files
- run example
==============================================
System Serial Number: AY53310477
Platform type: Alphastation 250 4/266
Firmware Revision Level: V6.0-943
Installed OS Version: 4.0
Installed OS Revision: 386
==============================================
undina (demo) [757] $ cat iconst.def
C constant definitions
integer const1
parameter (const1 = 1)
integer const2
parameter (const2 = 2)
undina (demo) [758] $ cat ivariable.def
C variable declaration with initialization
integer var_common_decl_ivar /const1/
integer var_nocommon_decl_ivar /const2/
integer var_common_data_ivar
data var_common_data_ivar /3/
integer var_nocommon_data_ivar
data var_nocommon_data_ivar /4/
integer var_common_data_icom
integer var_common_data_progr
undina (demo) [759] $ cat icommon.def
C common declaration for initialized variables
common /multiple_init_common/ var_common_decl_ivar
* , var_common_data_ivar
* , var_common_data_icom
* , var_common_data_progr
data var_common_data_icom /5/
undina (demo) [760] $ cat mult_init.for
program mult_init
implicit none
include 'iconst.def'
include 'ivariable.def'
include 'icommon.def'
data var_common_data_progr /6/
type *, 'progr:1: var_common_decl_ivar:', var_common_decl_ivar
type *, ' var_nocommon_decl_ivar:', var_nocommon_decl_ivar
type *, ' var_common_data_ivar:', var_common_data_ivar
type *, ' var_nocommon_data_ivar:', var_nocommon_data_ivar
type *, ' var_common_data_icom:', var_common_data_icom
type *, ' var_common_data_progr:', var_common_data_progr
var_common_decl_ivar = 11
var_nocommon_decl_ivar = 12
var_common_data_ivar = 13
var_nocommon_data_ivar = 14
var_common_data_icom = 15
var_common_data_progr = 16
type *, 'progr:2: var_common_decl_ivar:', var_common_decl_ivar
type *, ' var_nocommon_decl_ivar:', var_nocommon_decl_ivar
type *, ' var_common_data_ivar:', var_common_data_ivar
type *, ' var_nocommon_data_ivar:', var_nocommon_data_ivar
type *, ' var_common_data_icom:', var_common_data_icom
type *, ' var_common_data_progr:', var_common_data_progr
call subr
type *, 'progr:3: var_common_decl_ivar:', var_common_decl_ivar
type *, ' var_nocommon_decl_ivar:', var_nocommon_decl_ivar
type *, ' var_common_data_ivar:', var_common_data_ivar
type *, ' var_nocommon_data_ivar:', var_nocommon_data_ivar
type *, ' var_common_data_icom:', var_common_data_icom
type *, ' var_common_data_progr:', var_common_data_progr
c$$$ call dummy
call exit
end
undina (demo) [761] $ cat subr.for
subroutine subr
implicit none
include 'iconst.def'
include 'ivariable.def'
include 'icommon.def'
type *, 'subr :1: var_common_decl_ivar:', var_common_decl_ivar
type *, ' var_nocommon_decl_ivar:', var_nocommon_decl_ivar
type *, ' var_common_data_ivar:', var_common_data_ivar
type *, ' var_nocommon_data_ivar:', var_nocommon_data_ivar
type *, ' var_common_data_icom:', var_common_data_icom
type *, ' var_common_data_progr:', var_common_data_progr
var_common_decl_ivar = 21
var_nocommon_decl_ivar = 22
var_common_data_ivar = 23
var_nocommon_data_ivar = 24
var_common_data_icom = 25
var_common_data_progr = 26
type *, 'subr :2: var_common_decl_ivar:', var_common_decl_ivar
type *, ' var_nocommon_decl_ivar:', var_nocommon_decl_ivar
type *, ' var_common_data_ivar:', var_common_data_ivar
type *, ' var_nocommon_data_ivar:', var_nocommon_data_ivar
type *, ' var_common_data_icom:', var_common_data_icom
type *, ' var_common_data_progr:', var_common_data_progr
return
end
undina (demo) [762] $ cat test.sh
#! /bin/sh
#
rm mult_init mult_init.o subr.o
echo "mult_init.for subr.for > mult_init.o subr.o"
f77 -c mult_init.for subr.for
echo "mult_init.o subr.o > mult_init"
f77 -o mult_init mult_init.o subr.o
echo "mult_init.for subr.for > mult_init"
f77 -o mult_init mult_init.for subr.for
undina (demo) [763] $ test.sh
mult_init.for subr.for > mult_init.o subr.o
fort: Info: Interprocedural optimization between source files is not possible with -c
mult_init.o subr.o > mult_init
ld:
subr.o: multiple_init_common_: multiply defined
fort: Severe: Failed while trying to link.
mult_init.for subr.for > mult_init
undina (demo) [764] $ mult_init
progr:1: var_common_decl_ivar: 1
var_nocommon_decl_ivar: 2
var_common_data_ivar: 3
var_nocommon_data_ivar: 4
var_common_data_icom: 5
var_common_data_progr: 6
progr:2: var_common_decl_ivar: 11
var_nocommon_decl_ivar: 12
var_common_data_ivar: 13
var_nocommon_data_ivar: 14
var_common_data_icom: 15
var_common_data_progr: 16
subr :1: var_common_decl_ivar: 11
var_nocommon_decl_ivar: 2
var_common_data_ivar: 13
var_nocommon_data_ivar: 4
var_common_data_icom: 15
var_common_data_progr: 16
subr :2: var_common_decl_ivar: 21
var_nocommon_decl_ivar: 22
var_common_data_ivar: 23
var_nocommon_data_ivar: 24
var_common_data_icom: 25
var_common_data_progr: 26
progr:3: var_common_decl_ivar: 21
var_nocommon_decl_ivar: 12
var_common_data_ivar: 23
var_nocommon_data_ivar: 14
var_common_data_icom: 25
var_common_data_progr: 26
undina (demo) [765] $