1: /*
2: * Copyright (c) 1980 Regents of the University of California.
3: * All rights reserved. The Berkeley software License Agreement
4: * specifies the terms and conditions for redistribution.
5: *
6: * @(#)f77_abort.c 5.2.1 (2.11BSD) 1999/10/24
7: *
8: * all f77 aborts eventually call f77_abort.
9: * f77_abort cleans up open files and terminates with a dump if needed,
10: * with a message otherwise.
11: *
12: */
13:
14: #include <signal.h>
15: #include "fio.h"
16:
17: #ifndef pdp11
18: char *getenv();
19: int _lg_flag; /* _lg_flag is non-zero if -lg was specified to ld */
20: #endif
21:
22: f77_abort( nargs, err_val, act_core )
23: {
24: int core_dump;
25: sigset_t set;
26: #ifndef pdp11
27: /*
28: * The f77_dump_flag is really unnecessary to begin with and not
29: * implementing it on the PDP-11 saves a little space ...
30: */
31: char first_char, *env_var;
32:
33: env_var = getenv("f77_dump_flag");
34: first_char = (env_var == NULL) ? 0 : *env_var;
35: #endif
36:
37: signal(SIGILL, SIG_DFL);
38: (void)sigemptyset(&set);
39: (void)sigaddset(&set, SIGILL);
40: (void)sigprocmask(SIG_UNBLOCK, &set, NULL); /* don't block */
41:
42: #ifdef pdp11
43: /*
44: * See if we want a core dump: don't dump for signals like hangup.
45: */
46: core_dump = (nargs != 2) || act_core;
47: #else
48: /* see if we want a core dump:
49: first line checks for signals like hangup - don't dump then.
50: second line checks if -lg specified to ld (e.g. by saying
51: -g to f77) and checks the f77_dump_flag var. */
52: core_dump = ((nargs != 2) || act_core) &&
53: ( (_lg_flag && (first_char != 'n')) || first_char == 'y');
54: #endif
55:
56: if( !core_dump )
57: fprintf(units[STDERR].ufd,"*** Execution terminated\n");
58:
59: f_exit();
60: _cleanup();
61: if( nargs ) errno = err_val;
62: else errno = -2; /* prior value will be meaningless,
63: so set it to undefined value */
64:
65: if( core_dump ) abort();
66: else exit( errno );
67: }
Defined functions
f77_abort
defined in line
22; used 18 times
- in /usr/src/usr.lib/libF77/abort_.c line
15,
25
- in /usr/src/usr.lib/libF77/c_div.c line
27
- in /usr/src/usr.lib/libF77/main.c line
115
- in /usr/src/usr.lib/libF77/s_rnge.c line
27
- in /usr/src/usr.lib/libF77/subout.c line
25
- in /usr/src/usr.lib/libF77/trapov_.c line
281,
301,
338,
353,
439,
465,
539,
558,
575,
620
- in /usr/src/usr.lib/libF77/z_div.c line
27
- in /usr/src/usr.lib/libI77/err.c line
94
Defined variables