diff options
author | Chung-Lin Tang <cltang@codesourcery.com> | 2013-03-08 10:17:00 +0000 |
---|---|---|
committer | Chung-Lin Tang <cltang@codesourcery.com> | 2013-03-08 10:17:00 +0000 |
commit | 8e723a10451c6a7abadb6146fa62bbc0ab376f0b (patch) | |
tree | 6e4fc2a92a22363b58ba2a223ec4425bd2f20379 /gas/write.c | |
parent | 12afa43e27b580694749e622a8a9d20394080f76 (diff) | |
download | gdb-8e723a10451c6a7abadb6146fa62bbc0ab376f0b.zip gdb-8e723a10451c6a7abadb6146fa62bbc0ab376f0b.tar.gz gdb-8e723a10451c6a7abadb6146fa62bbc0ab376f0b.tar.bz2 |
2013-03-08 Chung-Lin Tang <cltang@codesourcery.com>
* write.h (struct fix): Add fx_dot_frag field.
(dot_frag): Declare.
* write.c (dot_frag): New variable.
(fix_new_internal): Set fx_dot_frag field with dot_frag.
(fixup_segment): Base calculation of fx_offset with fx_dot_frag.
* expr.c (expr): Save value of frag_now in dot_frag when setting
dot_value.
* read.c (emit_expr): Likewise. Delete comments.
Diffstat (limited to 'gas/write.c')
-rw-r--r-- | gas/write.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/gas/write.c b/gas/write.c index 1d27db7..22e68c5 100644 --- a/gas/write.c +++ b/gas/write.c @@ -122,6 +122,9 @@ symbolS *abs_section_sym; /* Remember the value of dot when parsing expressions. */ addressT dot_value; +/* The frag that dot_value is based from. */ +fragS *dot_frag; + /* Relocs generated by ".reloc" pseudo. */ struct reloc_list* reloc_list; @@ -169,6 +172,7 @@ fix_new_internal (fragS *frag, /* Which frag? */ fixP->fx_subsy = sub_symbol; fixP->fx_offset = offset; fixP->fx_dot_value = dot_value; + fixP->fx_dot_frag = dot_frag; fixP->fx_pcrel = pcrel; fixP->fx_r_type = r_type; fixP->fx_im_disp = 0; @@ -977,7 +981,7 @@ fixup_segment (fixS *fixP, segT this_segment) { add_number -= S_GET_VALUE (fixP->fx_subsy); fixP->fx_offset = (add_number + fixP->fx_dot_value - + fixP->fx_frag->fr_address); + + fixP->fx_dot_frag->fr_address); /* Make it pc-relative. If the back-end code has not selected a pc-relative reloc, cancel the adjustment |