6a9191eb7a10498013d855fa1d4ca08ec8f03000
[deliverable/binutils-gdb.git] / gas / ChangeLog
1 2012-04-12 Roland McGrath <mcgrathr@google.com>
2
3 * configure.tgt (arm-*-nacl*): Match it.
4 * config/te-nacl.h (FPU_DEFAULT, EABI_DEFAULT): Define.
5 (LOCAL_LABELS_DOLLAR): Define.
6 * config/tc-arm.c (elf32_arm_target_format) [TE_NACL]:
7 Use nacl format variants.
8
9 2012-04-12 Jie Zhang <jie@codesourcery.com>
10 Meador Inge <meadori@codesourcery.com>
11
12 * config/tc-arm.c (only_one_reg_in_list): New function.
13 (encode_ldmstm): Ditto.
14 (do_ldmstm): Use a different encoding when pushing or poping
15 a single register.
16 (A_COND_MASK): New macro.
17 (A_PUSH_POP_OP_MASK): Ditto.
18 (A1_OPCODE_PUSH): Ditto.
19 (A2_OPCODE_PUSH): Ditto.
20 (A2_OPCODE_POP): Ditto.
21
22 2012-04-06 Maciej W. Rozycki <macro@linux-mips.org>
23
24 * doc/c-mips.texi (MIPS Opts): Correct -no-mfix-24k to
25 -mno-fix-24k.
26
27 2012-04-06 Roland McGrath <mcgrathr@google.com>
28
29 * configure.in (AC_CHECK_HEADERS): Add locale.h.
30 * config.in: Regenerate.
31 * configure: Regenerate.
32
33 2012-04-05 Nick Clifton <nickc@redhat.com>
34
35 * configure.in (AC_CHECK_FUNCS): Add setlocale.
36 (AM_LC_MESSAGES): Add.
37 * aclocal.m4: Regenerate.
38 * config.in: Regenerate.
39 * configure: Regenerate.
40
41 2012-04-03 DJ Delorie <dj@redhat.com>
42
43 * config/rx-parse.y: Make the .L optional for ADC and SBB.
44
45 2012-04-02 DJ Delorie <dj@redhat.com>
46
47 * config/rx-parse.y: IMM->IMM_, take an extra parameter for the
48 transfer size.
49 (IMM): New, call IMM_ with the default 32.
50 (IMMW,IMMB): Likewise, for 16 and 8.
51 (NIMM, MBIMM): Add size parameter.
52 (immediate): Likewise. Allow 32768..65535 for 16-bit transfers.
53 (MOV.W): Use IMMW instead of IMM.
54
55 * config/rx-parse.y (ADC,SBB): ADC and SBB only allow .L.
56 (op_dp20_rm_l): New.
57 (op_dp20_rim_l): New.
58
59 * config/rx-parse.y (op_dp20_rms): Rename to op_dp20_rr, don't allow mem.
60 (ABS, NEG, NOT): These only take REG or REG,REG (rr, not rms).
61
62 2012-03-29 Terry Guo <terry.guo@arm.com>
63
64 * config/tc-arm.c (arm_cpus): Add cortex-m0plus.
65 * doc/c-arm.texi (ARM Options): Document -mcpu=cortex-m0plus.
66
67 2012-03-23 Maxim Kuvyrkov <maxim@codesourcery.com>
68
69 * config/tc-mips.c (mips_cpu_info_table): Add entry for Broadcom XLP.
70 * doc/c-mips.texi: Mention XLP.
71
72 2012-03-21 Thomas Schwinge <thomas@codesourcery.com>
73
74 [SH] Support the .uaquad and .8byte directives also for non-sh64
75 configurations.
76
77 * config/tc-sh.c (sh_cons_fix_new, md_apply_fix) [!HAVE_SH64]: Handle
78 BFD_RELOC_64.
79 * doc/c-sh64.texi (SH64 Machine Directives): Move .uaquad
80 description...
81 * doc/c-sh.texi (SH Machine Directives): ... here.
82
83 2012-03-20 Nick Clifton <nickc@redhat.com>
84
85 * config/tc-arm.c (do_vmrs): Accept priviledged mode VFP system
86 registers.
87 (do_vmsr): Likewise.
88 (arm_opcode_insns): Do not default to using the FPSCR register in
89 the VMRS and VMSR registers.
90
91 2012-03-16 Roland McGrath <mcgrathr@google.com>
92
93 * config/tc-i386.h [TE_NACL] (ELF_TARGET_FORMAT32, ELF_TARGET_FORMAT64):
94 Define for this case.
95 * configure.tgt (i386-*-nacl*): If ${cpu} is x86_64*, default to x32.
96
97 2012-03-16 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
98
99 * config/tc-arm.c (aeabi_set_public_attributes): Correct
100 handling of Tag_DIV_use.
101
102 2012-03-15 Thomas Schwinge <thomas@codesourcery.com>
103
104 * doc/as.texinfo (Bundle directives): Fix typo.
105
106 2012-03-14 Ryan Mansfield <rmansfield@qnx.com>
107
108 * doc/as.texinfo (Bundle directives): Replace @defn with @dfn.
109
110 2012-03-13 Roland McGrath <mcgrathr@google.com>
111
112 * config/tc-arm.c (arm_frag_max_var): New function.
113 * config/tc-arm.h: Declare it.
114 (md_frag_max_var): New macro.
115
116 * config/tc-i386.c (i386_frag_max_var): New function.
117 * config/tc-i386.h: Declare it.
118 (md_frag_max_var): New macro.
119
120 * doc/as.texinfo (Bundle directives): New node.
121 (Pseudo Ops): Add it to the menu.
122 * NEWS: Mention new feature.
123 * read.c [md_frag_max_var] (HANDLE_BUNDLE): New macro.
124 [HANDLE_BUNDLE] (bundle_align_p2): New variable.
125 [HANDLE_BUNDLE] (bundle_lock_frchain, bundle_lock_frag): New variables.
126 [HANDLE_BUNDLE] (start_bundle, pending_bundle_size, finish_bundle):
127 New functions.
128 (assemble_one): New function if [HANDLE_BUNDLE], #define directly
129 to md_assembly if not.
130 (read_a_source_file): Call assemble_one in place of md_assemble.
131 (read_a_source_file) [HANDLE_BUNDLE]: Check for unterminated
132 .bundle_lock at end of processing.
133 [HANDLE_BUNDLE] (s_bundle_align_mode, s_bundle_lock, s_bundle_unlock):
134 New functions.
135 [HANDLE_BUNDLE] (potable): Add their entries.
136 * read.h: Declare new functions.
137
138 2012-03-10 Edmar Wienskoski <edmar@freescale.com>
139
140 * config/tc-ppc.c (md_show_usage): Document -me5500 and -me6500.
141 (ppc_handle_align): Add termination nop opcode for e500mc family.
142 * doc/as.texinfo: Document options -me5500 and -me6500.
143 * doc/c-ppc.texi: Likewise.
144
145 2012-03-07 Nick Clifton <nickc@redhat.com>
146
147 * config/tc-mn10300.c (other_registers): Add SSP and USP.
148 (md_assemble): Add support for TLS relocs.
149 (mn10300_parse_name): Likewise.
150
151 2012-02-27 Alan Modra <amodra@gmail.com>
152
153 * config/tc-crx.c (check_range): Correct uint32_t misconceptions.
154
155 2012-02-27 Alan Modra <amodra@gmail.com>
156
157 * config/tc-tic4x.c (tic4x_do_align): Remove ATTRIBUTE_UNUSED on
158 params. Properly generate NOP pattern. Comment reason for
159 subseg_text_p failure.
160
161 2012-02-27 Alan Modra <amodra@gmail.com>
162
163 * config/tc-h8300.c (constant_fits_width_p): Trim constant to 32 bits
164 and sign extend before range tests.
165 (constant_fits_size_p): Similarly.
166 (get_specific): Trim X_add_number to 32 bits.
167 (fix_operand_size): Likewise, and use unsigned test for signed
168 ranges.
169
170 2012-02-27 Alan Modra <amodra@gmail.com>
171
172 * config/tc-crx.c: Include bfd_stdint.h.
173 (getconstant): Remove irrelevant comment. Don't fail due to
174 sign-extension of int mask.
175 (check_range): Rewrite using unsigned arithmetic throughout.
176
177 2012-02-25 Walter Lee <walt@tilera.com>
178
179 * tc-tilepro.c (emit_tilepro_instruction): Check if symbol is
180 non-local before checking sy_value.
181 * tc-tilegx.c (emit_tilegx_instruction): Ditto.
182
183 2012-02-25 Walter Lee <walt@tilera.com>
184
185 * tc-tilepro.c (O_tls_le): Define operator.
186 (O_tls_le_lo16): Ditto.
187 (O_tls_le_hi16): Ditto.
188 (O_tls_le_ha16): Ditto.
189 (O_tls_gd_call): Ditto.
190 (O_tls_gd_add): Ditto.
191 (O_tls_ie_load): Ditto.
192 (md_begin): Delete old operators; handle new operators.
193 (emit_tilepro_instruction): Ditto.
194 (md_apply_fix): Ditto.
195 * tc-tilegx.c (O_hw1_got): Delete operator.
196 (O_hw2_got): Ditto.
197 (O_hw3_got): Ditto.
198 (O_hw2_last_got): Ditto.
199 (O_hw1_tls_gd): Ditto.
200 (O_hw2_tls_gd): Ditto.
201 (O_hw3_tls_gd): Ditto.
202 (O_hw2_last_tls_gd): Ditto.
203 (O_hw1_tls_ie): Ditto.
204 (O_hw2_tls_ie): Ditto.
205 (O_hw3_tls_ie): Ditto.
206 (O_hw2_last_tls_ie): Ditto.
207 (O_hw0_tls_le): Define operator.
208 (O_hw0_last_tls_le): Ditto.
209 (O_hw1_last_tls_le): Ditto.
210 (O_tls_gd_call): Ditto.
211 (O_tls_gd_add): Ditto.
212 (O_tls_ie_load): Ditto.
213 (O_tls_add): Ditto.
214 (md_begin): Delete old operators; handle new operators.
215 (emit_tilegx_instruction): Ditto.
216 (md_apply_fix): Ditto.
217 * doc/c-tilegx.texi: Delete old operators; document new operators.
218 * doc/c-tilepro.texi: Ditto.
219
220 2012-02-25 Walter Lee <walt@tilera.com>
221
222 * tc-tilepro.c (apply_special_operator): delete cases for
223 got and tls operators.
224 (md_apply_fix): Ditto.
225 * tc-tilegx.c (md_begin): Set architecture and machine.
226 (tilegx_target_format): Handle big endian.
227 (OPTION_EB): Define.
228 (OPTION_EL): Define.
229 (md_longopts): Add entries for "EB" and "EL".
230 (md_parse_option): Handle OPTION_EB and OPTION_EL.
231 (md_show_usage): Add -EB and -EL.
232 (md_number_to_chars): New.
233 (apply_special_operator): delete cases for got and tls
234 operators.
235 (md_apply_fix): Ditto.
236 * tc-tilegx.h (TARGET_BYTES_BIG_ENDIAN): Guard definition with
237 ifndef.
238 (md_number_to_chars): Delete.
239 * configure.tgt (tilegx*be): Handle.
240 * doc/as.texinfo [TILE-Gx]: Document -EB and -EL.
241 * doc/c-tilegx.texi: Ditto.
242
243 2012-02-21 H.J. Lu <hongjiu.lu@intel.com>
244
245 * config/tc-i386.c (check_hle): Use HLEPrefixNone, HLEPrefixLock,
246 HLEPrefixAny and HLEPrefixRelease.
247
248 2012-02-21 Matthew Gretton-Dann <matthew.gretton-dann@arm.com>
249
250 * gas/config/tc-arm.h (DOUBLESLASH_LINE_COMMENTS): Define.
251
252 2012-02-21 Iain Sandoe <idsandoe@googlemail.com>
253
254 * write.c (write_object_file): Add md_pre_output_hook.
255 * config/obj-macho.c (obj_mach_o_check_before_writing): New.
256 (obj_mach_o_pre_output_hook): New.
257 * config/obj-macho.h (md_pre_output_hook): Define.
258 (obj_mach_o_pre_output_hook): Declare.
259
260 2012-02-21 Tristan Gingold <gingold@adacore.com>
261
262 * config/tc-i386.h (OBJ_MACH_O): New section.
263 (TC_FORCE_RELOCATION): Use obj_mach_o_force_reloc.
264 (TC_FORCE_RELOCATION_SUB_SAME): New
265 (TC_FORCE_RELOCATION_SUB_LOCAL): New.
266 (TC_VALIDATE_FIX_SUB): New.
267 * frags.h (struct frag): OBJ_FRAG_TYPE, new field.
268 * symbols.c (colon): obj_frob_colon: New hook.
269 * write.c (write_object_file): md_pre_relax_hook, new
270 hook.
271 * config/obj-macho.c (obj_mach_o_frob_colon): New.
272 (obj_mach_o_frob_label): Record sub-section labels.
273 (obj_mach_o_frob_symbol): Rename from obj_macho_frob_symbol.
274 (obj_mach_o_set_subsections): New.
275 (obj_mach_o_pre_relax_hook): New.
276 (obj_mach_o_in_different_subsection): New.
277 (obj_mach_o_force_reloc_sub_same): New.
278 (obj_mach_o_force_reloc_sub_local): New.
279 (obj_mach_o_force_reloc): New.
280 * config/obj-macho.h (OBJ_SYMFIELD_TYPE): New.
281 (obj_frob_colon): New Define.
282 (obj_mach_o_frob_label): Renamed.
283 (obj_mach_o_frob_symbol): Renamed.
284 (OBJ_FRAG_TYPE): New.
285 (obj_mach_o_in_different_subsection, obj_mach_o_force_reloc,
286 obj_mach_o_force_reloc_sub_same,
287 obj_mach_o_force_reloc_sub_local): New declarations.
288
289 2012-02-20 Iain Sandoe <idsandoe@googlemail.com>
290
291 * config/obj-macho.c (obj_mach_o_is_frame_section): New.
292 (obj_mach_o_allow_local_subtract): New.
293 * config/obj-macho.h (md_allow_local_subtract): Define.
294 (obj_mach_o_allow_local_subtract): Declare.
295
296 2012-02-20 Iain Sandoe <idsandoe@googlemail.com>
297
298 * config/obj-macho.c (obj_mach_o_make_or_get_sect): In the absence of
299 canonical information, try to determine CODE and DEBUG section flags
300 from the mach-o section data.
301
302 2012-02-20 Nick Clifton <nickc@redhat.com>
303
304 * cgen.c (gas_cgen_parse_operand): Do not set BSF_RELC flag on
305 local symbols.
306
307 2012-02-12 Iain Sandoe <idsandoe@googlemail.com>
308
309 * config/obj-macho.c (obj_mach_o_indirect_symbol): Force promotion of
310 any local symbol used as an indirect.
311
312 2012-02-10 Iain Sandoe <idsandoe@googlemail.com>
313
314 * config/obj-macho.c (obj_mach_o_make_or_get_sect): Always fill in
315 stub size when provided. (obj_mach_o_section): Flag that stub-size
316 has been provided.
317
318 2012-02-08 H.J. Lu <hongjiu.lu@intel.com>
319
320 * config/tc-i386.c (HLE_PREFIX): New.
321 (check_hle): Likewise.
322 (_i386_insn): Add have_hle.
323 (cpu_arch): Add .hle and .rtm.
324 (md_assemble): Call check_hle if i.have_hle isn't zero.
325 (parse_insn): Set i.have_hle to 1 for HLE prefix.
326 (output_jump): Support up to 2 byte opcode.
327
328 * doc/c-i386.texi: Document hle/.hle and rtm/.rtm.
329
330 2012-02-02 Tristan Gingold <gingold@adacore.com>
331
332 * config/obj-macho.c (obj_mach_o_zerofill): Silent
333 uninitialized variable warning.
334
335 2012-02-02 Nick Clifton <nickc@redhat.com>
336
337 PR gas/13224
338 * config/obj-elf.c (obj_elf_parse_section_letters): Rename 'clone'
339 to 'is_clone' to avoid shadowing a gloabl.
340 (obj_elf_section): Likewise.
341
342 2012-01-31 Paul Brook <paul@codesourcery.com>
343
344 * doc/c-tic6x.c: Fix typo.
345
346 2012-01-26 Alexey Makhalov <makhaloff@gmail.com>
347
348 PR gas/13624
349 * app.c (app_push): Set 'add_newlines' to zero after saving.
350
351 2012-01-24 DJ Delorie <dj@redhat.com>
352
353 * config/rl78-parse.y (NOT1): Add.
354
355 2012-01-23 Roland McGrath <mcgrathr@google.com>
356
357 * configure.tgt (i386-*-nacl*): Match it.
358 * config/te-nacl.h: New file.
359 * config/tc-i386.h [TE_NACL] (ELF_TARGET_FORMAT): Define for this case.
360 * config/tc-i386.c [TE_NACL] (i386_comment_chars, PREFIX_SEPARATOR):
361 Use TE_GNU et al case for TE_NACL too.
362
363 2012-01-20 H.J. Lu <hongjiu.lu@intel.com>
364
365 * config/tc-i386.c (_i386_insn): Replace disp32_encoding with
366 disp_encoding.
367 (md_assemble): Updated.
368 (output_branch): Likewise.
369 (parse_insn): Support .d8 suffix.
370 (build_modrm_byte): Fake zero displacement for .d8 and .d32
371 suffixes.
372
373 * doc/c-i386.texi: Document .d8 suffix.
374
375 2012-01-17 Andrew Burgess <aburgess@broadcom.com>
376
377 * write.c (fix_new_internal): Don't mark used parameter as unused.
378
379 2012-01-17 Alan Modra <amodra@gmail.com>
380
381 * as.c (parse_args): Update copyright message year.
382
383 2012-01-13 H.J. Lu <hongjiu.lu@intel.com>
384
385 * config/tc-i386.c (cpu_arch): Add ".vmfunc".
386
387 * doc/c-i386.texi: Document vmfunc.
388
389 2012-01-13 Tristan Gingold <gingold@adacore.com>
390
391 * config/obj-macho.c (obj_mach_o_reorder_section_relocs): New.
392 * config/obj-macho.h (SET_SECTION_RELOCS): Define.
393 (obj_mach_o_reorder_section_relocs): Declare.
394
395 2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
396
397 * config/obj-macho.c (obj_mach_o_set_indirect_symbols): Handle
398 absolute indirect symbols.
399
400 2012-01-13 Iain Sandoe <idsandoe@googlemail.com>
401
402 * config/obj-macho.c (obj_mach_o_set_vma_data): New type.
403 (obj_mach_o_set_section_vma): New.
404 (obj_mach_o_post_relax_hook): New.
405 * config/obj-macho.h (md_post_relax_hook): Define.
406 (obj_mach_o_post_relax_hook): Declare.
407
408 2012-01-12 Iain Sandoe <idsandoe@googlemail.com>
409
410 * config/obj-macho.c (obj_mach_o_set_symbol_qualifier): Switch off
411 lazy when the symbol is private_extern.
412 (obj_mach_o_indirect_sym): New type.
413 (obj_mach_o_indirect_symbol): New.
414 (mach_o_pseudo_table): Use obj_mach_o_indirect_symbol.
415 (obj_macho_frob_label): Adjust to avoid adding bsyms for locals.
416 (obj_macho_frob_label): Likewise. Adjust external and comm
417 symbol tests.
418 (obj_mach_o_set_indirect_symbols): New.
419 (obj_mach_o_frob_file_after_relocs): New.
420 *config/obj-macho.h (obj_frob_file_after_relocs): Define.
421 (obj_mach_o_frob_file_after_relocs): Declare.
422
423 2012-01-12 Tristan Gingold <gingold@adacore.com>
424
425 PR gas/13591
426 * config/obj-coff.h (sy_obj): Rename macro to avoid a name conflict.
427
428 2012-01-10 Tristan Gingold <gingold@adacore.com>
429
430 * struc-symbol.h (struct symbol_flags): New struct, created from...
431 (struct symbol): ... this one. Add sy_flags field, remove flag fields.
432 (struct local_symbol): Replace lsy_marker field by lsy_flags.
433 Adjust comment.
434 (local_symbol_resolved_p): Adjust.
435 (local_symbol_mark_resolved): Likewise.
436 * symbols.c (LOCAL_SYMBOL_CHECK): Adjust.
437 (local_symbol_make, local_symbol_convert, colon)
438 (symbol_clone_if_forward_ref, verify_symbol_chain)
439 (resolve_symbol_value, snapshot_symbol, S_GET_VALUE)
440 (S_IS_WEAKREFR, S_IS_WEAKREFD, S_IS_VOLATILE, S_IS_FORWARD_REF)
441 (S_SET_WEAKREFR, S_CLEAR_WEAKREFR, S_SET_WEAKREFD)
442 (S_CLEAR_WEAKREFD, S_SET_VOLATILE, S_CLEAR_VOLATILE)
443 (S_SET_FORWARD_REF, symbol_same_p, symbol_mark_used)
444 (symbol_clear_used, symbol_used_p, symbol_mark_used_in_reloc)
445 (symbol_clear_used_in_reloc, symbol_used_in_reloc_p)
446 (symbol_mark_mri_common, symbol_clear_mri_common)
447 (symbol_mri_common_p, symbol_mark_written, symbol_clear_written)
448 (symbol_written_p, symbol_mark_resolved, symbol_resolved_p)
449 (symbol_equated_reloc_p, dot_symbol_init)
450 (print_symbol_value_1): Adjust.
451
452 2012-01-09 Iain Sandoe <idsandoe@googlemail.com>
453
454 * config/obj-macho.c (obj_mach_o_weak): Remove.
455 (obj_mach_o_common_parse): Set symbol qualifiers.
456 (LAZY, REFE): New macros.
457 (obj_mach_o_symbol_type): New enum.
458 (obj_mach_o_set_symbol_qualifier): New.
459 (obj_mach_o_sym_qual): New.
460 (mach_o_pseudo_table): Add symbol qualifiers, set indirect_symbol to
461 a dummy function.
462 (obj_mach_o_type_for_symbol): New.
463 (obj_macho_frob_label): New.
464 (obj_macho_frob_symbol): New.
465 * config/obj-macho.h (S_SET_ALIGN): Amend temorary var name.
466 (obj_frob_label, obj_macho_frob_label): Declare.
467 (obj_frob_symbol, obj_macho_frob_symbol): Declare.
468
469 2012-01-08 Richard Sandiford <rdsandiford@googlemail.com>
470
471 * config/tc-mips.c (s_tls_rel_directive): Call mips_clear_insn_labels.
472
473 2012-01-08 Andrew Pinski <andrew.pinski@caviumnetworks.com>
474 Richard Sandiford <rdsandiford@googlemail.com>
475
476 * config/tc-mips.c (mips_move_labels): Take the list of labels and
477 textness as parameters.
478 (mips_move_text_labels): New function.
479 (append_insn): Use it instead of mips_move_labels.
480 (mips_emit_delays, start_noreorder): Likewise.
481 (mips_align): Take the labels rather than just one label.
482 Move all labels to after the .align.
483 (s_align): Change the last argument to mips_align.
484 (s_cons): Likewise.
485 (s_float_cons): Likewise.
486 (s_gpword): Likewise.
487 (s_gpdword): Likewise.
488
489 2012-01-06 Tristan Gingold <gingold@adacore.com>
490
491 * config/tc-i386.c: Update copyright year.
492 (lex_got): Also defined for Mach-O.
493 Add a guard for non-ELF configuration.
494 (md_longopts): Also handle -64 for Mach-O.
495 (md_parse_option): Likewise.
496 (i386_target_format): Adjust for x86_64-darwin.
497
498 2012-01-04 Iain Sandoe <idsandoe@googlemail.com>
499
500 * config/obj-macho.c (obj_mach_o_segT_from_bfd_name): Tidy definition.
501 (obj_mach_o_get_section_names): New (split from obj_mach_o_section).
502 (obj_mach_o_make_or_get_sect): Likewise.
503 (obj_mach_o_section): Split out the functionality shared with zerofill.
504 (obj_mach_o_zerofill): New.
505 (obj_mach_o_common_parse): Ensure whitespace is skipped.
506 (mach_o_pseudo_table): Add .zerofill.
507
508 2012-01-03 Iain Sandoe <idsandoe@googlemail.com>
509
510 * config/obj-macho.c (obj_macho_process_stab): New.
511 * config/obj-macho.h (OBJ_PROCESS_STAB): Define.
512 (obj_macho_process_stab): Declare.
513
514 For older changes see ChangeLog-2011
515 \f
516 Local Variables:
517 mode: change-log
518 left-margin: 8
519 fill-column: 74
520 version-control: never
521 End:
This page took 0.038942 seconds and 4 git commands to generate.