From: Hans-Peter Nilsson Date: Sun, 31 Dec 2000 19:54:58 +0000 (+0000) Subject: * doc/internals.texi (Relaxing with a table) : X-Git-Tag: gprof-pre-ansify-2004-05-26~7257 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=863c4a4533fc0aa820cec53de5eee0a86800c7fd;p=pf3gnuchains%2Fpf3gnuchains4x.git * doc/internals.texi (Relaxing with a table) : Point out caveats with generating fixups for the opcode in a frag. --- diff --git a/gas/ChangeLog b/gas/ChangeLog index ba31aa6098..7432c9f46d 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2000-12-31 Hans-Peter Nilsson + + * doc/internals.texi (Relaxing with a table) : + Point out caveats with generating fixups for the opcode in a frag. + Sat Dec 30 19:02:48 MET 2000 Jan Hubicka * configure.in: Add support for x86_64 and x86_64-*-linux-gnu* diff --git a/gas/doc/internals.texi b/gas/doc/internals.texi index fa99bc6182..a42bc0f50b 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