aboutsummaryrefslogtreecommitdiff
path: root/gas/write.c
AgeCommit message (Collapse)AuthorFilesLines
2001-07-23 * symbols.c (S_GET_VALUE): Don't treat O_constant and localAlan Modra1-14/+5
symbols specially. Always resolve, adding fr_address to value. * write.c (write_object_file): Don't add fr_address to sym values. (relax_frag): Likewise. (relax_segment): Likewise. * config/obj-ieee.c (do_symbols): Likewise. * config/tc-cris.c (md_convert_frag): Likewise. * config/tc-fr30.c (md_convert_frag): Likewise. * config/tc-i386.c (md_convert_frag): Likewise. * config/tc-m32r.c (md_convert_frag): Likewise. * config/tc-m68hc11.c (md_convert_frag): Likewise. * config/tc-mcore.c (md_convert_frag): Likewise. * config/tc-mips.c (mips16_extended_frag): Likewise. * config/tc-ns32k.c (md_convert_frag): Likewise. * config/tc-m68k.c (md_convert_frag_1): Likewise. (BRANCHBWL, BRABSJUNC, BRABSJCOND, BRANCHBW, FBRANCH, DBCCLBR, DBCCABSJ, PCREL1632, PCINDEX, ABSTOPCREL): Decrement. (md_relax_table): Remove first four entries. Format. (md_estimate_size_before_relax): Remove old_fix. Don't bother setting fr_var. Simplify byte branch checks.
2001-07-03Fix mips16 testsuite failure by allowing finalize_syms to be set beforeNick Clifton1-3/+13
size_segs is called.
2001-06-27Do not set finalize_syms until after the segments have been sized.Nick Clifton1-3/+6
Some backends may still need to access the syms's frags in order to adjust relaxed frags.
2001-06-27 * write.c (fixup_segment <Difference of 2 syms same seg>): Don'tAlan Modra1-14/+24
subtract MD_PCREL_FROM_SECTION for 68k. (fixup_segment <Difference of 2 syms different seg>): Only fudge by adding MD_PCREL_FROM_SECTION for 68k or if not already pcrel.
2001-06-27 * write.c (fixup_segment <Difference of 2 syms same seg>): IfAlan Modra1-2/+4
pcrel, subtract MD_PCREL_FROM_SECTION value.
2001-05-27 * write.c (relax_segment <rs_space>): Check the section of aAlan Modra1-1/+1
symbol to determine whether it is absolute rather than comparing its frag against zero_address_frag as listings play tricks with frags.
2001-05-26 * write.c (relax_segment <rs_space>): Calculate growth usingAlan Modra1-15/+21
addresses before stretch. Prevent repeated error messages. From Peter Jakubek <pjak@snafu.de> Use as_bad_where and as_warn_where to pinpoint errors.
2001-05-24 * write.c (relax_segment): Don't zap fr_symbol when relaxing.Alan Modra1-4/+8
2001-05-24 * write.c (write_object_file): Set finalize_syms = 1 beforeAlan Modra1-3/+4
size_seg is called.
2001-05-22 * symbols.c (resolve_symbol_value): Remove "finalize" param,Alan Modra1-11/+9
instead use finalize_syms directly. Don't treat expressions specially with regard to finalize_syms. Update calls to self. (resolve_local_symbol): Update call to resolve_symbol_value. (S_GET_VALUE): Likewise. Return resolve_symbol_value if !finalize_syms. * symbols.h (resolve_symbol_value): Update prototype. * config/obj-aout.c (obj_crawl_symbol_chain): Update call to resolve_symbol_value. * config/obj-bout.c (obj_crawl_symbol_chain): Likewise. * config/obj-coff.c (do_relocs_for): Likewise. (yank_symbols): Likewise. (fixup_segment): Likewise. * config/obj-vms.c (obj_crawl_symbol_chain): Likewise. * config/tc-mips.c (md_convert_frag): Likewise. * config/tc-ppc.c (ppc_frob_symbol): Likewise. (ppc_fix_adjustable): Likewise. * dwarf2dbg.c (dwarf2dbg_estimate_size_before_relax): Likewise. (dwarf2dbg_convert_frag): Likewise. * ehopt.c (eh_frame_estimate_size_before_relax): Likewise. (eh_frame_convert_frag): Likewise. * expr.c (make_expr_symbol): Likewise. * write.c (adjust_reloc_syms): Likewise. (write_object_file): Likewise. (relax_segment): Likewise. (fixup_segment): Likewise. (finalize_syms): Init to zero, and update comment. (write_object_file): Set finalize_syms to 1 rather than 2. * doc/internals.texi (sy_value): Mention finalize_syms. (S_GET_VALUE): Remove restriction on when S_GET_VALUE can be called.
2001-04-13bfd/Jakub Jelinek1-0/+7
* libbfd-in.h (_bfd_merge_section): New. (_bfd_write_merged_section): New. (_bfd_merged_section_offset): New. * libbfd.h: Rebuilt. * linker.c (_bfd_generic_link_output_symbols): Handle discard_sec_merge. * aoutx.h (aout_link_write_symbols): Likewise. * pdp11.c (aout_link_write_symbols): Likewise. * elflink.h (elf_link_add_object_symbols): Call _bfd_merge_section. (elf_bfd_final_link): Adjust global symbols pointing into SEC_MERGE sections. (elf_link_sec_merge_syms): New. (elf_link_input_bfd): Call _bfd_merged_section_offset and _bfd_write_merged_section. Handle discard_sec_merge. * elf-bfd.h (struct elf_link_hash_table): Add merge_info field. (struct bfd_elf_section_data): Likewise. * elf.c (_bfd_elf_make_section_from_shdr): Set SEC_MERGE and SEC_STRINGS section flags and entsize from their ELF counterparts. (_bfd_elf_link_hash_table_init): Initialize merge_info. (elf_fake_sections): Set SHF_MERGE, SHF_STRINGS and sh_entsize from their BFD counterparts. * merge.c: New file. * Makefile.am: Add strtab.lo. * Makefile.in: Rebuilt. include/ * bfdlink.h (bfd_link_discard): Add discard_sec_merge. gas/ * config/obj-elf.c (obj_elf_change_section): Add entsize argument, handle SHF_MERGE and SHF_STRINGS. (obj_elf_parse_section_letters): Set SHF_MERGE and SHF_STRINGS. (obj_elf_section): Allow additional argument specifying entity size. * write.c (adjust_reloc_syms): Keep relocations against local symbols in SEC_MERGE sections. ld/ * ldmain.c (main): Default to discard_sec_merge. * lexsup.c (OPTION_DISCARD_NONE): Define. (ld_options): Add --discard-none. (parse_args): Handle OPTION_DISCARD_NONE. * ldlang.c (wild_doit): SEC_MERGE should be set in the output section only if SEC_MERGE and SEC_STRINGS flags and entsize of all its input sections match.
2001-04-04 * write.c (write_object_file): Reset broken word state beforeHans-Peter Nilsson1-0/+20
calling relax_seg.
2001-03-30Multi-pass relaxation machinery.Alan Modra1-21/+61
2001-03-23fix_new_exp: Print an error if passed a register.Nick Clifton1-0/+4
2001-03-20Use `relax_marker' instead of fragile address test code to determineAlan Modra1-38/+16
whether a frag's fr_address has been updated.
2001-03-08Fix copyright noticesNick Clifton1-1/+2
2001-02-13 * write.c (is_dnrange): Stop as soon as the address becomesIan Lance Taylor1-13/+27
larger. (relax_frag): Add segment parameter. Only call symbol_get_frag once. Only call is_dnrange if the symbol is in the same segment, and the symbol address is larger. (relax_segment): Pass segment to md_relax_frag and relax_frag. * write.h (relax_frag): Update declaration. * config/tc-fr30.c (fr30_relax_frag): Add segment parameter. Pass it to relax_frag. * config/tc-m32r.c (m32r_relax_frag): Likewise. * config/tc-m32r.h (md_relax_frag): Add segment parameter. (m32r_relax_frag): Update declaration. * config/tc-mips.h (md_relax_frag): Add segment parameter. * config/tc-tic54x.h (md_relax_frag): Likewise. * doc/internals.texi (CPU backend): Update documentation for md_relax_frag.
2000-12-28 * write.c (subsegs_finish): Fix thinko last change -- don'tRichard Henderson1-7/+4
"optimize" the alignment == 0 case.
2000-12-28 * as.h (rs_align_test): New.Richard Henderson1-9/+33
* frags.c (NOP_OPCODE): Move default from read.c. (MAX_MEM_FOR_RS_ALIGN_CODE): New default. (frag_align_code): New. * frags.h (frag_align_code): Declare. * read.c (NOP_OPCODE): Remove. (do_align): Use frag_align_code. * write.c (NOP_OPCODE): Remove. (get_recorded_alignment): New. (cvt_frag_to_fill): Handle rs_align_test. (relax_segment): Likewise. (subsegs_finish): Align last subseg in section to the section alignment. Use frag_align_code. * write.h (get_recorded_alignment): Declare. * config/obj-coff.c (size_section): Handle rs_align_test. (fill_section, fixup_mdeps): Likewise. (write_object_file): Use frag_align_code. * config/tc-alpha.c (alpha_align): Use frag_align_code. (alpha_handle_align): New. * config/tc-alpha.h (HANDLE_ALIGN): New. (MAX_MEM_FOR_RS_ALIGN_CODE): New. * config/tc-i386.h (md_do_align): Use frag_align_code. (MAX_MEM_FOR_RS_ALIGN_CODE): New. * config/tc-ia64.c (ia64_md_do_align): Don't do code alignment. (ia64_handle_align): New. * config/tc-ia64.h (HANDLE_ALIGN): New. (MAX_MEM_FOR_RS_ALIGN_CODE): New. * config/tc-m32r.c (m32r_do_align): Remove. (m32r_handle_align): New. (fill_insn): Use frag_align_code. * config/tc-m32r.h (md_do_align): Remove. (HANDLE_ALIGN, MAX_MEM_FOR_RS_ALIGN_CODE): New. * config/tc-m88k.c, config/tc-m88k.h: Similarly. * config/tc-mips.c, config/tc-mips.h: Similarly. * config/tc-sh.c (sh_cons_align): Use rs_align_test. (sh_handle_align): Likewise. Handle rs_align_code. (sh_do_align): Remove. * config/tc-sh.h (md_do_align): Remove. (MAX_MEM_FOR_RS_ALIGN_CODE): New. * config/tc-sparc.c (sparc_cons_align): Use rs_align_test. (sparc_handle_align): Likewise. Handle rs_align_code. * config/tc-sparc.h (md_do_align): Remove. (MAX_MEM_FOR_RS_ALIGN_CODE): New.
2000-11-29 * dwarf2dbg.c: Rewrite from scratch. Queue all debugging outputRichard Henderson1-0/+13
until dwarf2_finish; use relaxation to get cross-fragment offsets; thread multiple subsegments properly; handle multiple code sections properly; emit proper compilation unit info for assembler generated debugging. * as.h (enum _relax_state): Add rs_dwarf2dbg. * dwarf2dbg.h (struct dwarf2_line_info): Remove filename. (dwarf2dbg_estimate_size_before_relax): Declare. (dwarf2dbg_relax_frag, dwarf2dbg_convert_frag): Declare. * write.c: Include dwarf2dbg.h. (cvt_frag_to_fill): Handle rs_dwarf2dbg. (relax_segment): Likewise.
2000-11-072000-11-06 Kazu Hirata <kazu@hxi.com>Kazu Hirata1-1/+1
* as.c: Fix formatting. * dwarf2dbg.c: Likewise. * itbl-ops.c: Likewise. * listing.c: Likewise. * macro.h: Likewise. * messages.c: Likewise. * read.c: Likewise. * subsegs.c: Likewise. * subsegs.h: Likewise. * write.c: Likewise.
2000-10-07Make elf section symbols global for link-once sections.Alan Modra1-1/+1
2000-09-05Miscellaneous tiny fixes.Alan Modra1-1/+1
2000-08-23* write.c (TC_FIX_ADJUSTABLE): Remove the duplicate.Alexandre Oliva1-4/+0
2000-08-22* write.c (TC_FIX_ADJUSTABLE): Define to 1, if not defined.Alexandre Oliva1-10/+9
(fixup_segment) Use it instead of TC_DONT_FIX_NON_ADJUSTABLE. * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. <OBJ_ELF, OBJ_COFF, TE_PE> (TC_FIX_ADJUSTABLE): Define. * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Remove. <OBJ_ELF> (TC_FIX_ADJUSTABLE): Define. * config/tc-i960.h, config/tc-m68k.h, config/tc-v850.h: Likewise.
2000-08-222000-08-22 Eric Christopher <echristo@cygnus.com>Eric Christopher1-10/+14
* config/tc-mn10300.c: (md_apply_fix): New function. (mn10300_force_relocation): New function. (mn10300_fix_adjustable): New function. * config/tc-mn10300.h: (TC_FORCE_RELOCATION): Define. (TC_HANDLES_FX_DONE): Define. (obj_fix_adjustable): Define. (MD_APPLY_FIX3): Define. (TC_LINKRELAX_FIXUP): Define. * write.c: (TC_LINKRELAX_FIXUP): Define if not previously defined. (fixup_segment): Use TC_LINKRELAX_FIXUP. * doc/internals.texi: Document TC_LINKRELAX_FIXUP.
2000-08-18* write.c (fixup_segment) [TC_DONT_FIX_NON_ADJUSTABLE]: UseAlexandre Oliva1-8/+8
obj_fix_adjustable() and tc_fix_adjustable() to tell whether to add a symbol's address. Removed all target-specific #ifdefs that used to accomplished the same. * config/tc-v850.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. * config/tc-m68k.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. * config/tc-arm.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. * config/tc-i960.h (TC_DONT_FIX_NON_ADJUSTABLE): Define. * config/tc-i386.h (TC_DONT_FIX_NON_ADJUSTABLE): Define.
2000-07-20Fix formatting.Nick Clifton1-312/+308
2000-06-29Fix previous delta so that it is only used for TE_GO32 and not !TE_PE.Nick Clifton1-5/+6
2000-06-29Set vma and lma for segment when using the BFD_ASSEMBLER for COFF format files.Nick Clifton1-0/+24
2000-04-03 * write.c (write_object_file) [! WORKING_DOT_WORD]: If defined,Hans-Peter Nilsson1-0/+3
call TC_CHECK_ADJUSTED_BROKEN_DOT_WORD for each word after adjustments.
1999-09-12 * write.c (write_relocs): Call SET_SECTION_RELOCS if it isIan Lance Taylor1-0/+4
defined. * config/obj-coff.h (SET_SECTION_RELOCS): Define. * doc/internals.texi (Object format backend): Document SET_SECTION_RELOCS.
1999-09-11 * write.c (dump_section_relocs): Call print_symbol_value_1 toIan Lance Taylor1-15/+13
print the symbol, rather than printing it here. 1999-09-11 Donn Terry <donn@interix.com> * write.c (adjust_reloc_syms): Print adjusted fixup.
1999-07-28Fix an overflow checking bug uncovered when a 32 bit target is compiledAlan Modra1-16/+4
with a 64 bit bfd.
1999-07-14 * write.c (cvt_frag_to_fill): Use frag file and line in rs_orgIan Lance Taylor1-4/+13
error message. (relax_segment): Likewise. After giving a rs_org error, convert the frag to rs_align to avoid cascading errors.
1999-07-11 * Many files: Changes to avoid gcc warnings: Add ATTRIBUTE_UNUSEDIan Lance Taylor1-10/+11
as appropriate. Fill in structure initializations. Add variable initializations. Add casts. * dwarf2dbg.c (print_stats): Change i to size_t. * listing.c (listing_listing): Change list_line to unsigned int.
1999-06-12 * write.c (adjust_reloc_syms): Rather than never reducing relocIan Lance Taylor1-5/+5
which refer to symbols in linkonce sections, permit reducing the relocs if the symbol is local.
1999-06-12 * subsegs.c (subseg_text_p): New function.Ian Lance Taylor1-1/+2
* as.h (subseg_text_p): Declare. * read.c (do_align): Use subseg_text_p to set the default fill. * write.c (subsegs_finish): Likewise. * config/obj-coff.c (write_object_file): Likewise. * config/tc-i386.h (md_maybe_text): Don't define. (md_do_align): Use subseg_text_p to set the default fill. * config/tc-m32r.c (m32r_do_align): Likewise. * config/tc-sh.c (sh_do_align): Likewise. * config/tc-sparc.h (md_do_align): Likewise.
1999-06-111999-06-11 Martin Dorey <mdorey@madge.com>Ian Lance Taylor1-0/+2
* write.c (fixup_segment): Don't add symbol value for i960 ELF. * config/tc-i960.c (s_leafproc): Don't call tc_set_bal_of_cal if OBJ_ELF. (md_apply_fix): Simplify BFD_ASSEMBLER handling.
1999-06-03 Add support for storing local symbols in a small structure to saveIan Lance Taylor1-68/+57
memory when assembling large files. * as.h: Don't include struc-symbol.h. (symbolS): Add typedef. * symbols.c: Include struc-symbol.h. (local_hash): New static variable. (save_symbol_name): New static function, from symbol_create. (symbol_create): Call save_symbol_name. (local_symbol_count): New static variable. (local_symbol_conversion_count): Likewise. (LOCAL_SYMBOL_CHECK): Define. (local_symbol_make): New static function. (local_symbol_convert): New static function. (colon): Handle local symbols. Create local symbol for local label name. (symbol_table_insert): Handle local symbols. (symbol_find_or_make): Create local symbol for local label name. (symbol_find_base): Check for local symbol. (symbol_append, symbol_insert): Check for local symbols. (symbol_clear_list_pointers, symbol_remove): Likewise. (verify_symbol_chain): Likewise. (copy_symbol_attributes): Likewise. (resolve_symbol_value): Handle local symbols. (resolve_local_symbol): New static function. (resolve_local_symbol_values): New function. (S_GET_VALUE, S_SET_VALUE): Handle local symbols. (S_IS_FUNCTION, S_IS_EXTERNAL, S_IS_WEAK, S_IS_COMMON): Likewise. (S_IS_DEFINED, S_IS_DEBUG, S_IS_LOCAL, S_GET_NAME): Likewise. (S_GET_SEGMENT, S_SET_SEGMENT, S_SET_EXTERNAL): Likewise. (S_CLEAR_EXTERNAL, S_SET_WEAK, S_SET_NAME): Likewise. (symbol_previous, symbol_next): New functions. (symbol_get_value_expression): Likewise. (symbol_set_value_expression): Likewise. (symbol_set_frag, symbol_get_frag): Likewise. (symbol_mark_used, symbol_clear_used, symbol_used_p): Likewise. (symbol_mark_used_in_reloc): Likewise. (symbol_clear_used_in_reloc, symbol_used_in_reloc_p): Likewise. (symbol_mark_mri_common, symbol_clear_mri_common): Likewise. (symbol_mri_common_p): Likewise. (symbol_mark_written, symbol_clear_written): Likewise. (symbol_written_p): Likewise. (symbol_mark_resolved, symbol_resolved_p): Likewise. (symbol_section_p, symbol_equated_p): Likewise. (symbol_constant_p): Likewise. (symbol_get_bfdsym, symbol_set_bfdsym): Likewise. (symbol_get_obj, symbol_set_obj): Likewise. (symbol_get_tc, symbol_set_tc): Likewise. (symbol_begin): Initialize local_hash. (print_symbol_value_1): Handle local symbols. (symbol_print_statistics): Print local symbol statistics. * symbols.h: Include "struc-symbol.h" if not BFD_ASSEMBLER. Declare new symbols.c functions. Move many declarations here from struc-symbol.h. (SYMBOLS_NEED_BACKPOINTERS): Define if needed. * struc-symbol.h (SYMBOLS_NEED_BACKPOINTERS): Don't set. (struct symbol): Move bsym to make it clearly the first field. Remove TARGET_SYMBOL_FIELDS. (symbolS): Don't typedef. (struct broken_word): Remove. (N_TYPE_seg, seg_N_TYPE): Move to symbol.h. (SEGMENT_TO_SYMBOL_TYPE, N_REGISTER): Likewise. (symbol_clear_list_pointers): Likewise. (symbol_insert, symbol_remove): Likewise. (symbol_previous, symbol_append): Likewise. (verify_symbol_chain, verify_symbol_chain_2): Likewise. (struct local_symbol): Define. (local_symbol_converted_p, local_symbol_mark_converted): Define. (local_symbol_resolved_p, local_symbol_mark_resolved): Define. (local_symbol_get_frag, local_symbol_set_frag): Define. (local_symbol_get_real_symbol): Define. (local_symbol_set_real_symbol): Define. Define. * write.c (write_object_file): Call resolve_local_symbol_values. * config/obj-ecoff.h (OBJ_SYMFIELD_TYPE): Define. (TARGET_SYMBOL_FIELDS): Don't define. * config/obj-elf.h (OBJ_SYMFIELD_TYPE): Add local field. If ECOFF_DEBUGGING, add ECOFF fields. (ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define. * config/obj-multi.h (struct elf_obj_sy): Add local field. If ECOFF_DEBUGGING, add ECOFF fields. (ELF_TARGET_SYMBOL_FIELDS, TARGET_SYMBOL_FIELDS): Don't define. (ECOFF_DEBUG_TARGET_SYMBOL_FIELDS): Don't define. * config/tc-mcore.h: Don't include struc-symbol.h. (TARGET_SYMBOL_FIELDS): Don't define. (struct mcore_tc_sy): Define. (TC_SYMFIELD_TYPE): Define. * Many files: Use symbolS instead of struct symbol. Use new accessor functions rather than referring to symbolS fields directly. * read.c (s_mri_common): Don't add in value of line_label. * config/tc-mips.c (md_apply_fix): Correct parenthesization when checking for SEC_LINK_ONCE. * config/tc-sh.h (sh_fix_adjustable): Declare.
1999-05-17/Alan Modra1-21/+22
Move bitfield overflow checks to after the md_apply_fix call in fixup_segment so that md_apply_fix has a chance to modify value. Handle 8 and 16-bit pcrel relocs for i386. Prototypes and other minor code cleanups.
1999-05-0319990502 sourceware importbinu_ss_19990502Richard Henderson1-0/+2884