X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/eaf96f686e7ee979a87edc7dfc43766e38450017..afa5e4f04e0a44b38ff45f846264d43da33fc40f:/src/smpi/smpif2c.in diff --git a/src/smpi/smpif2c.in b/src/smpi/smpif2c.in index 02330f352c..296ca198b0 100755 --- a/src/smpi/smpif2c.in +++ b/src/smpi/smpif2c.in @@ -16,6 +16,9 @@ foreach my $fortran (@ARGV) { die "F2C failed\n" if $?; open F2C,"<$output"; my $started = 0; + print $tmp "#ifndef INTEGER_STAR_8\n"; + print $tmp "#define INTEGER_STAR_8\n"; + print $tmp "#endif\n"; print $tmp "#include \n"; print $tmp "#include \n"; while() { @@ -25,15 +28,15 @@ foreach my $fortran (@ARGV) { } if($started) { if(/^} (.*?);/) { - $_ = "}* $1 = NULL;\n"; + $_ = "}* __attribute__((weak)) $1 = NULL;\n"; } elsif(/^#define\s*(\S*)\s*\(?([^.]*)(\..*?)?\)?$/) { $_ = "#define $1 $2\[smpi_global_rank()\]"; if(defined $3) { $_ .= $3; } $_ .= "\n"; - $_ .= "\nvoid __attribute__((constructor)) __preinit_$1(void) {\n if(!$2) $2 = malloc(smpi_global_size() * sizeof(*$2));\n}\n"; - $_ .= "\nvoid __attribute__((destructor)) __postfini_$1(void) {\n free($2);\n $2 = NULL;\n}\n"; + $_ .= "\nvoid __attribute__((weak,constructor)) __preinit_$1(void) {\n if(!$2) $2 = malloc(smpi_global_size() * sizeof(*$2));\n}\n"; + $_ .= "\nvoid __attribute__((weak,destructor)) __postfini_$1(void) {\n free($2);\n $2 = NULL;\n}\n"; } } if(/\/\* Table of constant values \*\// || /MAIN__/) {