Browse Source

* doc/internals.texi (Relaxing with a table) <after relaxation>:

Point out caveats with generating fixups for the opcode in a frag.
binutils-2_11-branch
Hans-Peter Nilsson 26 years ago
parent
commit
67db5ab439
  1. 5
      gas/ChangeLog
  2. 10
      gas/doc/internals.texi

5
gas/ChangeLog

@ -1,3 +1,8 @@
2000-12-31 Hans-Peter Nilsson <hp@bitrange.com>
* doc/internals.texi (Relaxing with a table) <after relaxation>:
Point out caveats with generating fixups for the opcode in a frag.
Sat Dec 30 19:02:48 MET 2000 Jan Hubicka <jh@suse.cz>
* configure.in: Add support for x86_64 and x86_64-*-linux-gnu*

10
gas/doc/internals.texi

@ -1601,6 +1601,16 @@ called to convert the frag to an @code{rs_fill} frag with no variant part.
Sometimes changing addressing modes may also require rewriting the instruction.
It can be accessed via @code{fr_opcode} or @code{fr_fix}.
If you generate frags separately for the basic insn opcode and any relaxable
operands, do not call @code{fix_new} thinking you can emit fixups for the
opcode field from the relaxable frag. It is not garanteed to be the same frag.
If you need to emit fixups for the opcode field from inspection of the
relaxable frag, then you need to generate a common frag for both the basic
opcode and relaxable fields, or you need to provide the frag for the opcode to
pass to @code{fix_new}. The latter can be done for example by defining
@code{TC_FRAG_TYPE} to include a pointer to it and defining @code{TC_FRAG_INIT}
to set the pointer.
Sometimes @code{fr_var} is increased instead, and @code{frag_wane} is not
called. I'm not sure, but I think this is to keep @code{fr_fix} referring to
an earlier byte, and @code{fr_subtype} set to @code{rs_machine_dependent} so

Loading…
Cancel
Save