* ehopt.c: New file.

* as.h (enum _relax_state): Add rs_cfa.
	(check_eh_frame, eh_frame_estimate_size_before_relax): Declare.
	(eh_frame_relax_frag, eh_frame_convert_frag): Declare.
	* read.c (emit_expr): Call check_eh_frame.
	* write.c (cvt_frag_to_fill): Handle rs_cfa.
	(relax_segment): Likewise.
	* Makefile.am: Rebuild dependencies.
 	(GAS_CFILES): Add ehopt.c.
	(GENERIC_OBJS): Add ehopt.o.
	* doc/internals.texi (Frags): Document rs_cfa.

	* as.c (show_usage): Mention --traditional-format.
	(parse_args): Accept --traditional-format.
	* as.h (flag_traditional_format): Declare.
	* output-file.c (output_file_create): If flag_traditional_format,
	set BFD_TRADITIONAL_FORMAT on stdoutput.
	* doc/as.texinfo, doc/as.1: Document --traditional-format.
This commit is contained in:
Ian Lance Taylor
1998-02-06 03:42:05 +00:00
parent 44d33d559e
commit ffd652c313
9 changed files with 435 additions and 8 deletions

View File

@@ -381,7 +381,10 @@ enum _relax_state
/* A DWARF leb128 value; only ELF uses this. The subtype is 0 for
unsigned, 1 for signed. */
rs_leb128
rs_leb128,
/* Exception frame information which we may be able to optimize. */
rs_cfa
};
typedef enum _relax_state relax_stateT;
@@ -432,6 +435,9 @@ COMMON unsigned char flag_print_statistics;
/* True if local absolute symbols are to be stripped. */
COMMON int flag_strip_local_absolute;
/* True if we should generate a traditional format object file. */
COMMON int flag_traditional_format;
/* name of emitted object file */
COMMON char *out_file_name;
@@ -585,6 +591,11 @@ typedef struct frag fragS;
valueT add_to_literal_pool PARAMS ((struct symbol *, valueT, segT, int));
#endif
int check_eh_frame PARAMS ((struct expressionS *, unsigned int *));
int eh_frame_estimate_size_before_relax PARAMS ((fragS *));
int eh_frame_relax_frag PARAMS ((fragS *));
void eh_frame_convert_frag PARAMS ((fragS *));
#include "expr.h" /* Before targ-*.h */
/* this one starts the chain of target dependant headers */