diff options
author | Richard Henderson <rth@redhat.com> | 2001-05-14 22:37:47 +0000 |
---|---|---|
committer | Richard Henderson <rth@redhat.com> | 2001-05-14 22:37:47 +0000 |
commit | 67a659f60e569d0938cb8ce51489514bcf0d4cca (patch) | |
tree | 174f4709be7c73a849e7a694bcc38bd194dfb5a3 /gas/read.c | |
parent | 1ff55c930c9b2ba3b955b684228a7b2dc05445cb (diff) | |
download | fsf-binutils-gdb-67a659f60e569d0938cb8ce51489514bcf0d4cca.zip fsf-binutils-gdb-67a659f60e569d0938cb8ce51489514bcf0d4cca.tar.gz fsf-binutils-gdb-67a659f60e569d0938cb8ce51489514bcf0d4cca.tar.bz2 |
* ehopt.c (get_cie_info): Rename from eh_frame_code_alignment;
also collect whether to expect an FDE augmentation.
(check_eh_frame): Rewrite as a state machine. Track where in
an FDE we are located, skip any augmentation.
(eh_frame_estimate_size_before_relax): Get code alignment from
the fragment subtype.
(eh_frame_relax_frag, eh_frame_convert_frag): Likewise.
* read.c (emit_leb128_expr): Call check_eh_frame.
Diffstat (limited to 'gas/read.c')
-rw-r--r-- | gas/read.c | 7 |
1 files changed, 7 insertions, 0 deletions
@@ -4393,6 +4393,7 @@ emit_leb128_expr (exp, sign) int sign; { operatorT op = exp->X_op; + int nbytes; if (op == O_absent || op == O_illegal) { @@ -4412,6 +4413,12 @@ emit_leb128_expr (exp, sign) op = O_constant; } + /* Let check_eh_frame know that data is being emitted. nbytes == -1 is + a signal that this is leb128 data. It shouldn't optimize this away. */ + nbytes = -1; + if (check_eh_frame (exp, &nbytes)) + abort (); + if (op == O_constant) { /* If we've got a constant, emit the thing directly right now. */ |