diff options
author | Richard Henderson <rth@redhat.com> | 2004-12-12 00:59:05 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2004-12-12 00:59:05 -0800 |
commit | 7d7b8bfe55f8598f2fa0f842fb7f95060c45fa35 (patch) | |
tree | cb0ecd2cd7b8c21d4d1c38261b5b7116e8dd2782 /libgfortran/io | |
parent | c431e4997fcca052667b780341ddf4df5f6eb55c (diff) | |
download | gcc-7d7b8bfe55f8598f2fa0f842fb7f95060c45fa35.zip gcc-7d7b8bfe55f8598f2fa0f842fb7f95060c45fa35.tar.gz gcc-7d7b8bfe55f8598f2fa0f842fb7f95060c45fa35.tar.bz2 |
acinclude.m4 (LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY): New.
* acinclude.m4 (LIBGFOR_CHECK_ATTRIBUTE_VISIBILITY): New.
(LIBGFOR_CHECK_ATTRIBUTE_DLLEXPORT): New.
(LIBGFOR_CHECK_ATTRIBUTE_ALIAS): New.
* configure.ac: Use them.
* configure, config.h.in, aclocal.m4: Rebuild.
* libgfortran.h (prefix): Remove.
(PREFIX, IPREFIX): New.
(sym_rename, sym_rename1, sym_rename2): New.
(internal_proto, export_proto, export_proto_np): New.
(iexport_proto, iexport): New.
(iexport_data_proto, iexport_data): New.
* intrinsics/abort.c, intrinsics/args.c, intrinsics/associated.c,
intrinsics/cpu_time.c, intrinsics/cshift0.c,
intrinsics/date_and_time.c, intrinsics/env.c, intrinsics/eoshift0.c,
intrinsics/eoshift2.c, intrinsics/etime.c, intrinsics/exit.c,
intrinsics/flush.c, intrinsics/fnum.c, intrinsics/getXid.c,
intrinsics/getcwd.c, intrinsics/ishftc.c, intrinsics/mvbits.c,
intrinsics/pack_generic.c, intrinsics/rand.c, intrinsics/random.c,
intrinsics/reshape_generic.c, intrinsics/size.c,
intrinsics/spread_generic.c, intrinsics/stat.c,
intrinsics/string_intrinsics.c, intrinsics/system.c,
intrinsics/system_clock.c, intrinsics/transpose_generic.c,
intrinsics/umask.c, intrinsics/unlink.c, intrinsics/unpack_generic.c,
io/backspace.c, io/close.c, io/endfile.c, io/inquire.c, io/io.h,
io/open.c, io/rewind.c, io/transfer.c, libgfortran.h, m4/cshift1.m4,
m4/dotprod.m4, m4/dotprodc.m4, m4/dotprodl.m4, m4/eoshift1.m4,
m4/eoshift3.m4, m4/exponent.m4, m4/fraction.m4, m4/iforeach.m4,
m4/ifunction.m4, m4/matmul.m4, m4/matmull.m4, m4/nearest.m4,
m4/pow.m4, m4/reshape.m4, m4/set_exponent.m4, m4/shape.m4,
m4/transpose.m4, runtime/environ.c, runtime/error.c,
runtime/in_pack_generic.c, runtime/in_unpack_generic.c,
runtime/main.c, runtime/memory.c, runtime/pause.c, runtime/select.c,
runtime/stop.c: Use them to mark symbols internal or external.
* generated/*: Rebuild.
From-SVN: r92045
Diffstat (limited to 'libgfortran/io')
-rw-r--r-- | libgfortran/io/backspace.c | 3 | ||||
-rw-r--r-- | libgfortran/io/close.c | 3 | ||||
-rw-r--r-- | libgfortran/io/endfile.c | 3 | ||||
-rw-r--r-- | libgfortran/io/inquire.c | 3 | ||||
-rw-r--r-- | libgfortran/io/io.h | 352 | ||||
-rw-r--r-- | libgfortran/io/lock.c | 19 | ||||
-rw-r--r-- | libgfortran/io/open.c | 3 | ||||
-rw-r--r-- | libgfortran/io/rewind.c | 4 | ||||
-rw-r--r-- | libgfortran/io/transfer.c | 49 |
9 files changed, 223 insertions, 216 deletions
diff --git a/libgfortran/io/backspace.c b/libgfortran/io/backspace.c index eb25b10..9cdddb6 100644 --- a/libgfortran/io/backspace.c +++ b/libgfortran/io/backspace.c @@ -114,6 +114,9 @@ unformatted_backspace (void) } +extern void st_backspace (void); +export_proto(st_backspace); + void st_backspace (void) { diff --git a/libgfortran/io/close.c b/libgfortran/io/close.c index 48d669b..827eea8 100644 --- a/libgfortran/io/close.c +++ b/libgfortran/io/close.c @@ -33,6 +33,9 @@ static st_option status_opt[] = { }; +extern void st_close (void); +export_proto(st_close); + void st_close (void) { diff --git a/libgfortran/io/endfile.c b/libgfortran/io/endfile.c index d8462a3..76a1c34 100644 --- a/libgfortran/io/endfile.c +++ b/libgfortran/io/endfile.c @@ -24,6 +24,9 @@ Boston, MA 02111-1307, USA. */ /* endfile.c-- Implement the ENDFILE statement */ +extern void st_endfile (void); +export_proto(st_endfile); + void st_endfile (void) { diff --git a/libgfortran/io/inquire.c b/libgfortran/io/inquire.c index a93f99d..290f31c 100644 --- a/libgfortran/io/inquire.c +++ b/libgfortran/io/inquire.c @@ -356,6 +356,9 @@ inquire_via_filename (void) /* Library entry point for the INQUIRE statement (non-IOLENGTH form). */ +extern void st_inquire (void); +export_proto(st_inquire); + void st_inquire (void) { diff --git a/libgfortran/io/io.h b/libgfortran/io/io.h index e309448..e4f8f889 100644 --- a/libgfortran/io/io.h +++ b/libgfortran/io/io.h @@ -25,6 +25,7 @@ Boston, MA 02111-1307, USA. */ #include <setjmp.h> #include "libgfortran.h" + #define DEFAULT_TEMPDIR "/var/tmp" /* Basic types used in data transfers. */ @@ -44,10 +45,10 @@ typedef struct stream { char *(*alloc_w_at) (struct stream *, int *, gfc_offset); char *(*alloc_r_at) (struct stream *, int *, gfc_offset); - try (*sfree) (struct stream *); - try (*close) (struct stream *); - try (*seek) (struct stream *, gfc_offset); - try (*truncate) (struct stream *); + try (*sfree) (struct stream *); + try (*close) (struct stream *); + try (*seek) (struct stream *, gfc_offset); + try (*truncate) (struct stream *); } stream; @@ -230,13 +231,11 @@ typedef struct } st_parameter; - - -#define ioparm prefix(ioparm) extern st_parameter ioparm; +iexport_data_proto(ioparm); -#define ionml prefix(ionml) extern namelist_info * ionml; +internal_proto(ionml); typedef struct { @@ -311,13 +310,11 @@ typedef struct } global_t; - -#define g prefix(g) extern global_t g; +internal_proto(g); - -#define current_unit prefix(current_unit) extern gfc_unit *current_unit; +internal_proto(current_unit); /* Format tokens. Only about half of these can be stored in the format nodes. */ @@ -384,283 +381,230 @@ fnode; /* unix.c */ -#define sys_exit prefix(sys_exit) -void sys_exit (int) __attribute__ ((noreturn)); - -#define move_pos_offset prefix(move_pos_offset) -int move_pos_offset (stream *, int); +extern int move_pos_offset (stream *, int); +internal_proto(move_pos_offset); -#define get_oserror prefix(get_oserror) -const char *get_oserror (void); +extern int compare_files (stream *, stream *); +internal_proto(compare_files); -#define compare_files prefix(compare_files) -int compare_files (stream *, stream *); +extern stream *init_error_stream (void); +internal_proto(init_error_stream); -#define init_error_stream prefix(init_error_stream) -stream *init_error_stream (void); +extern stream *open_external (unit_flags *); +internal_proto(open_external); -#define open_external prefix(open_external) -stream *open_external (unit_flags *); +extern stream *open_internal (char *, int); +internal_proto(open_internal); -#define open_internal prefix(open_internal) -stream *open_internal (char *, int); +extern stream *input_stream (void); +internal_proto(input_stream); -#define input_stream prefix(input_stream) -stream *input_stream (void); +extern stream *output_stream (void); +internal_proto(output_stream); -#define output_stream prefix(output_stream) -stream *output_stream (void); +extern int compare_file_filename (stream *, const char *, int); +internal_proto(compare_file_filename); -#define compare_file_filename prefix(compare_file_filename) -int compare_file_filename (stream *, const char *, int); +extern gfc_unit *find_file (void); +internal_proto(find_file); -#define find_file prefix(find_file) -gfc_unit *find_file (void); +extern int stream_at_bof (stream *); +internal_proto(stream_at_bof); -#define stream_at_bof prefix(stream_at_bof) -int stream_at_bof (stream *); +extern int stream_at_eof (stream *); +internal_proto(stream_at_eof); -#define stream_at_eof prefix(stream_at_eof) -int stream_at_eof (stream *); +extern int delete_file (gfc_unit *); +internal_proto(delete_file); -#define delete_file prefix(delete_file) -int delete_file (gfc_unit *); +extern int file_exists (void); +internal_proto(file_exists); -#define file_exists prefix(file_exists) -int file_exists (void); +extern const char *inquire_sequential (const char *, int); +internal_proto(inquire_sequential); -#define inquire_sequential prefix(inquire_sequential) -const char *inquire_sequential (const char *, int); +extern const char *inquire_direct (const char *, int); +internal_proto(inquire_direct); -#define inquire_direct prefix(inquire_direct) -const char *inquire_direct (const char *, int); +extern const char *inquire_formatted (const char *, int); +internal_proto(inquire_formatted); -#define inquire_formatted prefix(inquire_formatted) -const char *inquire_formatted (const char *, int); +extern const char *inquire_unformatted (const char *, int); +internal_proto(inquire_unformatted); -#define inquire_unformatted prefix(inquire_unformatted) -const char *inquire_unformatted (const char *, int); +extern const char *inquire_read (const char *, int); +internal_proto(inquire_read); -#define inquire_read prefix(inquire_read) -const char *inquire_read (const char *, int); +extern const char *inquire_write (const char *, int); +internal_proto(inquire_write); -#define inquire_write prefix(inquire_write) -const char *inquire_write (const char *, int); +extern const char *inquire_readwrite (const char *, int); +internal_proto(inquire_readwrite); -#define inquire_readwrite prefix(inquire_readwrite) -const char *inquire_readwrite (const char *, int); +extern gfc_offset file_length (stream *); +internal_proto(file_length); -#define file_length prefix(file_length) -gfc_offset file_length (stream *); +extern gfc_offset file_position (stream *); +internal_proto(file_position); -#define file_position prefix(file_position) -gfc_offset file_position (stream *); +extern int is_seekable (stream *); +internal_proto(is_seekable); -#define is_seekable prefix(is_seekable) -int is_seekable (stream *); +extern void empty_internal_buffer(stream *); +internal_proto(empty_internal_buffer); -#define empty_internal_buffer prefix(empty_internal_buffer) -void empty_internal_buffer(stream *); +extern try flush (stream *); +internal_proto(flush); -#define flush prefix(flush) -try flush (stream *); - -#define unit_to_fd prefix(unit_to_fd) -int unit_to_fd (int); +extern int unit_to_fd (int); +internal_proto(unit_to_fd); /* unit.c */ -#define insert_unit prefix(insert_unix) -void insert_unit (gfc_unit *); +extern void insert_unit (gfc_unit *); +internal_proto(insert_unit); -#define close_unit prefix(close_unit) -int close_unit (gfc_unit *); +extern int close_unit (gfc_unit *); +internal_proto(close_unit); -#define is_internal_unit prefix(is_internal_unit) -int is_internal_unit (void); +extern int is_internal_unit (void); +internal_proto(is_internal_unit); -#define find_unit prefix(find_unit) -gfc_unit *find_unit (int); +extern gfc_unit *find_unit (int); +internal_proto(find_unit); -#define get_unit prefix(get_unit) -gfc_unit *get_unit (int); +extern gfc_unit *get_unit (int); +internal_proto(get_unit); /* open.c */ -#define test_endfile prefix(test_endfile) -void test_endfile (gfc_unit *); +extern void test_endfile (gfc_unit *); +internal_proto(test_endfile); -#define new_unit prefix(new_unit) -void new_unit (unit_flags *); +extern void new_unit (unit_flags *); +internal_proto(new_unit); /* format.c */ -#define parse_format prefix(parse_format) -void parse_format (void); +extern void parse_format (void); +internal_proto(parse_format); -#define next_format prefix(next_format) -fnode *next_format (void); +extern fnode *next_format (void); +internal_proto(next_format); -#define unget_format prefix(unget_format) -void unget_format (fnode *); +extern void unget_format (fnode *); +internal_proto(unget_format); -#define format_error prefix(format_error) -void format_error (fnode *, const char *); +extern void format_error (fnode *, const char *); +internal_proto(format_error); -#define free_fnodes prefix(free_fnodes) -void free_fnodes (void); +extern void free_fnodes (void); +internal_proto(free_fnodes); /* transfer.c */ #define SCRATCH_SIZE 300 -#define scratch prefix(scratch) extern char scratch[]; +internal_proto(scratch); -#define type_name prefix(type_name) -const char *type_name (bt); - -#define read_block prefix(read_block) -void *read_block (int *); - -#define write_block prefix(write_block) -void *write_block (int); - -#define transfer_integer prefix(transfer_integer) -void transfer_integer (void *, int); - -#define transfer_real prefix(transfer_real) -void transfer_real (void *, int); +extern const char *type_name (bt); +internal_proto(type_name); -#define transfer_logical prefix(transfer_logical) -void transfer_logical (void *, int); +extern void *read_block (int *); +internal_proto(read_block); -#define transfer_character prefix(transfer_character) -void transfer_character (void *, int); +extern void *write_block (int); +internal_proto(write_block); -#define transfer_complex prefix(transfer_complex) -void transfer_complex (void *, int); - -#define next_record prefix(next_record) -void next_record (int); - -#define st_set_nml_var_int prefix(st_set_nml_var_int) -void st_set_nml_var_int (void * , char * , int , int ); - -#define st_set_nml_var_float prefix(st_set_nml_var_float) -void st_set_nml_var_float (void * , char * , int , int ); - -#define st_set_nml_var_char prefix(st_set_nml_var_char) -void st_set_nml_var_char (void * , char * , int , int, gfc_charlen_type); - -#define st_set_nml_var_complex prefix(st_set_nml_var_complex) -void st_set_nml_var_complex (void * , char * , int , int ); - -#define st_set_nml_var_log prefix(st_set_nml_var_log) -void st_set_nml_var_log (void * , char * , int , int ); +extern void next_record (int); +internal_proto(next_record); /* read.c */ -#define set_integer prefix(set_integer) -void set_integer (void *, int64_t, int); +extern void set_integer (void *, int64_t, int); +internal_proto(set_integer); -#define max_value prefix(max_value) -uint64_t max_value (int, int); +extern uint64_t max_value (int, int); +internal_proto(max_value); -#define convert_real prefix(convert_real) -int convert_real (void *, const char *, int); +extern int convert_real (void *, const char *, int); +internal_proto(convert_real); -#define read_a prefix(read_a) -void read_a (fnode *, char *, int); +extern void read_a (fnode *, char *, int); +internal_proto(read_a); -#define read_f prefix(read_f) -void read_f (fnode *, char *, int); +extern void read_f (fnode *, char *, int); +internal_proto(read_f); -#define read_l prefix(read_l) -void read_l (fnode *, char *, int); +extern void read_l (fnode *, char *, int); +internal_proto(read_l); -#define read_x prefix(read_x) -void read_x (fnode *); +extern void read_x (fnode *); +internal_proto(read_x); -#define read_radix prefix(read_radix) -void read_radix (fnode *, char *, int, int); +extern void read_radix (fnode *, char *, int, int); +internal_proto(read_radix); -#define read_decimal prefix(read_decimal) -void read_decimal (fnode *, char *, int); +extern void read_decimal (fnode *, char *, int); +internal_proto(read_decimal); /* list_read.c */ -#define list_formatted_read prefix(list_formatted_read) -void list_formatted_read (bt, void *, int); +extern void list_formatted_read (bt, void *, int); +internal_proto(list_formatted_read); -#define finish_list_read prefix(finish_list_read) -void finish_list_read (void); +extern void finish_list_read (void); +internal_proto(finish_list_read); -#define init_at_eol prefix(init_at_eol) -void init_at_eol(); +extern void init_at_eol(); +internal_proto(init_at_eol); -#define namelist_read prefix(namelist_read) -void namelist_read(); +extern void namelist_read(); +internal_proto(namelist_read); -#define namelist_write prefix(namelist_write) -void namelist_write(); +extern void namelist_write(); +internal_proto(namelist_write); /* write.c */ -#define write_a prefix(write_a) -void write_a (fnode *, const char *, int); - -#define write_b prefix(write_b) -void write_b (fnode *, const char *, int); - -#define write_d prefix(write_d) -void write_d (fnode *, const char *, int); - -#define write_e prefix(write_e) -void write_e (fnode *, const char *, int); - -#define write_en prefix(write_en) -void write_en (fnode *, const char *, int); +extern void write_a (fnode *, const char *, int); +internal_proto(write_a); -#define write_es prefix(write_es) -void write_es (fnode *, const char *, int); +extern void write_b (fnode *, const char *, int); +internal_proto(write_b); -#define write_f prefix(write_f) -void write_f (fnode *, const char *, int); +extern void write_d (fnode *, const char *, int); +internal_proto(write_d); -#define write_i prefix(write_i) -void write_i (fnode *, const char *, int); +extern void write_e (fnode *, const char *, int); +internal_proto(write_e); -#define write_l prefix(write_l) -void write_l (fnode *, char *, int); +extern void write_en (fnode *, const char *, int); +internal_proto(write_en); -#define write_o prefix(write_o) -void write_o (fnode *, const char *, int); +extern void write_es (fnode *, const char *, int); +internal_proto(write_es); -#define write_x prefix(write_x) -void write_x (fnode *); +extern void write_f (fnode *, const char *, int); +internal_proto(write_f); -#define write_z prefix(write_z) -void write_z (fnode *, const char *, int); +extern void write_i (fnode *, const char *, int); +internal_proto(write_i); -#define list_formatted_write prefix(list_formatted_write) -void list_formatted_write (bt, void *, int); +extern void write_l (fnode *, char *, int); +internal_proto(write_l); +extern void write_o (fnode *, const char *, int); +internal_proto(write_o); -#define st_open prefix(st_open) -#define st_close prefix(st_close) -#define st_inquire prefix(st_inquire) -#define st_iolength prefix(st_iolength) -#define st_iolength_done prefix(st_iolength_done) -#define st_rewind prefix(st_rewind) -#define st_read prefix(st_read) -#define st_read_done prefix(st_read_done) -#define st_write prefix(st_write) -#define st_write_done prefix(st_write_done) -#define st_backspace prefix(st_backspace) -#define st_endfile prefix(st_endfile) +extern void write_x (fnode *); +internal_proto(write_x); +extern void write_z (fnode *, const char *, int); +internal_proto(write_z); -void __MAIN (void); +extern void list_formatted_write (bt, void *, int); +internal_proto(list_formatted_write); #endif diff --git a/libgfortran/io/lock.c b/libgfortran/io/lock.c index 8daf1aa..f0f8ddf 100644 --- a/libgfortran/io/lock.c +++ b/libgfortran/io/lock.c @@ -24,9 +24,11 @@ Boston, MA 02111-1307, USA. */ #include "libgfortran.h" #include "io.h" -st_parameter ioparm; -namelist_info * ionml; -global_t g; +st_parameter ioparm = { }; +iexport_data(ioparm); + +namelist_info *ionml = 0; +global_t g = { }; /* library_start()-- Called with a library call is entered. */ @@ -37,11 +39,10 @@ library_start (void) if (g.in_library) internal_error ("Recursive library calls not allowed"); -/* The in_library flag indicates whether we're currently processing a - * library call. Some calls leave immediately, but READ and WRITE - * processing return control to the caller but are still considered to - * stay within the library. */ - + /* The in_library flag indicates whether we're currently processing a + library call. Some calls leave immediately, but READ and WRITE + processing return control to the caller but are still considered to + stay within the library. */ g.in_library = 1; if (ioparm.iostat != NULL && ioparm.library_return == LIBRARY_OK) @@ -52,7 +53,7 @@ library_start (void) /* library_end()-- Called when a library call is complete in order to - * clean up for the next call. */ + clean up for the next call. */ void library_end (void) diff --git a/libgfortran/io/open.c b/libgfortran/io/open.c index 28a6bab..6991c38 100644 --- a/libgfortran/io/open.c +++ b/libgfortran/io/open.c @@ -410,6 +410,9 @@ already_open (gfc_unit * u, unit_flags * flags) /* Open file. */ +extern void st_open (void); +export_proto(st_open); + void st_open (void) { diff --git a/libgfortran/io/rewind.c b/libgfortran/io/rewind.c index b6363dc..bfc2bc4 100644 --- a/libgfortran/io/rewind.c +++ b/libgfortran/io/rewind.c @@ -1,4 +1,3 @@ - /* Copyright (C) 2002-2003 Free Software Foundation, Inc. Contributed by Andy Vaught @@ -25,6 +24,9 @@ Boston, MA 02111-1307, USA. */ /* rewind.c-- Implement the rewind statement */ +extern void st_rewind (void); +export_proto(st_rewind); + void st_rewind (void) { diff --git a/libgfortran/io/transfer.c b/libgfortran/io/transfer.c index ec5240d..9822a76 100644 --- a/libgfortran/io/transfer.c +++ b/libgfortran/io/transfer.c @@ -53,10 +53,25 @@ Boston, MA 02111-1307, USA. */ st_write(), an error inhibits any data from actually being transferred. */ -gfc_unit *current_unit; +extern void transfer_integer (void *, int); +export_proto(transfer_integer); + +extern void transfer_real (void *, int); +export_proto(transfer_real); + +extern void transfer_logical (void *, int); +export_proto(transfer_logical); + +extern void transfer_character (void *, int); +export_proto(transfer_character); + +extern void transfer_complex (void *, int); +export_proto(transfer_complex); + +gfc_unit *current_unit = NULL; static int sf_seen_eor = 0; -char scratch[SCRATCH_SIZE]; +char scratch[SCRATCH_SIZE] = { }; static char *line_buffer = NULL; static unit_advance advance_status; @@ -1433,6 +1448,9 @@ iolength_transfer_init (void) it must still be a runtime library call so that we can determine the iolength for dynamic arrays and such. */ +extern void st_iolength (void); +export_proto(st_iolength); + void st_iolength (void) { @@ -1440,6 +1458,9 @@ st_iolength (void) iolength_transfer_init (); } +extern void st_iolength_done (void); +export_proto(st_iolength_done); + void st_iolength_done (void) { @@ -1449,6 +1470,9 @@ st_iolength_done (void) /* The READ statement. */ +extern void st_read (void); +export_proto(st_read); + void st_read (void) { @@ -1481,6 +1505,8 @@ st_read (void) } } +extern void st_read_done (void); +export_proto(st_read_done); void st_read_done (void) @@ -1489,6 +1515,8 @@ st_read_done (void) library_end (); } +extern void st_write (void); +export_proto(st_write); void st_write (void) @@ -1497,6 +1525,8 @@ st_write (void) data_transfer_init (0); } +extern void st_write_done (void); +export_proto(st_write_done); void st_write_done (void) @@ -1567,6 +1597,21 @@ st_set_nml_var (void * var_addr, char * var_name, int var_name_len, } } +extern void st_set_nml_var_int (void *, char *, int, int); +export_proto(st_set_nml_var_int); + +extern void st_set_nml_var_float (void *, char *, int, int); +export_proto(st_set_nml_var_float); + +extern void st_set_nml_var_char (void *, char *, int, int, gfc_charlen_type); +export_proto(st_set_nml_var_char); + +extern void st_set_nml_var_complex (void *, char *, int, int); +export_proto(st_set_nml_var_complex); + +extern void st_set_nml_var_log (void *, char *, int, int); +export_proto(st_set_nml_var_log); + void st_set_nml_var_int (void * var_addr, char * var_name, int var_name_len, int kind) |