[Search for users] [Overall Top Noters] [List of all Conferences] [Download this site]

Conference hydra::axp-developer

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] $ 
T.RTitleUserPersonal
Name
DateLines
3150.1see FORTRAN conf #1166RDGENG::WOOD_J[email protected]Mon Feb 17 1997 04:590