aboutsummaryrefslogtreecommitdiff
path: root/gas/doc
diff options
context:
space:
mode:
authorHans-Peter Nilsson <hp@axis.com>2000-12-31 19:54:58 +0000
committerHans-Peter Nilsson <hp@axis.com>2000-12-31 19:54:58 +0000
commit67db5ab439b50465821b98f47679ea9cc184e774 (patch)
tree1a38797c3422faf454231a1ce14db29d7e705502 /gas/doc
parentc0d8940f87f55d81d2a68b9333e494b48c1a49d3 (diff)
downloadfsf-binutils-gdb-67db5ab439b50465821b98f47679ea9cc184e774.zip
fsf-binutils-gdb-67db5ab439b50465821b98f47679ea9cc184e774.tar.gz
fsf-binutils-gdb-67db5ab439b50465821b98f47679ea9cc184e774.tar.bz2
* doc/internals.texi (Relaxing with a table) <after relaxation>:
Point out caveats with generating fixups for the opcode in a frag.
Diffstat (limited to 'gas/doc')
-rw-r--r--gas/doc/internals.texi10
1 files changed, 10 insertions, 0 deletions
diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi
index fa99bc6..a42bc0f 100644
--- a/gas/doc/internals.texi
+++ b/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