Index: ChangeLog =================================================================== --- ChangeLog (revision 129437) +++ ChangeLog (working copy) @@ -1,3 +1,14 @@ +2007-10-18 Francois-Xavier Coudert + + PR libfortran/32021 + * runtime/backtrace.c (local_strcasestr): Protect by appropriate + macros. + * runtime/main.c (cleanup): Cast argument to free. + * intrinsics/spread_generic.c (spread_internal): Match runtime_error + arguments and format. + * intrinsics/signal.c (alarm_sub_int_i4, alarm_sub_int_i8): Cast + pointers to avoid warnings. + 2007-10-18 Ben Elliston * runtime/environ.c (init_choice): Remove unused function. Index: runtime/backtrace.c =================================================================== --- runtime/backtrace.c (revision 129461) +++ runtime/backtrace.c (working copy) @@ -60,7 +60,18 @@ Boston, MA 02110-1301, USA. */ #include +/* Macros for common sets of capabilities: can we fork and exec, can + we use glibc-style backtrace functions, and can we use pipes. */ +#define CAN_FORK (defined(HAVE_FORK) && defined(HAVE_EXECVP) \ + && defined(HAVE_WAIT)) +#define GLIBC_BACKTRACE (defined(HAVE_BACKTRACE) \ + && defined(HAVE_BACKTRACE_SYMBOLS)) +#define CAN_PIPE (CAN_FORK && defined(HAVE_PIPE) \ + && defined(HAVE_DUP2) && defined(HAVE_FDOPEN) \ + && defined(HAVE_CLOSE)) + +#if GLIBC_BACKTRACE && CAN_PIPE static char * local_strcasestr (const char *s1, const char *s2) { @@ -85,14 +96,7 @@ local_strcasestr (const char *s1, const } #endif } - -#define CAN_FORK (defined(HAVE_FORK) && defined(HAVE_EXECVP) \ - && defined(HAVE_WAIT)) -#define GLIBC_BACKTRACE (defined(HAVE_BACKTRACE) \ - && defined(HAVE_BACKTRACE_SYMBOLS)) -#define CAN_PIPE (CAN_FORK && defined(HAVE_PIPE) \ - && defined(HAVE_DUP2) && defined(HAVE_FDOPEN) \ - && defined(HAVE_CLOSE)) +#endif #if GLIBC_BACKTRACE Index: runtime/main.c =================================================================== --- runtime/main.c (revision 129461) +++ runtime/main.c (working copy) @@ -176,5 +176,5 @@ cleanup (void) close_units (); if (please_free_exe_path_when_done) - free (exe_path); + free ((char *) exe_path); } Index: intrinsics/spread_generic.c =================================================================== --- intrinsics/spread_generic.c (revision 129461) +++ intrinsics/spread_generic.c (working copy) @@ -131,9 +131,9 @@ spread_internal (gfc_array_char *ret, co if (ret_extent != ncopies) runtime_error("Incorrect extent in return value of SPREAD" - " intrinsic in dimension %d: is %ld," - " should be %ld", n+1, (long int) ret_extent, - (long int) ncopies); + " intrinsic in dimension %ld: is %ld," + " should be %ld", (long int) n+1, + (long int) ret_extent, (long int) ncopies); } else { @@ -142,8 +142,9 @@ spread_internal (gfc_array_char *ret, co - source->dim[dim].lbound; if (ret_extent != extent[dim]) runtime_error("Incorrect extent in return value of SPREAD" - " intrinsic in dimension %d: is %ld," - " should be %ld", n+1, (long int) ret_extent, + " intrinsic in dimension %ld: is %ld," + " should be %ld", (long int) n+1, + (long int) ret_extent, (long int) extent[dim]); if (extent[dim] <= 0) Index: intrinsics/signal.c =================================================================== --- intrinsics/signal.c (revision 129461) +++ intrinsics/signal.c (working copy) @@ -198,14 +198,14 @@ alarm_sub_int_i4 (int *seconds, int *han #if defined (SIGALRM) && defined (HAVE_ALARM) && defined (HAVE_SIGNAL) if (status != NULL) { - if (signal (SIGALRM, (void (*)(int)) *handler) == SIG_ERR) + if (signal (SIGALRM, (void (*)(int)) (INTPTR_T) *handler) == SIG_ERR) *status = -1; else *status = alarm (*seconds); } else { - signal (SIGALRM, (void (*)(int)) *handler); + signal (SIGALRM, (void (*)(int)) (INTPTR_T) *handler); alarm (*seconds); } #else @@ -226,14 +226,14 @@ alarm_sub_int_i8 (int *seconds, int *han #if defined (SIGALRM) && defined (HAVE_ALARM) && defined (HAVE_SIGNAL) if (status != NULL) { - if (signal (SIGALRM, (void (*)(int)) *handler) == SIG_ERR) + if (signal (SIGALRM, (void (*)(int)) (INTPTR_T) *handler) == SIG_ERR) *status = -1; else *status = alarm (*seconds); } else { - signal (SIGALRM, (void (*)(int)) *handler); + signal (SIGALRM, (void (*)(int)) (INTPTR_T) *handler); alarm (*seconds); } #else