Changelog of the TIGCC-local changes to Binutils (2.14 branch): 2004-09-20 Kevin Kofler * gas/read.c (emit_expr): Mark relocs for constants unoptimizable. * gas/write.h (struct fix): Add fx_unoptimizable field. * gas/write.c (fix_new_internal): Initialize it. * include/coff/internal.h (R_UNOPTIMIZABLE): New reloc flag. * gas/config/tc-m68k.c (tc_coff_fix2rtype): Handle unoptimizable relocs. (md_assemble): Mark destination operand relocs unoptimizable. 2004-09-05 Kevin Kofler * gas/as.h (segment_name): Change to function to allow arbitrary number of sections. * gas/subsegs.c (seg_name, segment_name): Likewise. * gas/symbols.h (SEGMENT_TO_SYMBOL_TYPE): Likewise. * gas/config/obj-coff.c (seg_N_TYPE, SEGMENT_TO_SYMBOL_TYPE): Likewise. (seg_info_off_by_4, SEG_INFO_FROM_SECTION_NUMBER): Likewise. * gas/config/obj-coff.h (C_REGISTER_SECTION): Redefine to N_SEGMENTS+10. * gas/as.h (SEG_NORMAL): Redefine to use SEG_LAST. (N_SEGMENTS, SEG_LIST, SEG_LAST): Bump segment limit from 120 to 1024. 2004-08-07 Kevin Kofler * gas/config/tc-m68k.c (md_apply_fix3): Don't add/subtract the value of a common symbol, it is a size, not a position. 2004-07-25 Kevin Kofler * gas/config/obj-coff.h (S_FORCE_RELOC): Force relocs for symbols in mergeable sections. * gas/config/obj-coff.c (yank_symbols): Clear the SF_LOCAL flag if the symbol is in a mergeable section. 2004-07-24 Kevin Kofler * include/coff/internal.h (STYP_MERGEABLE, STYP_UNALIGNED): New TIGCC section flags. * gas/config/obj-coff.c (obj_coff_section): Use them ("m" and "u" codes). * gas/config/obj-coff.h (S_IS_LOCAL): Always output local symbols in mergeable sections. 2004-07-19 Kevin Kofler * gas/config/obj-coff.h (S_FORCE_RELOC): Don't force relocs for absolute symbols if !flag_all_relocs. * gas/expr.c (expr): Don't optimize address differences if flag_all_relocs. * gas/symbols.c (resolve_symbol_value): Error out on operations other than + or - on an address or address difference if flag_all_relocs. 2004-06-25 Kevin Kofler * gas/as.h (N_SEGMENTS, SEG_NORMAL, SEG_LIST, SEG_LAST): Bump segment limit from 40 to 120. * gas/subsegs.c (MANY_SEGMENTS): Increase segment limit. * gas/config/obj-coff.c (seg_N_TYPE, seg_info_off_by_4): Likewise. * gas/config/obj-coff.h (C_REGISTER_SECTION): Likewise. * gas/config/obj-coff.c (obj_coff_add_segment): Use the full name, not the truncated name, for merging of identically-named sections. 2003-09-09 Kevin Kofler * gas/config/tc-m68k.c (md_estimate_size_before_relax): Only create the symbol in the next frag for conditional jumps. Also handle conditional jumps to variables in the same segment. 2003-09-08 Kevin Kofler * gas/config/tc-m68k.c (md_convert_frag_1): Comment Sebastian Reichelt's change. (md_estimate_size_before_relax): Likewise. 2003-09-08 Sebastian Reichelt * gas/config/tc-m68k.c (flag_short_jumps): New variable. (md_estimate_size_before_relax): Use it instead of flag_short_refs for jump shortening. Handle flag_short_refs in the ABSTOPCREL case. (md_longopts): Add --short-jumps (OPTION_SHORT_JUMPS). (md_parse_option): Handle --short-jumps, make -l imply it. (md_show_usage): Add --short-jumps. * gas/frags.h: (struct frag): Add fr_start_symbol member. * gas/config/tc-m68k.c (md_convert_frag_1): Create the jbCC PC-relative reloc using it (in the next frag), not the section symbol of sec. Revert 2003-09-02 addition of segT sec parameter. (md_convert_frag): Revert 2003-09-02 change ("Pass sec parameter on to md_convert_frag_1"). (md_estimate_size_before_relax): For LONG references, create a symbol in the next frag. 2003-09-02 Kevin Kofler * gas/config/tc-m68k.c (m68k_ip): Create PC-relative reloc for the branch in a jbCC. (md_convert_frag_1): Likewise. Add segT sec parameter. (md_convert_frag): Pass sec parameter on to md_convert_frag_1. 2003-09-01 Kevin Kofler * opcodes/m68k-opc.c (m68k_opcodes): Move 2002-05-12 exgl (exg.l) alias for exg... (m68k_aliases): ... here. Add abcdb (abcd.b) alias for abcd. * gas/listing.c (listing_listing): Add 1 to the width for the terminating '\0' character. 2003-08-07 Kevin Kofler * gas/config/obj-coff.c (do_relocs_for): Do convert references to local symbols we aren't going to output into references to the section symbol. 2003-07-17 Kevin Kofler * gas/expr.c (expr): Add optimization of subtraction of .set symbols. * gas/config/obj-coff.c (fixup_segment): Zero out add_symbolP only if !TC_FORCE_RELOCATION. (c_dot_file_symbol [!BFD_ASSEMBLER]): If flag_all_relocs, xdef __ld_all_relocs. * gas/config/tc-m68k.c (md_apply_fix3): Fix offset computation (don't subtract fixP->fx_frag->fr_address, subtract subtrahend twice instead to compensate for later incorrect computations in obj-coff.c). Disable: "Fix up subtraction of the dot symbol by changing the reloc to PC-relative." (TIGCC 20030716), because it is unnecessary and probably wrong. 2003-07-16 Kevin Kofler * gas/as.c (show_usage, parse_args): Add --all-relocs switch. * gas/as.h (flag_all_relocs): New variable. * gas/config/obj-coff.h (S_IS_LOCAL): Output even internal symbols when flag_keep_locals. (S_FORCE_RELOC): Never reduce or eliminate relocs in all-relocs mode. * gas/config/obj-coff.c (fixup_segment): Take TC_FORCE_RELOCATION_SUB_LOCAL and UNDEFINED_DIFFERENCE_OK into account. Reuse fx_im_disp to turn off range checking on the 68k. (do_relocs_for): Don't convert references to references to the section symbol. * gas/config/tc-m68k.h (UNDEFINED_DIFFERENCE_OK): Define. (TC_FORCE_RELOCATION, TC_FORCE_RELOCATION_ABS, TC_FORCE_RELOCATION_LOCAL, TC_FORCE_RELOCATION_SUB_SAME, TC_FORCE_RELOCATION_SUB_LOCAL, TC_FORCE_RELOCATION): Define. Force relocs in all-relocs mode. * gas/config/tc-m68k.c (tc_coff_fix2rtype): Handle word and byte negative relocs. (md_apply_fix3): We aren't done when we still have something to subtract. Split address differences into its components. Fix up subtraction of the dot symbol by changing the reloc to PC-relative. Reuse fx_im_disp to turn off range checking. * gas/write.c (adjust_reloc_syms): Only convert relocs to section symbol relocs if we aren't going to output the symbol they refer to. * include/coff/internal.h (R_RELWORD_NEG, R_RELBYTE_NEG): Define as TIGCC extensions. 2003-07-12 Kevin Kofler * Don't pad sections. ld-tigcc aligns sections independently of their size: gas/config/obj-coff.c (SUB_SEGMENT_ALIGN for write_object_file): Set to 0, not 1. gas/write.c (subsegs_finish): Always skip alignment code. 2003-07-12 Kevin Kofler * Merge TIGCC patchset: 2003-01-06 Kevin Kofler * gas/config/obj-coff.c (coff_frob_section): Don't pad sections. ld-tigcc aligns sections independently of their size. 2002-05-28 Sebastian Reichelt * opcodes/configure.in: Use m68k-dis.c as a "unique file" rather than z8k-dis.c. We don't distribute the latter. * opcodes/configure: Likewise. 2002-05-12 Kevin Kofler * opcodes/m68k-opc.c (m68k_opcodes): Add exgl (exg.l) alias for exg. 2002-01-20 Sebastian Reichelt * opcodes/m68k-opc.c (m68k_opcodes): Optimization: Add clr.l %dn as an alias for moveq. 2002-01-10 Stephan Effelsberg * opcodes/m68k-opc.c (m68k_opcodes): Fix cmpi operand constraints when aliased as cmp. (Don't allow PC-relative or indexed PC-relative second operand.) 2001-09-01 Sebastian Reichelt * bfd/config.bfd: Remove targ_selvecs for m68k-*-*-coff*. 2003-07-12 Kevin Kofler * Import Binutils 2.14 release.