This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug fortran/42568] New: BLOCKDATA referenced in EXTERNAL not loading from library
- From: "urbanjost at comcast dot net" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 31 Dec 2009 23:06:24 -0000
- Subject: [Bug fortran/42568] New: BLOCKDATA referenced in EXTERNAL not loading from library
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
Even though the BLOCKDATA is referenced with an EXTERNAL statement, it is
not initializing the COMMON; this worked in previous versions of gfortran,
and g95, g77, ifort, and vendor compilers (Cray, HP-UX, IRIX64, SunOS, Solaris,
...) as long as the EXTERNAL statement was present.
#!/bin/sh
echo trouble loading a blockdata from a library
set -x
cat >missingBlockData.f <<\EOF
program missingBlockData
external juinit2
character chars(5)*(20)
common /qindex2/chars
save /qindex2/
write(*,*)'chars=',chars
if(chars(5).ne.'abcdefghijklmnopqrst')then
write(*,*)'*missingBlockData* E-R-R-O-R: bad load'
else
write(*,*)'*missingBlockData* loaded common block'
endif
end
EOF
cat >juinit2.f <<\EOF
!______________________________________________________________________-
blockdata juinit2
character chars(5)*(20)
common /qindex2/chars
save /qindex2/
data chars/5*'abcdefghijklmnopqrst'/
end
!______________________________________________________________________-
EOF
(
exec 2>&1
set -x
: __________________________________________________________
export F90
F90='gfortran -Wall'
: "compile with $F90"
: __________________________________________________________
: Make libex.a library
$F90 -c juinit2.f
nm juinit2.o
: I thought JUINIT2 would be a T, not a B ??
ar rv libex.a juinit2.o
rm juinit2.o
: __________________________________________________________
: run loading from library
rm -f missingBlockData
$F90 missingBlockData.f -L. -lex -o missingBlockData
./missingBlockData
: __________________________________________________________
: run not loading from library
rm -f missingBlockData
$F90 missingBlockData.f juinit2.f -o missingBlockData
./missingBlockData
: __________________________________________________________
: version
date
uname -a
$F90 -v missingBlockData.f juinit2.f -o missingBlockData
: __________________________________________________________
: cleanup
rm -f missingBlockData libex.a juinit2.f missingBlockData.f
) >> $0
exit
***************
***************
RESULTS OF RUN:
***************
***************
+ set -x
+ : __________________________________________________________
+ export F90
+ F90=gfortran -Wall
+ : compile with gfortran -Wall
+ : __________________________________________________________
+ : Make libex.a library
+ gfortran -Wall -c juinit2.f
+ nm juinit2.o
00000000 b .bss
00000000 d .data
00000000 t .text
00000000 B _juinit2_
00000000 D _qindex2_
+ : I thought JUINIT2 would be a T, not a B ??
+ ar rv libex.a juinit2.o
ar: creating libex.a
a - juinit2.o
+ rm juinit2.o
+ : __________________________________________________________
+ : run loading from library
+ rm -f missingBlockData
+ gfortran -Wall missingBlockData.f -L. -lex -o missingBlockData
+ ./missingBlockData
chars=
missingBlockData* E-R-R-O-R: bad load
+ : __________________________________________________________
+ : run not loading from library
+ rm -f missingBlockData
+ gfortran -Wall missingBlockData.f juinit2.f -o missingBlockData
+ ./missingBlockData
chars=abcdefghijklmnopqrstabcdefghijklmnopqrstabcdefghijklmnopqrstabcdefghijklmnopqrstabcdefghijklmnopqrst
*missingBlockData* loaded common block
+ : __________________________________________________________
+ : version
+ date
Thu Dec 31 17:39:18 EST 2009
+ uname -a
CYGWIN_NT-6.0 urbanjs-PC 1.7.1(0.218/5/3) 2009-12-07 11:48 i686 Cygwin
+ gfortran -Wall -v missingBlockData.f juinit2.f -o missingBlockData
Driving: gfortran -Wall -v missingBlockData.f juinit2.f -o missingBlockData
-lgfortran
Using built-in specs.
COLLECT_GCC=gfortran
COLLECT_LTO_WRAPPER=/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/i686-pc-cygwin/4.5.0/lto-wrapper.exe
Target: i686-pc-cygwin
Configured with: ../trunk/configure --prefix=/usr/local/gfortran
--enable-languages=c,c++,fortran --disable-bootstrap --enable-threads=posix
--enable-sjlj-exceptions --enable-version-specific-runtime-libs --enable-nls
--disable-libmudflap --disable-shared --disable-win32-registry
--with-system-zlib --enable-checking=release --enable-werror
--without-included-gettext --without-x --enable-libgomp
Thread model: posix
gcc version 4.5.0 20091119 (experimental) [trunk revision 152402] (GCC)
COLLECT_GCC_OPTIONS='-Wall' '-v' '-o' 'missingBlockData.exe' '-mtune=generic'
/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/i686-pc-cygwin/4.5.0/f951.exe
missingBlockData.f -ffixed-form -quiet -dumpbase missingBlockData.f
-mtune=generic -auxbase missingBlockData -Wall -version
-fintrinsic-modules-path
/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/finclude
-o /cygdrive/c/Users/urbanjs/AppData/Local/Temp/ccWoGlsE.s
GNU Fortran (GCC) version 4.5.0 20091119 (experimental) [trunk revision 152402]
(i686-pc-cygwin)
compiled by GNU C version 4.3.4 20090804 (release) 1, GMP version
4.3.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU Fortran (GCC) version 4.5.0 20091119 (experimental) [trunk revision 152402]
(i686-pc-cygwin)
compiled by GNU C version 4.3.4 20090804 (release) 1, GMP version
4.3.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-Wall' '-v' '-o' 'missingBlockData.exe' '-mtune=generic'
as -o /cygdrive/c/Users/urbanjs/AppData/Local/Temp/cc83xpoo.o
/cygdrive/c/Users/urbanjs/AppData/Local/Temp/ccWoGlsE.s
COLLECT_GCC_OPTIONS='-Wall' '-v' '-o' 'missingBlockData.exe' '-mtune=generic'
/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/i686-pc-cygwin/4.5.0/f951.exe
juinit2.f -ffixed-form -quiet -dumpbase juinit2.f -mtune=generic -auxbase
juinit2 -Wall -version -fintrinsic-modules-path
/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/finclude
-o /cygdrive/c/Users/urbanjs/AppData/Local/Temp/ccWoGlsE.s
GNU Fortran (GCC) version 4.5.0 20091119 (experimental) [trunk revision 152402]
(i686-pc-cygwin)
compiled by GNU C version 4.3.4 20090804 (release) 1, GMP version
4.3.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU Fortran (GCC) version 4.5.0 20091119 (experimental) [trunk revision 152402]
(i686-pc-cygwin)
compiled by GNU C version 4.3.4 20090804 (release) 1, GMP version
4.3.1, MPFR version 2.4.1-p5, MPC version 0.8
GGC heuristics: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
COLLECT_GCC_OPTIONS='-Wall' '-v' '-o' 'missingBlockData.exe' '-mtune=generic'
as -o /cygdrive/c/Users/urbanjs/AppData/Local/Temp/cc06kxQY.o
/cygdrive/c/Users/urbanjs/AppData/Local/Temp/ccWoGlsE.s
COMPILER_PATH=/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/i686-pc-cygwin/4.5.0/:/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/
LIBRARY_PATH=/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/:/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/:/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-Wall' '-v' '-o' 'missingBlockData.exe' '-mtune=generic'
/cygdrive/c/cygwin_install_files/gfortran/bin/../libexec/gcc/i686-pc-cygwin/4.5.0/collect2.exe
-Bdynamic --dll-search-prefix=cyg -tsaware -o missingBlockData.exe /lib/crt0.o
/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/crtbegin.o
-L/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0
-L/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc
-L/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/../../..
/cygdrive/c/Users/urbanjs/AppData/Local/Temp/cc83xpoo.o
/cygdrive/c/Users/urbanjs/AppData/Local/Temp/cc06kxQY.o -lgfortran -lgcc
-lcygwin -luser32 -lkernel32 -ladvapi32 -lshell32 -lgcc
/cygdrive/c/cygwin_install_files/gfortran/bin/../lib/gcc/i686-pc-cygwin/4.5.0/crtend.o
+ : __________________________________________________________
+ : cleanup
+ rm -f missingBlockData libex.a juinit2.f missingBlockData.f
--
Summary: BLOCKDATA referenced in EXTERNAL not loading from
library
Product: gcc
Version: 4.5.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: urbanjost at comcast dot net
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=42568