809
[darwin-xtools.git] / cctools / as / notes
blob64df396909837363b403388137be5d3bfd8111b5
1 TODO for coalesced symbols:
2 - Should external relocation entries for defined coalesced symbols only be
3   created with -dynamic and not -static?
5 TODO:
6 - Add MacOS line termination \r .
8 Known bugs:
9 - The assembly line:
10         bl ""foo""
11   causes the symbol name "" to be used.
12 - cmpwi seems to be the same as cmpi for PowerPC.
13 - Can't optimize because of compiler bug #50416 prevents line 235 in symbols.c
14   from working (currently has #pragma CC_OPT_OFF and  #pragma CC_OPT_RESUME
15   around that routine).
16 - The m88k instruction "tb0 0,r0,undef" trashes the instruction because of
17   the undefined.
18 - 68k does not handle packed immediates (the tables have been changed to dis-
19   allow this) because there is no routine to convert a flonum to a 68k packed
20   form.
21 - The logical operators && and || are not implemented.
23 Bugs to be fixed:
24 - The m68k "jmp @(_foo)" is not legal and needs to be flaged.
25 - The PowerPC extended branch mnemonic like beqlrl need to take a CRFONLY or
26   a number shifted over by 2 (like the fcmpu instruction).
28 Changes for the 5.30 release (the cctools-809 release):
29 - Changed the assembler driver to no longer look in ../libexec/gcc/darwin paths
30   and to no longer install target assemblers in those paths.  Radar bug
31   #9908131.
33 Changes for the 5.30 release (the cctools-807 release):
34 - Changed cons() in read.c to call dwarf2_emit_insn() to allow instructions
35   that are being assembled with things like .long to trigger and outstanding
36   .loc line number creation.  Radar bug #9811389.
38 Changes for the 5.29 release (the cctools-806.2 release):
39 - Changed so that the target assembler get installed both in ../libexec/as and
40   in ../libexec/gcc/darwin and changed the driver to look in the first path then
41   fall back to the second path.  Radar bug #9661352.
43 Changes for the 5.29 release (the cctools-800.7 release):
44 - Added -gdwarf-2 to be the same as -g and --gwarf2 in main() in as.c .
45   Radar bug #9249853.
47 Changes for the 5.29 release (the cctools-800.4 release):
48 - Added missing support for -arch armv7[fk] for md_begin() in arm.c . Radar
49   bug #9055988.
51 Changes for the 5.29 release (the cctools-800.3 release):
52 - Added support for -arch armv7[fk] for main() in as.c and in s_align() in
53   read.c . Radar bug #8987684.
55 Changes for the 5.29 release (the cctools-800 release):
56 - Fixed the arm VCVT (between half-precision and single-precision) instructions
57   encodings.  Had the op bit inverted in the table.  It should have been:
58     VCVT<c><q>.F32.F16 <Qd>, <Dm> Encoded as op = 1 (aka fcvtshp)
59     VCVT<c><q>.F16.F32 <Dd>, <Qm> Encoded as op = 0 (aka fcvthps)
60   Radar bug #8951023.
61 - Added the .incbin directive.  Radar bug #8945167.
62 - Changed the Makefile to install the ppc and ppc64 assembler in LOCLIBDIR.
63   Radar bug #8828970.
65 Changes for the 5.28 release (the cctools-799 release):
66 - Found another path that -g was not checking to produce dwarf line table
67   entries only for the text section.  That was in dwarf2_emit_insn() in
68   dwarf2dbg.c.  Radar bug #8792738.
69 - Fixed the mishanding of the thumb2 tst instruction.  Changed do_t_mvn_tst()
70   in arm.c.  Normally, the versions of the instructions that set condition flags
71   aren't allowed inside IT blocks, so it's checking that.  TST<c>, however, is
72   allowed and isn't accounted for.  Radar bug #8783763.
73 - Changed the arm assembler for ADD/SUB (immediate, Thumb) to correctly follow
74   the manual's note about these instructions:
75     encoding T1 is to be preferred if Rd is specified, and T2 is preferred if
76     it is not.
77   To do this do_t_add_sub() sets the unused 0x0100 in inst.instruction when
78   using BFD_RELOC_ARM_THUMB_ADD to communicate to md_apply_fix() that two
79   operands were present in assembly code.  Then md_apply_fix() uses this bit
80   and checks the size of the immediate to see if the 3-bit immediate form can
81   be uses as it should be preferred in that case.  Radar bug #8756030.
83 Changes for the 5.28 release (the cctools-798 release):
84 - Changed to error messages in arm.c which were:
85     "invalid constant (%x) after fixup"
86   to have 0x in front of the hex value.  Radar bug #8772178.
87 - Changed do_t_mul() in arm.c .  The problem is that the assembler didn't take
88   into account that the "mul" mnemonic (w/o the 's' suffix) is valid for the
89   16-bit wide encoding when in an IT block.  Radar bug #8755919.
90 - Added support for make aarm_test .
91   - Added a arm-check.c that currently only does arm ALU instructions can set
92   into account that the "mul" mnemonic (w/o the 's' suffix) is valid for the
93   16-bit wide encoding when in an IT block.  Radar bug #8755919.
94 - Added support for make aarm_test .
95   - Added a arm-check.c that currently only does arm ALU instructions can set
96     the condition codes.
97   - Added #ifndef INSNS_TABLE_ONLY to arm.c so that can be #defined and included
98     in arm-check.c .
99   - Made the needed changes in the Makefile to add support for aarm_test .
101 Changes for the 5.28 release (the cctools-797 release):
102 - Changed the code that was adding the NULL DIE terminating the Compile Unit
103   DIE's when producing dwarf debuging info for assembly files to not be
104   conditional on if dwarf2_subprograms_info != NULL.  The change is at the end
105   of out_debug_info() in dwarf2dbg.c . Radar bug #8441990 and #8443177.
107 Changes for the 5.28 release (the cctools-796 release):
108 - Changed the x86-64 assembler to allow immediate expressions of the form:
109     movq $(xxx-L$y),%rax
110   by changing output_imm() to look for 4 byte signed 32-bit expression and use
111   the same trick in output_disp() to call fix_new() so it will use two
112   relocation entries pointing at the same 32-bits.  Radar bug #7081262.
113 - Added the OpenSourceURL key to the cctools.plist file as:
114     <key>OpenSourceURL</key>
115     <string>http://ftp.gnu.org/gnu/binutils/binutils-1.38.1.tar.gz</string>
116   Radar bug #8569655.
118 Changes for the 5.28 release (the cctools-795 release):
119 - Added checks or overlowing the 24-bits of the r_address relocation entry in
120   fix_to_relocation_entries() in write_object.c  .  Radar bug #8348673.
122 Changes for the 5.28 release (the cctools-794 release):
123 - Added the NULL DIE terminating the Compile Unit DIE's when producing dwarf
124   debuging info for assembly files.  The change is at the end of
125   out_debug_info() in dwarf2dbg.c . Radar bug #8453745.
127 Changes for the 5.28 release (the cctools-793 release):
128 - Fixed more problems with support for generating dwarf debugging information
129   for assembly source, with symbols in other sections besides .text .
130   - The routine make_subprogram_for_symbol() in symbols.c was not ignoring
131     symbols not in the .text section.  Also the calls to 
132   - Generation of the .loc directive done in md_assemble() in i386.c and in
133     arm.c by calling dwarf2_loc() also needed to check that the section was
134     the .text section.
135   Radar bug #8425965.
136 - Fixed problems with support for generating dwarf debugging information for
137   assembly source.  The routine make_subprogram_for_symbol() in symbols.c was
138   not updating last_dwarf2_subprogram_info when dwarf2_subprograms_info != NULL
139   and it was not ignoring symbols that stared with 'L'.  Radar bug #8387908.
141 Changes for the 5.28 release (the cctools-790 release):
142 - Added the arm Media and VFP Feature Registers 1 and 0 to arm.c as mvfr0,
143   MVFR0, mvfr1 and MVFR1.  Radar bug #8246341.
145 Changes for the 5.28 release (the cctools-788 release):
146 - Remove the use of -mdynamic-no-pic from the Makefile.  Radar bug #8207834.
148 Changes for the 5.28 release (the cctools-787 release):
149 - Added support for the .symbol_resolver directive.  Added s_symbol_resolver()
150   in read.c and an entry for it in pseudo_table[].  Also added N_SYMBOL_RESOLVER
151   in the conditional test in colon() in symbols.c to allow it to be set first
152   then the symbol defined.  Radar bug #7901954.
154 Changes for the 5.28 release (the cctools-786 release):
155 - Fixed the incorrect trigger for outputing dwarf info in dwarf2_finish() in
156   dwarf2dbg.c .  The change was to make sure that all_segs was not NULL and the
157   either all_segs->next was not NULL or debug_type == DEBUG_DWARF2.
158   Radar bug #8154276.
160 Changes for the 5.28 release (the cctools-785 release):
161 - Fixed a bug with support for thread local variables in fixup_section() in
162   layout.c that did not include the address of the fragment when calculating
163   the "pc" value.  Radar bug #8113809.
164 - Added support for generating dwarf debugging information for assembly source
165   files when the --gdwarf2 or -g flag is specified.  Radar bug #7580966.
166   - main() in as.c was changed to make -g the same as --gdwarf2.
167   - The declaration of apple_version[] was moved to as.h out of as.c.
168   - The variable version_string[] in as.c was made global and the declaration 
169     was added to as.h.
170   - The macro APPLE_INC_VERSION was added to as.h for print the version string
171     in main() in as.c
172   - The global varaible apple_flags was added to as.[ch] and set in main() when
173     the environment variable RC_DEBUG_OPTIONS is set.
174   - The global variable dwarf_file_number was added to dwarf2dbg.[ch] .
175   - Generation of the .file directive is done in read_a_source_file() in read.c
176     by calling dwarf2_file() which was added in dwarf2dbg.c .  The call uses
177     global variable dwarf_file_number and increments it.
178   - Generation of the .loc directive is done in md_assemble() in i386.c and in
179     arm.c by calling dwarf2_loc() which was added in dwarf2dbg.c .
180   - The struct dwarf2_subprogram_info and global variable
181     dwarf2_subprograms_info was added to dwarf2dbg.h to collect info and use it
182     for the subprogram entires.
183   - Collecting information for the symbols to make dwarf2 subprogram entires
184     is done by calling the new routine, make_subprogram_for_symbol(), added
185     to symbols.c called from colon() in symbols.c .
186   - out_debug_abbrev() in dwarf2dbg.c was change to add the DW_TAG_subprogram
187     DIE as #2 and changed to DW_CHILDREN_yes for the DW_TAG_compile_unit DIE.
188     Also the AT_APPLE_flags is added when apple_flags is set.
189   - In out_debug_info() in dwarf2dbg.c it was change to output the subprograms
190     and the DW_AT_producer was changed to use the version information so it
191     matches what as(1) -v would print.  Also the AT_APPLE_flags added to the
192     output when apple_flags is set.
193   - The trigger for calling the out_debug_*() routines at the end of
194     dwarf2_finish() in dwarf2dbg.c was change to include a test of
195     debug_type == DEBUG_DWARF2 (when --gdwarf2 is specified).
197 Changes for the 5.28 release (the cctools-784 release):
198 - Changed the arm assembler to not used the thumb2 opcode when targetting armv6
199   and unified syntax.  The fix was in do_t_nop() in arm.c to add a check in
200   additiona to unified syntax to make sure the cpu_variant core specified also
201   supports thumb2.  Radar bug #7876935.
202 - Add a check for too many sections being created in sections.c .  Radar bug
203   #7920267.
205 Changes for the 5.28 release (the cctools-783 release):
206 - Added control register names as %ecr0 and %rcr0 in i386-opcode.h that is the
207   names llvm-mc uses.  And added $(LLVM_MC) to the otool command lines in the
208   Makefile.
209 - Added the -llvm-mc option to the driver to run llvm-mc.  Radar bug #7837868.
210 - Added the support for thread local variables.
211   - Changed the _i386_insn in i386.c to include a reloc[] array like for ARCH64
212     so it can hold a GENERIC_RELOC_TLV.
213   - Changed md_assemble() in i386.c to zero out reloc[] without the #ifdef
214     ARCH64.
215   - Changed the call for fix_new() in output_disp() in i386.c to pass i.reloc[n]
216     as the last argument in the #if !ARCH64 case.
217   - Changed the #if expression around lex_got() and removed the !defined(ARCH64)
218     part of the condition.
219   - Inside lex_got() in i386 changed gotrel[] initialization on the #ifdef
220     NeXT_MOD side. Wrapped that in #ifdef ARCH64 and added the TLVP to the table
221     and added an #else side for 32-bit with the entry for the TLVP.
222   - In layout_addresses() in layout.c made changes to test for
223     S_THREAD_LOCAL_ZEROFILL when testing for S_ZEROFILL.
224   - In fixup_section() in layout.c added code that is
225     #if defined(I386) && !defined(ARCH64)
226     - To test GENERIC_RELOC_TLV relocation type when sub_symbolP is not NULL
227       and adjust the value to have to be the difference of the end of the
228       relocated item and the symbol. Then clear the fx_subsy field and set the
229       fx_pcrel to get the proper TVL relocation entry.  This is done in two
230       places, one where both symbols are in a section and one when the
231       add symbol is undefined.
232     - Added a check of fixP->fx_r_type != GENERIC_RELOC_TLV where it would
233       add in the symbol value so it does not do that (it will be an external
234       reloc in this case even if the symbol is defined).
235   - In read.c added the new section type names thread_local_regular,
236     thread_local_variables and thread_local_init_function_pointers to
237     type_names[].
238   - In read.c added the new built in section directives tdata, tlv and
239     thread_init_func to builtin_sections[].
240   - In read.c changed s_zerofill() and passed the section type as the value
241     parameter and added the tbss directive to use s_zerofill. And changed the
242     zerofill directive to pass S_ZEROFILL as the value.  In s_zerofill() it
243     checks for the value passes as S_THREAD_LOCAL_ZEROFILL and creates the
244     (__DATA, __thread_bss) section with that type.
245   - In fix_to_relocation_entries() in write_object.c added a test of
246       ((symbolP->sy_type & N_TYPE) == N_SECT &&
247        fixP->fx_r_type == GENERIC_RELOC_TLV)
248     that is 
249       #if defined(I386) && !defined(ARCH64)
250     to where it sets the r_extern bit and the r_symbolnum to the symbol index
251     as @TLVP that are defined get external relocation entries.
252   - In sections.c changed section_new() and in write_object.c in write_object()
253     to also test for S_THREAD_LOCAL_ZEROFILL when it is testing for S_ZEROFILL.
254   Radar bug #7796734.
256 Changes for the 5.28 release (the cctools-782 release):
257 - Added the .weak_def_can_be_hidden to read.c and changed colon() in symbols.c
258   to also preserve N_WEAK_DEF bit.  Radar bug #5021217.
259 - Fixed the arm assembler to correctly detect errors with floating point to
260   integer conversion instruction that use the rounding mode (vcvtr.*) when they
261   are not valid and generate an error.  The fix was in do_vfp_nsyn_cvtr() in
262   arm.c to cause an error if one has not already be caught by checking that
263   the flavour index into the static arrary enc[] does not have a null value.
264   Radar bug #7719236.
265 - Added the Intel aes instructions.  Radar bug #7709572.
267 Changes for the 5.28 release (the cctools-780 release):
268 - Changed the Makefile to use -Os for OFLAG in building the driver.
269 - Fixed a bug in parse_neon_mov() in arm.c that caused assembling:
270     vmov.f32 s2, s1
271   to end up with an undefined symbol named "s1" in the output file.  This was
272   caused by the call to parse_big_immediate().  Which was incorrectly called
273   before trying arm_typed_reg_parse().  The call to parse_big_immediate()
274   failed but as a side effect created the undefined symbol and then the later
275   call to arm_typed_reg_parse() did not fail.  Reversing the two removes the
276   problem and then in the case when parse_big_immediate() fails it causes an
277   error.  Radar bug #7567713.
278 - Fixed arm.c that incorrectly had an ARM_VARIANT set for the Thumb only
279   instructions cbnz and cbz.  Also fixed do_neon_mov() in arm.c when it was
280   called for something like "vshr q0,d0,#0" to not abort() in the switch(rs)
281   case for default if a inst.error and just return and let the error get
282   reported.  Radar bug #7559323.
284 Changes for the 5.28 release (the cctools-779 release):
285 - Changed the test in encode_thumb2_ldmstm() for the warning of the value
286   stored is UNPREDICTABLE to check that writeback is set before the rest of the
287   checks such as the base is in the list and is also not the lowest register
288   in the mask.  Radar bug #7528057.
290 Changes for the 5.28 release (the cctools-777 release):
291 - Changed round() to rnd() and stuff/round.h to stuff/rnd.h in all files and
292   removed -fno-builtin-round from the Makefile.  Radar bug #7475139.
293 - Changed the Makefile to use -Os for OFLAG.  Radar bug #7475093.
295 Changes for the 5.28 release (the cctools-775 release):
296 - Added support for the new arm ARM_RELOC_HALF and ARM_RELOC_HALF_SECTDIFF
297   relocation entries used with the movw and movt instruction immediates.
298   - Added a new file arm_reloc.h to have internal #defines for
299     ARM_{,THUMB_}RELOC_{LO16,HI16} with notes about the encodings for the
300     reloc entries in <mach-o/arm/reloc.h> .
301   - In arm.c assigned the enum BFD_RELOC_{ARM,THUMB}_MOV{W,T} values
302     ARM_{,THUMB_}RELOC_{LO16,HI16} from arm_reloc.h .
303   - Fixed the code in md_apply_fix() for the BFD_RELOC_{ARM,THUMB}_MOV{W,T}
304     case values so the *_MOVT values would have high 16 bits of the value used.
305   - Fixed the code in write_object.c to correctly deal with the ARM relocs.
306     - In nrelocs_for_fix() added the #ifdef ARM code for the paired relocs.
307     - In fix_to_relocation_entries() added the #ifdef ARM code for the handling
308       of the LO16,HI16 and SECTDIFF ARM relocs.
309   Radar bug #7421496.
311 Changes for the 5.28 release (the cctools-774 release):
312 - Added the invvpid and invept instructions to i386-opcode.h .
313   Radar bug #7383743.
314 - Fixed x86_64 instructions that have a 0xf2, 0xf3, etc. "mandatory" prefixes to
315   follow optional prefixes.   This is done by adding a entry in the i.prefix[]
316   array, increasing MAX_PREFIXES in i386.h by one and adding MAN_PREFIX just
317   before REX_PREFIX.  Then add_prefix() in i386.c had the parameter mandatory
318   added to it which was passed MAN_PREFIX when called with a mandatory prefix or
319   0 otherwise.  Then add_prefix() had code added to it to place the passed
320   prefix into i.prefix[mandatory] when mandatory was not zero and return 1
321   to indicate a prefix was added but was not a REP prefix.  Radar bug #7403143.
322 - Fixed the i386 bound instruction to take WordMem, WordReg not WordReg,
323   WordMem . Radar bug #7394709.
324 - Update the i386-check.c program to work for both i386 and x86_64 and added in
325   the Makefile an ax86_64_test target.
327 Changes for the 5.27 release (the cctools-772 release):
328 - Fixed the arm's assembler's vmls.f32 and vmls.f64 encodings, the changes were
329   in do_vfp_nsyn_mla_mls() in arm.c to use "fnmacs" instead of "fmscs" and
330   "fnmacd" instead of "fmscd".  Fixed the arm's assembler's vnmla.f32, vnmls.f32
331   and vnmla.f64, vnmls.f64 encoding in their respective table entries.
332   Radar bug #7331301.
333 - Changed the arm assembler to make the vcvt.* forms match the manual the same
334   as what was the vcvtz.* forms.  And removed the vcvtz.* forms.  Then added
335   the vcvtr.* forms as in the manual as what was the old vcvt.* forms.  Changes
336   were in do_vfp_nsyn_cvt() in arm.c in the last enc[] array entries and a
337   change to the "if (rs == NS_FF" to add "&& (flavour == 18 || flavour == 19))".
338   Then changed do_vfp_nsyn_cvtz() to do_vfp_nsyn_cvtr() and changed the entries
339   in the enc[] array in there.  And also changed the vcvt entry to use
340   vfp_nsyn_cvtr . Radar bug #7329319 & #7329326.
341 - Changed the arm assembler to allow "vmrs APSR_nzcv, FPSCR" by adding the
342   routine do_vmrs() in arm.c and changing the table entry for "vmrs" to allow
343   ASPR_RR for the first argument and use the new routine.  Radar bug #7327031.
344 - Changed i386_displacement() in i386.c and turned on the GCC_ASM_O_HACK to
345   allow displacements like "4+(%esp)".  Radar bug #5828463.
347 Changes for the 5.27 release (the cctools-771 release):
348 - Changed fixup_section() in layout.c for the first #if ARM case and removed the
349   check for the add symbol not being weak to set the low bit of the value.
350   Radar bug #7262421.
351 - Changed the test in encode_thumb2_ldmstm() for the warning of the value
352   stored is UNPREDICTABLE to check that the base is also not the lowest register
353   in the mask.  Radar bug #7268941.
355 Changes for the 5.27 release (the cctools-769 release):
356 - Fixed a bug in s_zerofill() in read.c that did not allow zerofill sizes
357   greater than 32-bits.  In s_zerofill() in read.c changed the local variable 
358   "size" to a uint64_t type.  Changed the type of the field "fr_address"
359   in the frag struct in frags.h to a uint64_t type.  And fixed types for
360   relax_addressT in relax.h which were reversed in the #ifdef ARCH64.
361   Radar bug #7245879.
363 Changes for the 5.27 release (the cctools-767 release):
364 - Added an error check for the call to realpath(3) in driver.c in main().
365   Radar bug #7201696.
367 Changes for the 5.27 release (the cctools-766 release):
368 - Picked up the change that never made it in the sources from cctools-685 but
369   made in in the notes below.  Changed relax_section() in layout.c in two plaves
370   #ifdef'ed ARM.  In the first look it now sets frag's relax_marker field to 
371   zero.  In the "Do relax" loop it flips the relax_marker field with an "^= 1".
372   This is to fix a problem in relaxed_symbol_addr() so it knows to add the
373   stretch amount to the addr it is returning.  Radar bug #7141908.
375 Changes for the 5.27 release (the cctools-765 release):
376 - Fixed a problem with the mask used for checking overflow of 2 byte values
377   in fixup_section() in layout.c that was 0xffff8000 which should have been
378   0xffff0000.  Also fixed the resulting error message so it would print the
379   source line number.  Radar bug #7114412.
380 - Added the assembly for the orn (immediate) instructions to arm.c in
381   t_do_orn().  Radar bug #7096522.
383 Changes for the 5.27 release (the cctools-763 release):
384 - Added the assembly for the orn instructions to arm.c .  Radar bug #7096522.
385 - Added the assembly for the rrx instructions to arm.c .  Radar bug #7098328.
387 Changes for the 5.27 release (the cctools-762 release):
388 - Changed the Makefile to set CC when when SDKROOT is set.  Radar bug #7078805.
389 - Changed output_relax_insn() in arm.c to allow symbols that are just an
390   absolute symbol.  As this occurs when using a symbol from .set for an
391   immediate value.  Radar bug #7069304.
393 Changes for the 5.27 release (the cctools-760 release):
394 - Changed the sources so the armv7 stuff is a no longer #ifndef __OPEN_SOURCE__
395   Radar bug #7016121.
396   - Changed the Makefile and removed the #ifndef __OPEN_SOURCE__ for the arm
397     build.
398   - Removed the #ifndef __OPEN_SOURCE__ from as.c that was bracketing armv7
399     the reference.
401 Changes for the 5.27 release (the cctools-759 release):
402 - Added the assembly for the pldw, vcvt.f32.f16, vcvt.f16.f32, vcvtt and
403   vcvtb instructions to arm.c .  Radar bug #6959129.
404 - Added the memory barrior options ish, ishst, osh, oshst, nsh and nshst
405   to arm.c . Radar bug #6982242.
406 - Changed the Makefile to add -isysroot $(SDKROOT) to compile and link lines
407   when SDKROOT is set.  Radar bug #6965029.
409 Changes for the 5.27 release (the cctools-758 release):
410 - Backed out the change in Radar bug #6511482 in the arm assembler to put out a
411   relocation entry for 32-bit thumb branches using the ARM_THUMB_32BIT_BRANCH
412   relocation type.
413   - Changed arm.c to no longer assign the enum type
414     BFD_RELOC_THUMB_PCREL_BRANCH20 to the ARM_THUMB_32BIT_BRANCH relocation
415     type's value.
416   - Changed nrelocs_for_fix() and fix_to_relocation_entries() in write_object.c
417     and removed the #ifdef ARM and tests for the ARM_THUMB_32BIT_BRANCH
418     relocation type when archflag_cpusubtype == CPU_SUBTYPE_ARM_V7.  That code
419     use to count 1 for the fixes in nrelocs_for_fix() and to put out a
420     relocation entry in fix_to_relocation_entries() for the type
421     ARM_THUMB_32BIT_BRANCH.  The relocation entry put out was a local relocation
422     entry that was pcrel, length of long and an symbolnum of R_ABS (0).
423     Also in fix_to_relocation_entries() it was setting fr_type to
424     ARM_THUMB_32BIT_BRANCH so that BFD_RELOC_THUMB_PCREL_BRANCH20 versions with
425     no symbol were geting set correctly.
426   Radar bug #6945428.
428 Changes for the 5.27 release (the cctools-757 release):
429 - Fixed the arm assembler to correctly place Rm in the rbit instruction in
430   both halfs of the 16 bit opcode.  The fix was is do_t_rbit() in arm.c .
431   Radar bug #6915130.
433 Changes for the 5.27 release (the cctools-754 release):
434 - Changed the arm assembler to allow -arch armv7 to accept ARMv7M special
435   registers.  The change was in md_begin() in arm.c for the case statement
436   CPU_SUBTYPE_ARM_V7. Radar bug #6782055.
438 Changes for the 5.27 release (the cctools-752 release):
439 - Ported to build with clang.
440   - Changed Makefile to work around bugs 6761248, 6756531 and 6756295.
441   - Added a (void) cast in the SKIP_WHITESPACE macro in read.h .
442   - Added (void) casts in the obstack_finish macro in obstack.h .
443   - Added (void) cast before obstack_finish() in:
444       frag_new() in frags.c
445       two places add_last_frags_to_sections() and two places in
446         layout_addresses() in layout.c 
447       section_new() in sections.c
448   - Added (void) case before obstack_1grow() in:
449       demand_copy_string(), s_macro(), s_endmacro(), add_to_macro_definition(),
450       expand_macro() and s_load() in read.c .
451   - Changed decode_local_label_name() in symbols.c so to use a literal string
452     instead of a pointer to a string to get rid of a "potentially insecure"
453     warning.
454   - Changed ppc.c and the use and setting of error_param_message so it is just
455     a string and not a format string to get rid of a "potentially insecure"
456     warning.  Workaround for 6765807.
457   - Fixed warnings about extra tokens at end of #endif directive in ofile.c
458     by putting them in a comment.
460 - Changed input_file_give_next_buffer() in input-file.[ch] to also return the
461   size of the buffer it will give.  Then changed input_scrub_next_buffer() in
462   input-scrub.c to use this to know when it didn't need to reallocate the
463   buffer to fix it from needlessly running out of memory.  Radar bug #6720994.
464 - Changed md_number_to_imm() in arm.c to have a case for 8 so .quad with a non-
465   relocatable expression would work.  Radar bug #6731807.
467 Changes for the 5.27 release (the cctools-751 release):
468 - Fixed a problem with the arm assembler not accepting the sdiv instruction with
469   armv7. Radar bug #6697528.
470 - Fixed an initialization problem in fix_new_internal() in fixes.c that was not
471   initializing the fx_sectdiff_divide_by_two field.  Radar bug #5930362.
473 Changes for the 5.26 release (the cctools-747 release):
474 - Changed the assembler to put out a line table if no .loc directives are
475   used but a .file directive to be used.  This was causing a bad dwarf for data
476   only files that used .file and had no .loc directives.  The fix is in
477   dwarf2_finish() in dwarf2dbg.c to add to the test to see we have seen any
478   line number segs or .file was used before calling out_debug_line().  Radar
479   bug #6593344.
481 Changes for the 5.26 release (the cctools-746 release):
482 - Added the support for the .sleb128 and .uleb128 directives.  Radar bug
483   #4545225.
484   - Added rs_leb128 to the relax_stateT enum in relax.h .
485   - Added the fields has_rs_leb128s and layout_pass to the frchain struct in
486     sections.h .
487   - Added entry for sleb128 and uleb128 to pseudo_table[] in read.c .
488   - Added s_leb128(), sizeof_uleb128, emit_leb128_expr() to read.c .
489     Where emit_leb128_expr() is heavily hacked from the original due to
490     differences in expressions.  In emit_leb128_expr() after the call to
491     frag_var() for a rs_leb128 frchain_now->has_rs_leb128s is set to TRUE to
492     mark the section as containing an rs_leb128 frag.
493   - Added a case label for rs_leb128 in the first loop in relax_section()
494     in layout.c with a line of code:
495         address += fragP->fr_offset = 1;
496   - Also added a case label for rs_leb128 in the second loop in relax_section()
497     in layout.c to get the value of the symbol's expression and call
498     sizeof_leb128() to get the current size, adjust the growth and save the new
499     size in the fr_offset field of the frag.
500   - Added code in layout_addresses() in layout.c to make three layout passes
501     over the frags.  Doing the debug sections last, ones with containing
502     rs_leb128 frags before that and all other sections first.
503   - Added a loop in the layout pass if relax_section() changes things.  To do
504     that the new field last_fr_address to the frag struct in frags.h, then
505     changed relax_section() in layout.c to return non-zero if the things change
506     by setting and testing the last_fr_address feild in each of the frags.
507   - Added a case label for rs_leb128 in layout_addresses() in layout.c and
508     code to get the value of the symbol's expression, then call output_leb128()
509     to place that value in the frag and finally convert the frag to an rs_fill
510     of the size of the bytes put in the frag.
512 Changes for the 5.26 release (the cctools-745 release):
513 - Changed the assembler to not put out a line table if no .loc directives are
514   used.  This was causing a second line table in the output with older compilers
515   causing bad dSYM files to be created.  The fix is in dwarf2_finish() in 
516   dwarf2dbg.c to test to see we have seen any line number segs before calling
517   out_debug_line().  Radar bug #6589056.
519 Changes for the 5.26 release (the cctools-744 release):
520 - Fixed a problem with the code to support .file/.loc which was incorrectly
521   putting out a Compile Unit into the debug_info section when it shouldn't.
522   The code in dwarf2_finish() in dwarf2dbg.c was not ported correctly for
523   checking if the debug_info section was empty.  It was testing the section
524   size for zero but that is not valid at that point in the code and needed
525   to look for fragments in the section.  So a version of the routine
526   seg_not_empty_p() was ported and added to sections.[ch] .  Radar bug #6573528.
528 Changes for the 5.26 release (the cctools-741 release):
529 - Fixed the encoding of the armv7 thumb2 instructions for where it places Rd in
530   qadd, qdadd, qsub and qdsub.  Added the do_t_rd_rm_rn() routine and changed
531   the opcode entries for these instructions to use them.  Radar bug #6522202.
533 Changes for the 5.26 release (the cctools-740 release):
534 - Removed the last abort() call in the reloc() routine in i386.c so user errors
535   do not appear like assembler crashes.  Radar bug #6516397.
537 Changes for the 5.26 release (the cctools-739 release):
538 - Changed the arm assembler to use 0x46c0 as the thumb1 nop pad for sections
539   with pure instructions.  The change was in s_align() in read.c.  Radar bug
540   #6517544.
542 Changes for the 5.26 release (the cctools-738 release):
543 - Removed the code and files for the old ProjectBuilder interface including the
544   use of mig(1) in the Makefile.  The files make.defs make_defs.h were removed
545   and the code in as.c and messages.[ch] with the OLD_PROJECTBUILDER_INTERFACE
546   #ifdef was removed.  Radar bug #6457206.
547 - Changed the arm assembler to put out a relocation entry for 32-bit thumb
548   branches using the new ARM_THUMB_32BIT_BRANCH relocation type.  Radar bug
549   #6511482.
550   - Changed arm.c to assign the enum type BFD_RELOC_THUMB_PCREL_BRANCH20 to
551     the new ARM_THUMB_32BIT_BRANCH relocation type's value.
552   - Changed nrelocs_for_fix() and fix_to_relocation_entries() in write_object.c
553     so there is an #ifdef ARM and tests for the new ARM_THUMB_32BIT_BRANCH
554     relocation type when archflag_cpusubtype == CPU_SUBTYPE_ARM_V7.  To count 1
555     for the fixes in nrelocs_for_fix() and to put out a relocation entry in
556     fix_to_relocation_entries() for the type ARM_THUMB_32BIT_BRANCH.  The
557     relocation entry put out is a local relocation entry that is pcrel, length
558     of long and an symbolnum of R_ABS (0).  Also in fix_to_relocation_entries()
559     it sets fr_type to ARM_THUMB_32BIT_BRANCH so that
560     BFD_RELOC_THUMB_PCREL_BRANCH20 versions with no symbol gets set correctly.
562 Changes for the 5.26 release (the cctools-737 release):
563 - Changed the logic in fixup_section() in layout.c to correctly not add the
564   value of the symbol into the item to be relocated if it is an external
565   coalesced symbol or weak symbol.  Radar bug #6505278.
566 - Changed frag_grow() in frags.c to not reduce the frags.chunk_size if 2 times
567   the number of bytes needed is less than that.  Radar bug #6490903.
568 - Changed the arm assembler to pad sections with pure instructions with nop's
569   other than zero bytes.  Radar bug #6492867.
570   - Changed arm.c and made the variable thumb_mode global and not static.
571   - Changed s_align() and added #ifdef ARM code to use specific nop values.
573 Changes for the 5.26 release (the cctools-736 release):
574 - Fixed misspelling of "can not" to "cannot" in 4 error messages in i386.c .
575   Radar bug #6447059.
576 - Fixed bugs in dwarf support:
577   - Changed layout_addresses() in layout.c to make two loops for calling
578     relax_section().  The first for non-debug sections so the sizes of their
579     sections are set before the second loop of the debug sections which might
580     have line number sections.  Radar bug #6460301.
581   - To get the old .file and dwarf .file to both work the trick is that
582     dwarf2_directive_file() parse the old .file directive stuff and pass
583     it to s_app_file() to make this work.
584      - This requires that dwarf2_directive_file is in md_pseudo_table[].
585      - Changed s_file() in read.[ch] to s_app_file().
586      - Changed the entry in the pseudo_table[] table from "file" to "appfile"
587        in read.c
588   - Changed process_entries() to return a non-zero value if it output something.
589   - Changed out_debug_line() to check the return value of process_entries() and
590     if nothing was outputted then output the a DW_LNE_set_address sequence to
591     set the address to zero and the DW_LNE_end_sequence.
592   - Changed dwarf2_finish() to also test files_in_use == 0 as part of its check
593     that there is no line information and no non-empty .debug_info section. Then
594     also added a check of all_segs == NULL before the check of
595     all_segs->next == NULL, and added this same set of checks before calling
596     out_debug_*() routines at the end.  This is need so the file table in the
597     line section is put out for something that has only data and no line
598     numbers.
599   - Changed fixup_section() in layout.c for x86_64 in debug sections to actually
600     set the value of the expression.
601   - Changed section_new() in sections.c to not set now_seg for section types
602     of S_ZEROFILL.
603   - Added the routine add_last_frags_to_sections() to layout.[ch] so that the
604     hacks in get_frag_fix() will work.  As get_frag_fix() will return 0 as the
605     size of the last frag in a section.
606   - Changed is_assembly_time_constant_subtraction_expression() in layout.c
607     to treat expression with symbols from a debug section with FAKE_LABEL_NAMEs
608     to be constant.
609   - Changed fixup_section() in layout.c when it has a section difference
610     relocatable subtraction where a symbol is at the end of a section and
611     the section it is relocating is a debug section as an assembly time constant
612     section if both symbols have FAKE_LABEL_NAMEs.
613   - Changed section_set() in sections.c to simply call section_new() to fix
614     the problems that it was not correctly setting frag_now and dropping the
615     the fragments from the sections frag chain.
616   - Fixed using basename() back to using lbasename() and added an lbasename()
617     routine just before get_filenum() which returns a pointer into the path
618     as expected by get_filenum().
619   - Fixed section_symbol() in symbols.c that was incorrectly testing
620     frcP->section_symbol != NULL when it should have been == NULL.
621   - Fixed the call to frag_align() in out_debug_aranges() in to pass the
622     fill prameters correctly so it does not crash.
623   - In read.c changed these routines:
624         sizeof_sleb128()
625         sizeof_uleb128()
626     to be two routines:
627         sizeof_sleb128_32() and sizeof_sleb128_64()
628         sizeof_uleb128_32() and sizeof_uleb128_64()
629     which has parameters of proper 32 and 64 bit signed types so when values of 
630     different types get passed they are correctly converted.  Without this it
631     will cause hangs as a shift of a negative value will be an arithmetic
632     shift and will never become zero.
633     - And added new sizeof_leb128() and sizeof_uleb128() routines that are
634       #ifdef'ed ARCH64 to call the correct sized and typed new routines.
635   - Changed relax_inc_line_addr() to not use make_expr_symbol() which is
636     ifdef'ed to abort, and changed it to use symbol_temp_new() and create a
637     SECT_DIFF expression in that symbol.
638   - Changed dwarf2dbg_estimate_size_before_relax() to match what
639     relax_inc_line_addr() creates and evaluate the symbol's expression before
640     the symbol values are set using their frag values.
641   - Changed dwarf2dbg_convert_frag() to match what relax_inc_line_addr() creates
642     and evaluate the symbol's expression after the symbol values are set.
643 - Hooked up the dwarf support for .loc and .file in the i386, ppc and arm
644   assemblers.  Radar bug #4298593.
645   - Removed the #ifndef NeXT_MOD in the md_pseudo_table[] in i386.c around the
646     .file and .loc directives that use dwarf2_directive_file() and
647     dwarf2_directive_loc() respectively.
648   - Removed the #ifdef OBJ_ELF in the md_pseudo_table[] in arm.c around the
649     .file, .loc and .loc_mark_labels directives that use dwarf2_directive_file()
650     dwarf2_directive_loc() and dwarf2_directive_loc_mark_labels() respectfully.
651   - Removed the #ifndef NeXT_MOD in output_insn() in i386.c around the call to
652     dwarf2_emit_insn() at the beginning of the routine.
653   - Removed the #ifdef OBJ_ELF in output_inst() in arm.c around the call to
654     dwarf2_emit_insn() at the end of the routine.
655   - Removed the #ifdef OBJ_ELF in output_relax_insn() in arm.c around the call
656     to dwarf2_emit_insn() at the beginning of the routine.
657   - Removed the #ifdef OBJ_ELF in arm_frob_label() in arm.c at the end of the
658     routine.
659   - Added a call to dwarf2_emit_insn() in md_assemble() in ppc.c after the
660     call to md_number_to_chars().
661   - Added a call to dwarf2_finish() in main() in as.c after the call to
662     perform_an_assembly_pass().
663   - Added a case label for rs_dwarf2dbg in layout_addresses() in layout.c 
664     with a line of code:
665         dwarf2dbg_convert_frag(fragP);
666   - Added a case label for rs_dwarf2dbg in the first loop in relax_section()
667     in layout.c with a line of code:
668         address += dwarf2dbg_estimate_size_before_relax(fragP);
669   - Added a case label for rs_dwarf2dbg in the second loop in relax_section()
670     in layout.c with a line of code:
671         growth = dwarf2dbg_relax_frag(fragP);
673 Changes for the 5.26 release (the cctools-733 release):
674 - Changed s_weak_definition() in read.c, colon() in symbols.c and
675   layout_symbols() in write_object.c to not check for the symbol defined as
676   not being in a coalesced section.  Then changed fix_to_relocation_entries()
677   in write_object.c to produce an external relocation entry if is is an external
678   coalesced symbol or weak symbol. And changed fixup_section() in layout.c to
679   not add the value of the symbol into the item to be relocated if it is an
680   external coalesced symbol or weak symbol.  Radar bug #6422713.
682 Changes for the 5.26 release (the cctools-731 release):
683 - Fixed s_thumb_set() in arm.c to set the N_ARM_THUMB_DEF bit in the sy_desc
684   field of the symbol.  Radar bug #6366869
686 Changes for the 5.26 release (the cctools-729 release):
687 - Put back in the change below and removed the #ifdef CHANGE_FOR_6233320 in
688   driver.c .  Radar bug #6233320.
690 Changes for the 5.26 release (the cctools-728 release):
691 - Changed arm_force_relocation() in arm.c so the the first if() conditional
692   includes the check for the relocation type BFD_RELOC_THUMB_PCREL_BRANCH25 to
693   cause it to generate a relocation entry for thumb2 b.w version of the branch.
694   Radar bug #6297258.
695 - Changed md_apply_fix() in arm.c in the BFD_RELOC_ARM_SWI case if conditonal
696   from this:
697         if (fixP->tc_fix_data != 0)
698   to:
699         if (*((int*)fixP->tc_fix_data) != 0)
700   Radar bug #6337904.
701 - Backed out the change below with an #ifdef CHANGE_FOR_6233320 in driver.c
702   for now.  Radar bug #6233320.
704 Changes for the 5.26 release (the cctools-727 release):
705 - Put back in the change below and removed the #ifdef CHANGE_FOR_6233320 in
706   driver.c .  Radar bug #6233320.
708 Changes for the 5.26 release (the cctools-724 release):
709 - Backed out the change below with an #ifdef CHANGE_FOR_6233320 in driver.c
710   for now.  Radar bug #6233320.
712 Changes for the 5.26 release (the cctools-723 release):
713 - Changed the assember driver, /usr/bin/as , when running on an Intel x86_64
714   host to default to -arch x86_64 instead of -arch i386.  The change was in
715   driver.c in main() after it finds no arch_name set and calls
716   get_arch_from_host().  A test for cputype == CPU_TYPE_I386 is made and if
717   true the arch_flag gets set to the family flag for CPU_TYPE_X86_64.  Radar
718   bug #6233320.
719 - radr://4545225 assembler should implement all dwarf-related GAS pseudo-ops
720   This is NOT yet hooked up as of cctools-723, but the code changes are put in
721   to top of tree to since they build and do not effect the operation of the
722   assembler's existing functionality.
723   - Moved now_seg definition from layout.c to sections.c and added the
724     definition of now_subseg to sections.c.  Added their declrations to
725     sections.h .
726   - Changed section_new() sections.c to always set now_seg as the value from
727     the frch_nsect field in the struct frchain for the current section.
728     now_subseg is always left with a value of zero.
729     - This is done so now_seg can be used dwarf2dbg.c for the seg field
730       of the struct line_seg. And letting now_subseg remain zero so there are
731       just one line_subseg per line_seg.
732   - Added the new routines get_section_by_nsect(), get_section_by_name() and
733     section_set() to sections.[ch] .
734   - Added dwarf2dbg.c from GAS and ported it:
735     - The routine dwarf2_finish() got a bit of a rewrite to deal with Mach-O
736       objects.  And now uses section_new() and get_section_by_name() to see if
737       it exists to replace the bfd_get_section_by_name() test.
738     - Changed the three uses of seg_info() to get_section_by_nsect() and
739       modified the code to use the returned struct frchain pointer.
740     - The routines to emit the dwarf sections: out_debug_line(),
741       out_debug_ranges(), out_debug_aranges(), out_debug_abbrev(),
742       out_debug_info() were changes to instead take segT parameters to take
743       struct frchain * parameters and there names changed to XXX_section from
744       XXX_seg.
745     - Changed subseg_set() to a new routine section_set() that was added to
746       change sections.
747     - Changed the call to resolve_symbol_value() in both
748       dwarf2dbg_estimate_size_before_relax() and dwarf2dbg_convert_frag()
749       to use the frag's values to calculate this.
750   - The use of O_subtract with expressionS and use of the X_op_symbol field for
751     the symbol value to subtract were change to use SEG_DIFFSECT and
752     X_subtract_symbol instead.
753   - Added rs_dwarf2dbg to relax_stateT enum in relax.h .
754   - Added a definition and declration of debug_type and enum debug_info_type
755     to as.[ch] and changed main() to set set debug_type to DEBUG_DWARF2 when
756     the argument --gdwarf2 is specified.
757   - Added an emit_expr() routine to dwarf2dbg.c based on the functionality of
758     the one in GAS's read.c but just for the ported uses in dwarf2dbg.c .
759   - Added to symbols.[ch] the routines: symbol_temp_new(),symbol_temp_new_now(),
760     symbol_temp_make() and symbol_set_value_now() needed in dwarf2dbg.c .
761   - Added a section_symbol field to the frchain struct in sections.h .
762   - Added to sections.[ch] section_symbol() to create and set a symbol at the
763     start of the section.
764 - Changed all the routines used in the poc_handler field of a pseudo_typeS to
765   change its parameter from int to uintptr_t to get rid of warnings.  See
766   Radar bug #6219587 below.
768 Changes for the 5.26 release (the cctools-722 release):
769 - Changed s_fill() in read.c to allow .fill with a size of 8.  Radar bug
770   #5783217.
772 Changes for the 5.26 release (the cctools-718 release):
773 - Fixed a bug in read.h which had an incorrect prameter type for the poc_handler
774   function pointer field of the pseudo_typeS typedef. The poc_val parameter was
775   an int type but is used to hold pointers so it needs to be a uintptr_t type.
776   Radar bug #6219587.
778 Changes for the 5.26 release (the cctools-716 release):
779 - Fixed a bug in s_zerofill() in read.c caused by the change in Radar bug
780   #6159238 where it needed to change to handle the case of an extra space after
781   the segment name before a comma in the parsing.  Radar bug #6195283.
782 - Fixed a bug in parse_neon_el_struct_list() in arm.c where it was loosing
783   the information about the index used for things like "d0[]" and making it
784   look like "d0".  In the loop to parse the argument list, in the is case
785   "{d0[]-d1[0]}" it called parse_typed_reg_or_scalar() which was passed 
786   pointer to a neon_typed_alias struct, atype, to fill in.  Then when it gets to
787   parsing the "-" it does not look at the atype.defined like the code after
788   the parsing of "-".  So that same bit of code which looks like:
789           if ((atype.defined & NTA_HASINDEX) != 0)
790             {
791               if (lane == -1)
792                 lane = atype.index;
793               else if (lane != atype.index)
794                 {
795                   first_error (_(type_error));
796                   return FAIL;
797                 }
798             }
799           else if (lane == -1)
800             ...
801   to match what is done after the the parsing of "-" so it does not lose the
802   information about the index of "d0[]".  What was happening for example was
803   this instruction:
804         vld1.f32 {d0[]-d1[]}, [r0]
805   was ending up as this instruction:
806         vld1.32 {d0-d1}, [r0]
807   Radar bug #6185952.
809 Changes for the 5.26 release (the cctools-715 release):
810 - Fixed the .thumb_set directive fails which was failing to parse its second
811   operand.  The fix was in s_thumb_set() to include the call to pseudo_set()
812   outside the #ifdef.  And to change pseudo_set() in read.[ch] to not be
813   static.  Radar bug #6182961.
814 - Fixed the handling of -force_cpusubtype_ALL for the arm assembler.  The code
815   near the end of md_begin() that tested for force_cpusubtype_ALL needed to
816   be changed to set the cpu_variant variable to allow everything and to set
817   archflag_cpusubtype to CPU_SUBTYPE_ARM_ALL as that is what will get set into
818   the resulting object file (not md_cpusubtype).  Radar bug #6150777.
819 - Fixed a problem with the change to Radar bug #4141844 where it was trying to
820   allow a prefix on the same line as the instruction without a separating shash,
821   '/', character.  The original change added a new "substate" variable to app.c.
822   But there were cases that it did not get set back it its initial value of zero
823   at the start of each line (state 0).  So to make this a bit more robust all
824   places where the state gets set back to zero the substate is also set to zero.
825   Radar bug #6159238.
827 Changes for the 5.26 release (the cctools-714 release):
828 - Added the arm instructions vmrs and vmsr to be the same as fmrx and fmxr in
829   arm.c .  Radar bug #6152739.
830 - Fixed a bug where the field sy_has_been_resolved in the symbol struct was
831   being used uninitialized.  The fix is in symbol_new() in symbols.c .
832   Radar bug #6163385.
834 Changes for the 5.26 release (the cctools-713 release):
835 - Changed an error message in md_apply_fix() for the BFD_RELOC_ARM_OFFSET_IMM8
836   case to use as_bad_where() not as_bad() so a file and line number gets 
837   printed.  Radar bug #5890008.
839 Changes for the 5.26 release (the cctools-711 release):
840 - Fixed a problem with getting the correct value of a difference of two symbols
841   that it was divided by 2 for 32-bit targets.  As the resulting value was
842   being calculated into a 64-bit signed type, signed_expr_t, with a += of an
843   expression of 2 32-bit unsigned types in fixup_section() in layout.c .
844   Radar bug #6096697.
846 Changes for the 5.26 release (the cctools-709 release):
847 - Fixed a problem with .quad expression values getting assembled with constants
848   larger than 32-bits being added to symbols.  Two places were using 32-bit
849   types, the offset field in the fix struct in fixes.h and the local variable
850   value in fixup_section() in layout.c .  Radar bug #5955044.
851 - Removed the call to abort() in reloc() in i386.c that should not be there
852   after a call to as_bad() to generate an error message.  Radar bug #6029941.
854 Changes for the 5.26 release (the cctools-706 release):
855 - Fixed a problem with the ported to run on 64-bit hosts, where changes to
856   atof-generic.c had 3 places change to uint32_t which should have been int32_t.
858 Changes for the 5.26 release (the cctools-705 release):
859 - Ported to run on 64-bit hosts.  Radar bug #6022298
861 Changes for the 5.26 release (the cctools-703 release):
862 - Added the .inlineasmstart and .inlineasmend directives to check that only
863   numeric lables are defined between them.  And if not generate an error message
864   from the arguments of the .inlineasmstart directive.  Radar bug #5896375.
865   - In read.c added the new routine s_inlineasm() and added it to the
866     pseudo_table[].  For the .inlineasmstart directive, s_inlineasm() is passed
867     a value of 1 and parses out the optional file_name, line_number and
868     column_number arguments.  When the .inlineasmstart directive is see it sets
869     the new inlineasm_checks variable and fills in the new variables
870     inlineasm_file_name, inlineasm_line_number and inlineasm_column_number with
871     the arguments.  And when the .inlineasmend directive is seen it clears
872     the new variables.  The new variables are defined in read.[ch].
873   - The routine colon(), in symbols.[ch], was changed to take a new parameter
874     local_colon that is set when called by local_colon.  And a test was added
875     if inlineasm_checks is set and local_colon() is not to cause an error.
876     If inlineasm_file_name is set then the new routine, in messages.[ch],
877     as_warn_where_with_column() is called else as_bad() is called to generate
878     the error message.
879   - The two plaves in read.c that call colon() had a 0 second argument added and
880     the call to colon() from local_colon() in symbols.c had a 1 second argument
881     added.
882 - Improved the x86_64 assembly time by caching the value of the linked list
883   search of x86_64_resolve_local_symbol() in i386.c.  Added two fields,
884   sy_has_been_resolved and sy_prev_resolved, to the symbol structure in
885   struc-symbol.h.  Radar bug #5902686.
887 Changes for the 5.26 release (the cctools-701 release):
888 - Fixed a problem in expr() in expr.c when it is combining a symbol that is a
889   set to a substract expression, SEG_DIFFSECT, with a constant.  In that case
890   it gets incorrectly combined to a SEG_ABSOLUTE instead of retaining the
891   SEG_DIFFSECT expression type.  Also Changed the x86_64 assembler to allow a
892   32-bit displacement operand as a symbol set to the subtraction of two
893   instructions.  Code was added in output_disp() in i386.c to test for this
894   specific case and create the needed fix for it.  Radar bug #5683920.
895 - Fixed a problem in pseudo_set() in read.c when it is setting a symbol to
896   another symbol that was already a section difference expression.  In that case
897   expression() returns an expression of just one symbol and a type of
898   SEG_DIFFSECT.  Code at the case for SEG_DIFFSECT needed to be added to handle
899   this case and copy the expression of the symbol in to the new symbol being
900   set.  Radar bug #5684077.
901 - Changed the x86_64 assembler to allow a 32-bit displacement operand as a
902   subtraction of two instructions.  Code was added in output_disp() in i386.c
903   to test for this specific case and create the needed relocation entries for
904   it.  Radar bug #5622258.
906 Changes for the 5.25 release (the cctools-697 release):
908 Changes for the 5.25 release (the cctools-689 release):
909 - Fixed a place that needed force_cpusubtype_ALL tested in md_assemble() in
910   arm.c . Radar bug #5817558.
911 - Added support for the special assembly time constant expression of the diff-
912   erence of two symbols defined in the same section then divided by exactly 2.
913   Radar bug #5819903.
914   - Added the field X_sectdiff_divide_by_two to the expressionS typedef in
915     expr.h .
916   - In expr() in expr.c added code to look for an expression with a SEG_DIFFSECT
917     and a left side with an SEG_ABSOLUTE X_add_number == 2 and a O_divide right
918     side and if so set the new X_sectdiff_divide_by_two field.
919   - Added the field fx_sectdiff_divide_by_two to the struct fix.
920   - Changed cons() in read.c to save the fix for a SEG_DIFFSECT and to copy the
921     the new X_sectdiff_divide_by_two field from the expression to the new
922     fx_sectdiff_divide_by_two field in the fix.
923   - In fixup_section() in layout.c added code to test the news
924     fx_sectdiff_divide_by_two field and if so divide the value by 2.  And check
925     to see that the expression is an assembly time constant.
927 Changes for the 5.25 release (the cctools-686 release):
928 - Changed arm_relax_frag() in arm.c to take a section number for the section it
929   is operating on.  That is in turn now passed to relax_branch() in arm.c and
930   in there if the symbol that is being branched to is not for that section it
931   returns 4 for the size of the instruction.
932 - In md_apply_fix() for BFD_RELOC_THUMB_PCREL_BRANCH25 the fx_r_type type is
933   set to BFD_RELOC_THUMB_PCREL_BRANCH23 so it can be output as a known
934   relocation type (ARM_THUMB_RELOC_BR22).
936 Changes for the 5.25 release (the cctools-685 release):
937 - Changed relaxed_symbol_addr() in arm.c to also add in
938   fragp->fr_symbol->sy_nlist.n_value when calculating the addr.  Without this
939   it can some times get "branch out of range" errors since it appears this
940   to have the address of the symbol from the start of the fragment.
941 - Changed the check in md_assemble() in arm.c for "width suffixes are invalid
942   in ARM mode" to allow them with unified syntax.
943 - Changed the arm APPLE LOCAL trap instruction opcode entry in arm.c from this:
944         CE(trap,        7ffdefe,  0, (), noargs),
945   to this:
946         TUE(trap,      7ffdefe, defe, 0, (), noargs, noargs),
947   which allows it to work with thumb mode.
948 - Changed relax_section() in layout.c in two plaves #ifdef'ed ARM.  In the first
949   look it now sets frag's relax_marker field to zero.  In the "Do relax" loop
950   it flips the relax_marker field with an "^= 1".  This is to fix a problem in
951   relaxed_symbol_addr() so it knows to add the stretch amount to the addr it
952   is returning.
953 - Added a second call to as_file_and_line() in frag_var() in frags.c which was
954   #ifdef ARM at the top of the file to set the fr_file and fr_line fields of
955   the current frag before creating a new frag.  This is needed because as the
956   line number of the last instruction which is the "relaxable" instruction is
957   the line number that is needed (not the first one).  So when relax_section()
958   calls arm_relax_frag() which calls md_convert_frag() it will call
959   fix_new_exp() and fix_new_internal() so a new fix may be created after all
960   code is read for the last instruction in the frag.  So md_convert_frag()
961   copies the fr_file and fr_line fields of the frag into the fx_file and fx_line
962   fields of the fix so line numbers can be reported.
964 Changes for the 5.25 release (the cctools-684 release):
965 - Changed relaxed_symbol_addr() in arm.c to not use the hack ported
966   S_GET_VALUE() as at that point the symbol does not have the value set.  The
967   code was #ifdef NOTYET to use fragp->fr_symbol->sy_frag->fr_address to get
968   the address from the symbol's frag.  The hack ported S_GET_VALUE() routine
969   was removed from symbols.[ch].
970 - Changed relax_addsub() where it had a memcpy() hack in place of the
971   #ifdef NOTYET out call to bfd_get_16() to a call to a call to 
972   md_chars_to_number() to retrive the old thumb opcode into op that
973   output_relax_insn() put into the frag.
974 - Added a call to as_file_and_line() in frag_var() in frags.c which was #ifdef
975   ARM to set the fr_file and fr_line fields of the frag.  This is needed because
976   when relax_section() calls arm_relax_frag() which calls md_convert_frag()
977   it will call fix_new_exp() and fix_new_internal() so a new fix will be created
978   after all code is read.  So md_convert_frag() copies the fr_file and fr_line
979   fields of the frag into the fx_file and fx_line fields of the fix so line
980   numbers can be reported.
982 Changes for the 5.25 release (the cctools-683 release):
983 - Fixed a bug in fix_new_arm() in arm.c after the call to fix_new_exp() before
984   the default: case label as missing a break; statement.
985 - Fixed a bug in relax_section() in layout.c for the "Do relax" loop where
986   the call to arm_relax_frag() should have set the variable growth not
987   incremented.  The "+=" was change to just an assignment, "=".
989 Changes for the 5.25 release (the cctools-682 release):
990 - Changed relax_section() in layout.c for the "Do relax" loop and #ifdef'ed
991   ARM the rs_machine_dependent case to call arm_relax_frag().
992 - Changed md_convert_frag() where it had a memcpy() hack in place of the
993   #ifdef NOTYET out call to bfd_get_16() to a call to a call to 
994   md_chars_to_number() to retrive the old thumb opcode into old_op that
995   output_relax_insn() put into the frag.
997 Changes for the 5.25 release (the cctools-681 release):
998 - Removed all __OPEN_SOURCE__ references in Makefile, notes, as.c, layout.c, 
999   messages.c, symbols.c, write_object.c, frags.h and symbols.h .
1000 - Fixed a bug in the table entries for the pextrq and pinsrq instructions as
1001   they should have had Size64 to force the REX.W byte.
1002 - Fixed a bug in the table entries for the i386 SSE4.1 instruction insertps
1003   where it had the second parameter as a general register not a xmm register.
1004   The change was in i386-opcode.h to change Reg32 and Reg64 to RegXMM.
1005   Radar bug #5650346.
1006 - Changed output_relax_insn() in arm.c to just used the undefined symbol instead
1007   of calling make_expr_symbol() if the expression is a just an undefined symbol
1008   and no subtract symbol.
1010 Changes for the 5.25 release (the cctools-680 release):