Allow one to profile FORTRAN77 programs.
This commit is contained in:
parent
0b2577457c
commit
60f9b09d26
@ -18,6 +18,8 @@ along with GNU CC; see the file COPYING. If not, write to
|
|||||||
the Free Software Foundation, 59 Temple Place - Suite 330,
|
the Free Software Foundation, 59 Temple Place - Suite 330,
|
||||||
Boston, MA 02111-1307, USA. */
|
Boston, MA 02111-1307, USA. */
|
||||||
|
|
||||||
|
/* $FreeBSD$ */
|
||||||
|
|
||||||
/* This file contains a filter for the main `gcc' driver, which is
|
/* This file contains a filter for the main `gcc' driver, which is
|
||||||
replicated for the `g77' driver by adding this filter. The purpose
|
replicated for the `g77' driver by adding this filter. The purpose
|
||||||
of this filter is to be basically identical to gcc (in that
|
of this filter is to be basically identical to gcc (in that
|
||||||
@ -52,14 +54,23 @@ Boston, MA 02111-1307, USA. */
|
|||||||
#ifndef MATH_LIBRARY
|
#ifndef MATH_LIBRARY
|
||||||
#define MATH_LIBRARY "-lm"
|
#define MATH_LIBRARY "-lm"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef MATH_LIBRARY_PROFILE
|
||||||
|
#define MATH_LIBRARY_PROFILE "-lm"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FORTRAN_INIT
|
#ifndef FORTRAN_INIT
|
||||||
#define FORTRAN_INIT "-lfrtbegin"
|
#define FORTRAN_INIT "-lfrtbegin"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef FORTRAN_INIT_PROFILE
|
||||||
|
#define FORTRAN_INIT_PROFILE "-lfrtbegin"
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FORTRAN_LIBRARY
|
#ifndef FORTRAN_LIBRARY
|
||||||
#define FORTRAN_LIBRARY "-lg2c"
|
#define FORTRAN_LIBRARY "-lg2c"
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef FORTRAN_LIBRARY_PROFILE
|
||||||
|
#define FORTRAN_LIBRARY_PROFILE "-lg2c"
|
||||||
|
#endif
|
||||||
|
|
||||||
/* Options this driver needs to recognize, not just know how to
|
/* Options this driver needs to recognize, not just know how to
|
||||||
skip over. */
|
skip over. */
|
||||||
@ -79,6 +90,7 @@ typedef enum
|
|||||||
OPTION_nostdlib, /* Aka --no-standard-libraries, or
|
OPTION_nostdlib, /* Aka --no-standard-libraries, or
|
||||||
-nodefaultlibs. */
|
-nodefaultlibs. */
|
||||||
OPTION_o, /* Aka --output. */
|
OPTION_o, /* Aka --output. */
|
||||||
|
OPTION_p, /* Aka --profile. */
|
||||||
OPTION_S, /* Aka --assemble. */
|
OPTION_S, /* Aka --assemble. */
|
||||||
OPTION_syntax_only, /* -fsyntax-only. */
|
OPTION_syntax_only, /* -fsyntax-only. */
|
||||||
OPTION_v, /* Aka --verbose. */
|
OPTION_v, /* Aka --verbose. */
|
||||||
@ -167,6 +179,9 @@ lookup_option (xopt, xskip, xarg, text)
|
|||||||
opt = OPTION_L, arg = text + 2;
|
opt = OPTION_L, arg = text + 2;
|
||||||
else if (text[1] == 'o')
|
else if (text[1] == 'o')
|
||||||
opt = OPTION_o;
|
opt = OPTION_o;
|
||||||
|
else if ((text[1] == 'p') && (text[2] == '\0')
|
||||||
|
|| (text[1] == 'p') && (text[2] == 'g') && (text[3] == '\0'))
|
||||||
|
opt = OPTION_p;
|
||||||
else if ((text[1] == 'S') && (text[2] == '\0'))
|
else if ((text[1] == 'S') && (text[2] == '\0'))
|
||||||
opt = OPTION_S, skip = 0;
|
opt = OPTION_S, skip = 0;
|
||||||
else if (text[1] == 'V')
|
else if (text[1] == 'V')
|
||||||
@ -291,6 +306,9 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
|
|||||||
/* By default, we throw on the math library if we have one. */
|
/* By default, we throw on the math library if we have one. */
|
||||||
int need_math = (MATH_LIBRARY[0] != '\0');
|
int need_math = (MATH_LIBRARY[0] != '\0');
|
||||||
|
|
||||||
|
/* If non-zero, the user gave us the `-p' or `-pg' flag. */
|
||||||
|
int saw_profile_flag = 0;
|
||||||
|
|
||||||
/* The number of input and output files in the incoming arg list. */
|
/* The number of input and output files in the incoming arg list. */
|
||||||
int n_infiles = 0;
|
int n_infiles = 0;
|
||||||
int n_outfiles = 0;
|
int n_outfiles = 0;
|
||||||
@ -359,6 +377,11 @@ lang_specific_driver (in_argc, in_argv, in_added_libraries)
|
|||||||
++n_outfiles;
|
++n_outfiles;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case OPTION_p:
|
||||||
|
saw_profile_flag = 1;
|
||||||
|
library = FORTRAN_LIBRARY_PROFILE;
|
||||||
|
break;
|
||||||
|
|
||||||
case OPTION_v:
|
case OPTION_v:
|
||||||
verbose = 1;
|
verbose = 1;
|
||||||
break;
|
break;
|
||||||
@ -432,7 +455,7 @@ or type the command `info -f g77 Copying'.\n\
|
|||||||
/* Not a filename or library. */
|
/* Not a filename or library. */
|
||||||
|
|
||||||
if (saw_library == 1 && need_math) /* -l<library>. */
|
if (saw_library == 1 && need_math) /* -l<library>. */
|
||||||
append_arg (MATH_LIBRARY);
|
append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE : MATH_LIBRARY);
|
||||||
|
|
||||||
saw_library = 0;
|
saw_library = 0;
|
||||||
|
|
||||||
@ -483,10 +506,12 @@ or type the command `info -f g77 Copying'.\n\
|
|||||||
{
|
{
|
||||||
if (0 == use_init)
|
if (0 == use_init)
|
||||||
{
|
{
|
||||||
append_arg (FORTRAN_INIT);
|
append_arg (saw_profile_flag ? FORTRAN_INIT_PROFILE
|
||||||
|
: FORTRAN_INIT);
|
||||||
use_init = 1;
|
use_init = 1;
|
||||||
}
|
}
|
||||||
append_arg (FORTRAN_LIBRARY);
|
append_arg (saw_profile_flag ? FORTRAN_LIBRARY_PROFILE
|
||||||
|
: FORTRAN_LIBRARY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (strcmp (argv[i], FORTRAN_LIBRARY) == 0)
|
else if (strcmp (argv[i], FORTRAN_LIBRARY) == 0)
|
||||||
@ -494,7 +519,8 @@ or type the command `info -f g77 Copying'.\n\
|
|||||||
else
|
else
|
||||||
{ /* Other library, or filename. */
|
{ /* Other library, or filename. */
|
||||||
if (saw_library == 1 && need_math)
|
if (saw_library == 1 && need_math)
|
||||||
append_arg (MATH_LIBRARY);
|
append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE
|
||||||
|
: MATH_LIBRARY);
|
||||||
saw_library = 0;
|
saw_library = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -513,13 +539,14 @@ or type the command `info -f g77 Copying'.\n\
|
|||||||
case 0:
|
case 0:
|
||||||
if (0 == use_init)
|
if (0 == use_init)
|
||||||
{
|
{
|
||||||
append_arg (FORTRAN_INIT);
|
append_arg (saw_profile_flag ? FORTRAN_INIT_PROFILE
|
||||||
|
: FORTRAN_INIT);
|
||||||
use_init = 1;
|
use_init = 1;
|
||||||
}
|
}
|
||||||
append_arg (library);
|
append_arg (library);
|
||||||
case 1:
|
case 1:
|
||||||
if (need_math)
|
if (need_math)
|
||||||
append_arg (MATH_LIBRARY);
|
append_arg (saw_profile_flag ? MATH_LIBRARY_PROFILE : MATH_LIBRARY);
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -51,6 +51,7 @@
|
|||||||
#define LIBGCC_SPEC "%{!pg: -lgcc} %{pg: -lgcc_p}"
|
#define LIBGCC_SPEC "%{!pg: -lgcc} %{pg: -lgcc_p}"
|
||||||
#define LIBSTDCXX_PROFILE "-lstdc++_p"
|
#define LIBSTDCXX_PROFILE "-lstdc++_p"
|
||||||
#define MATH_LIBRARY_PROFILE "-lm_p"
|
#define MATH_LIBRARY_PROFILE "-lm_p"
|
||||||
|
#define FORTRAN_LIBRARY_PROFILE "-lg2c_p"
|
||||||
|
|
||||||
/* FreeBSD is 4.4BSD derived */
|
/* FreeBSD is 4.4BSD derived */
|
||||||
#define bsd4_4
|
#define bsd4_4
|
||||||
|
@ -10,7 +10,7 @@ SRCS= gcc.c g77spec.c version.c
|
|||||||
|
|
||||||
CFLAGS+= -DDEFAULT_TARGET_VERSION=\"$(version)\"
|
CFLAGS+= -DDEFAULT_TARGET_VERSION=\"$(version)\"
|
||||||
CFLAGS+= -DDEFAULT_TARGET_MACHINE=\"$(target)\"
|
CFLAGS+= -DDEFAULT_TARGET_MACHINE=\"$(target)\"
|
||||||
CFLAGS+= -DFORTRAN_INIT=\"-lg2c\"
|
CFLAGS+= -DFORTRAN_INIT=\"-lg2c\" -DFORTRAN_INIT_PROFILE=\"-lg2c_p\"
|
||||||
|
|
||||||
DPADD= ${LIBCC_INT}
|
DPADD= ${LIBCC_INT}
|
||||||
LDADD= ${LIBCC_INT}
|
LDADD= ${LIBCC_INT}
|
||||||
|
Loading…
Reference in New Issue
Block a user