aboutsummaryrefslogtreecommitdiff
path: root/gas/read.c
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-05-14 22:37:47 +0000
committerRichard Henderson <rth@redhat.com>2001-05-14 22:37:47 +0000
commit67a659f60e569d0938cb8ce51489514bcf0d4cca (patch)
tree174f4709be7c73a849e7a694bcc38bd194dfb5a3 /gas/read.c
parent1ff55c930c9b2ba3b955b684228a7b2dc05445cb (diff)
downloadfsf-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.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/gas/read.c b/gas/read.c
index beb761f..209ab6a 100644
--- a/gas/read.c
+++ b/gas/read.c
@@ -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. */