Alan Modra
c66827056d
* config/tc-i386.c (md_pseudo_table <file>): Warning fix.
...
(BFD_RELOC_8, BFD_RELOC_8_PCREL): Define for non-BFD.
(md_apply_fix3): Formatting. Remove redundant test.
(tc_gen_reloc): Remove redundant code.
(tc_i386_force_relocation): Delete. Movy body of function to..
* config/tc-i386.h (TC_FORCE_RELOCATION): .. here.
2002-07-09 09:46:18 +00:00
Alan Modra
cd61ebfe13
gas/ChangeLog
...
* config/tc-i386.c (process_suffix): Remove intel mode movsx and
movzx fudges.
(md_assemble): Instead, zap the suffix here.
include/opcode/ChangeLog
* i386.h: Remove IgnoreSize from movsx and movzx.
2002-07-08 10:03:11 +00:00
Jakub Jelinek
13ae64f3c7
* elf.c (_bfd_elf_make_section_from_shdr): Set SEC_THREAD_LOCAL
...
for symbols from SHF_TLS section.
(_bfd_elf_print_private_bfd_data): Add PT_TLS.
(elf_fake_sections): Set SHF_TLS for SEC_THREAD_LOCAL sections.
(map_sections_to_segments): Build PT_TLS segment if necessary.
(assign_file_positions_for_segments): Likewise.
(get_program_header_size): Account for PT_TLS segment.
(swap_out_syms): Set type of BSF_THREAD_LOCAL symbols and symbols from
SEC_THREAD_LOCAL sections to STT_TLS.
* reloc.c: Add 386 and IA-64 TLS relocs.
* section.c (SEC_THREAD_LOCAL): Define.
(SEC_CONSTRUCTOR_TEXT, SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS):
Remove.
* elflink.h (elf_link_add_object_symbols): Support .tcommon.
(size_dynamic_sections): If DF_STATIC_TLS, set DF_FLAGS
unconditionally.
(struct elf_final_link_info): Add first_tls_sec.
(elf_bfd_final_link): Set first_tls_sec.
Compute elf_hash_table (info)->tls_segment.
(elf_link_output_extsym): Handle STT_TLS symbols.
(elf_link_input_bfd): Likewise.
* syms.c (BSF_THREAD_LOCAL): Define.
* bfd-in2.h: Rebuilt.
* libbfd.h: Rebuilt.
* elf32-i386.c (elf_i386_tls_transition, dtpoff_base, tpoff,
elf_i386_mkobject, elf_i386_object_p): New functions.
(elf_howto_table): Add TLS relocs.
(elf_i386_reloc_type_lookup): Support TLS relocs.
(elf_i386_info_to_howto_rel): Likewise.
(struct elf_i386_link_hash_entry): Add tls_type.
(struct elf_i386_obj_tdata): New.
(elf_i386_hash_entry, elf_i386_tdata, elf_i386_local_got_tls_type):
New macros.
(struct elf_i386_link_hash_table): Add tls_ldm_got.
(link_hash_newfunc): Clear tls_type.
(elf_i386_check_relocs): Support TLS relocs.
(elf_i386_gc_sweep_hook): Likewise.
(allocate_dynrelocs): Likewise.
(elf_i386_size_dynamic_sections): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_finish_dynamic_symbol): Likewise.
(bfd_elf32_mkobject, elf_backend_object_p): Define.
* elfxx-ia64.c (struct elfNN_ia64_dyn_sym_info): Add tprel_offset,
dtpmod_offset, dtprel_offset, tprel_done, dtpmod_done, dtprel_done,
want_tprel, want_dtpmod, want_dtprel.
(elfNN_ia64_tprel_base, elfNN_ia64_dtprel_base): New functions.
(ia64_howto_table): Add TLS relocs, rename R_IA64_LTOFF_TP22 to
R_IA64_LTOFF_TPREL22.
(elf_code_to_howto_index): Add TLS relocs.
(elfNN_ia64_check_relocs): Support TLS relocs.
(allocate_global_data_got): Account for TLS .got data.
(allocate_dynrel_entries): Account for TLS dynamic relocations.
(elfNN_ia64_install_value): Supprt TLS relocs.
(set_got_entry): Support TLS relocs.
(elfNN_ia64_relocate_section): Likewise.
* config/obj-elf.c (elf_common): Renamed from obj_elf_common.
(obj_elf_common): Call elf_common.
(obj_elf_tls_common): New function.
(elf_pseudo_tab): Support .tls_common.
(special_sections): Add .tdata and .tbss.
(obj_elf_change_section): Set SEC_THREAD_LOCAL for SHF_TLS
sections.
(obj_elf_parse_section_letters): Support T in section flags (SHF_TLS).
(obj_elf_parse_section_letters): Include T in error message.
* config/tc-ppc.c (ppc_section_letter): Likewise.
* config/tc-alpha.c (alpha_elf_section_letter): Likewise.
(tc_gen_reloc): Handle SEC_THREAD_LOCAL the same way as
SEC_MERGE.
* config/tc-sparc.c (md_apply_fix3): Likewise.
* config/tc-i386.c (tc_i386_fix_adjustable): Add TLS relocs.
Define them if not BFD_ASSEMBLER.
(lex_got): Support @TLSGD, @TLSLDM, @GOTTPOFF, @TPOFF, @DTPOFF
and @NTPOFF.
(md_apply_fix3): Add TLS relocs.
* config/tc-ia64.c (enum reloc_func): Add FUNC_DTP_MODULE,
FUNC_DTP_RELATIVE, FUNC_TP_RELATIVE, FUNC_LT_DTP_MODULE,
FUNC_LT_DTP_RELATIVE, FUNC_LT_TP_RELATIVE.
(pseudo_func): Support @dtpmod(), @dtprel() and @tprel().
(ia64_elf_section_letter): Include T in error message.
(md_begin): Support TLS operators.
(md_operand): Likewise.
(ia64_gen_real_reloc_type): Support TLS relocs.
* testsuite/gas/i386/tlspic.s: New file.
* testsuite/gas/i386/tlsd.s: New file.
* testsuite/gas/i386/tlsnopic.s: New file.
* testsuite/gas/i386/tlsd.d: New file.
* testsuite/gas/i386/tlsnopic.d: New file.
* testsuite/gas/i386/tlspic.d: New file.
* testsuite/gas/i386/i386.exp: Add tlsd, tlsnopic and tlspic tests.
* testsuite/gas/ia64/tls.s: New file.
* testsuite/gas/ia64/tls.d: New file.
* testsuite/gas/ia64/ia64.exp: Add tls test.
* write.c (adjust_reloc_syms): Don't change symbols in
SEC_THREAD_LOCAL sections to STT_SECTION + addend.
* elf/common.h (PT_TLS, SHF_TLS, STT_TLS, DF_STATIC_TLS): Define.
* elf/ia64.h (R_IA64_LTOFF_TPREL22): Renamed from R_IA64_LTOFF_TP22.
* elf/i386.h: Add TLS relocs.
* scripttempl/elf.sc: Add .rel{,a}.t{bss,data}, .tdata and .tbss.
* ldlang.c (lang_add_section): Set SEC_THREAD_LOCAL for
output section if necessary. Handle .tbss.
(lang_size_sections): Clear _raw_size for .tbss section
(it allocates space in PT_TLS segment only).
* ldwrite.c (build_link_order): Build link order for .tbss too.
* readelf.c (get_segment_type): Add PT_TLS.
(get_elf_section_flags): Add SHF_TLS.
(get_dynamic_flags): Optimize. Add DF_STATIC_TLS.
(process_dynamic_segment): Use puts instead of printf.
(get_symbol_type): Support STT_TLS.
* objdump.c (dump_section_header): Remove SEC_CONSTRUCTOR_TEXT,
SEC_CONSTRUCTOR_DATA, SEC_CONSTRUCTOR_BSS.
Add SEC_THREAD_LOCAL.
2002-05-23 13:12:53 +00:00
Alan Modra
412167cbaa
* config/tc-i386.c (md_estimate_size_before_relax) Don't lose
...
reloc when no_cond_jump_promotion.
2002-05-09 06:35:22 +00:00
Alan Modra
200dbde8db
* config/tc-i386.c (extra_symbol_chars): Add '[' to the list.
2002-05-01 00:53:55 +00:00
Alan Modra
0f3f3d8bfb
* config/tc-i386.c: Formatting fixes, add missing space in error
...
message.
2002-04-28 12:19:46 +00:00
Andreas Schwab
062cd5e7fc
* config/tc-i386.c (output_jump, output_disp)
...
(md_estimate_size_before_relax): Don't set fx_pcrel_adjust any
more.
(md_apply_fix3): Remember addend value for rela relocations.
(tc_gen_reloc): Correctly compute pc-relative relocation addend.
2002-04-24 14:56:07 +00:00
Alan Modra
edde18a577
* as.c (parse_args <OPTION_VERSION>): Use VERSION is
...
BFD_VERSION_STRING unavailable.
* config/tc-i386.c (INLINE): Define (for non-BFD assembler).
2002-04-10 13:00:02 +00:00
Andreas Schwab
3458b54ce7
* config/tc-i386.c (output_jump): Set fx_pcrel_adjust to size of
...
field for pc-relative fixups.
(output_disp): Likewise.
(md_estimate_size_before_relax): Likewise.
(tc_gen_reloc): Subtract fx_pcrel_adjust instead of fx_size for
pc-relative fixups in 64bit mode.
2002-03-27 16:22:04 +00:00
Alan Modra
29b0f896b1
* config/tc-i386.h (REX_OPCODE): Define.
...
(REX_MODE64, REX_EXTX, REX_EXTY, REX_EXTZ): Define.
(rex_byte): typedef to int.
* config/tc-i386.c: Group prototypes and vars together.
Formatting fixes. Remove occurrences of "register" keyword.
(true): Delete.
(false): Delete.
(mode_from_disp_size): Add INLINE keyword to prototype.
(fits_in_signed_byte): Likewise.
(fits_in_unsigned_byte): Likewise.
(fits_in_unsigned_word): Likewise.
(fits_in_signed_word): Likewise.
(fits_in_unsigned_long): Likewise.
(fits_in_signed_long): Likewise.
(type_names): Constify.
(intel_float_operand): Constify param.
(add_prefix): Use REX_OPCODE.
(md_assemble): Likewise. Modify for changed rex_byte.
(parse_insn): Split out of md_assemble.
(parse_operands): Likewise.
(swap_operands): Likewise.
(optimize_imm): Likewise.
(optimize_disp): Likewise.
(match_template): Likewise.
(check_string): Likewise.
(process_suffix): Likewise.
(check_byte_reg): Likewise.
(check_long_reg): Likewise.
(check_qword_reg): Likewise.
(check_word_reg): Likewise.
(finalize_imm): Likewise.
(process_operands): Likewise.
(build_modrm_byte): Likewise.
(output_insn): Likewise.
(output_branch): Likewise.
(output_jump): Likewise.
(output_interseg_jump): Likewise.
(output_disp): Likewise.
(output_imm): Likewise.
2002-03-09 05:36:51 +00:00
Alan Modra
937149dd3c
* config/tc-i386.c (tc_gen_reloc): Don't attempt to handle 8 byte
...
relocs except when BFD64.
* write.c (number_to_chars_bigendian): Don't abort when N is
larger than sizeof (VAL).
(number_to_chars_littleendian): Likewise.
2002-03-06 04:59:36 +00:00
Andreas Schwab
5db1645b7e
Update copyright.
2002-02-13 11:19:07 +00:00
Andreas Schwab
3bf057fadc
* config/tc-i386.c (tc_i386_fix_adjustable): Don't adjust
...
pc-relative relocations to merge sections in 64-bit mode.
2002-02-13 11:17:48 +00:00
Jan Hubicka
7ecd2f8b9d
* i386.c (md_assemble): Support 32bit address prefix.
...
(i386_displacement): Likewise.
(i386_index_check): Accept 32bit addressing in 64bit mode.
2002-02-11 12:00:54 +00:00
Daniel Jacobowitz
246fcdee13
2002-01-29 Daniel Jacobowitz <drow@mvista.com>
...
* config/tc-i386.c: Protect definitions of true and false
from redefinition.
2002-01-29 17:07:57 +00:00
Nick Clifton
94f592af1b
Update all uses of md_apply_fix to use md_apply_fix3. Make it a void function.
2001-11-15 21:29:00 +00:00
Alan Modra
a847613f74
* config/tc-i386.h (md_end): Define.
...
(i386_elf_emit_arch_note): Declare.
(CpuUnknown): Delete.
* config/tc-i386.c (default_arch): Constify.
(smallest_imm_type): Remove CpuUnknown test.
(md_assemble): Don't bother checking cpu_arch_flags non-zero.
(i386_elf_emit_arch_note): New function.
2001-11-15 13:19:46 +00:00
Alan Modra
1ae008798a
* config/tc-i386.c (parse_register): If not producing code for
...
x86_64, reject x86_64 register name matches.
(md_assemble): Remove now redundant check for x86_64 regs.
2001-10-04 18:01:46 +00:00
H.J. Lu
3882b01078
Locale changes from Bruno Haible <haible@clisp.cons.org>.
2001-09-19 05:33:36 +00:00
Alan Modra
e0890092b6
* expr.c (expr): Move code setting "retval" to the end of the loop,
...
and rearrange for efficiency. For "PIC code" subtraction, use
"rightseg" rather than recalculating. For "symbol OP symbol"
subtract, set "retval" to absolute_section if symbols in same
section.
* symbols.c (resolve_symbol_value): Resolve "sym +/- expr" to an
O_symbol. Simplify a +/- b code. Allow equality and non-equality
comparisons on symbols from any section. Allow other comparison
operators as for subtraction.
(symbol_equated_reloc_p): New predicate function.
* symbols.h (symbol_equated_reloc_p): Declare.
* write.c (adjust_reloc_syms): Use symbol_equated_reloc_p.
(write_relocs): Likewise.
(write_object_file): Likewise.
(relax_segment <rs_machine_dependent>): Ensure segment for
expression syms is set correctly.
* config/tc-mips.c (md_estimate_size_before_relax): Likewise.
* config/tc-i386.c (md_assemble <Output jumps>): Don't lose part
of a complex expression when setting up frag_var.
2001-09-09 14:01:17 +00:00
Alan Modra
28f815927f
* config/tc-i386.c (lex_got): Match lower case relocation tokens.
...
Don't allocate more space than necessary for the input line copy.
2001-08-01 02:27:11 +00:00
Alan Modra
ac62c3468d
* symbols.c (S_GET_VALUE): Don't treat O_constant and local
...
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-23 13:03:40 +00:00
Matthew Green
5bae9b28a0
* config/tc-i386.c (comment_chars): Don't use '/' as comment start if
...
TE_NetBSD.
(line_comment_chars): Set to '/' if TE_NetBSD.
2001-07-17 09:57:52 +00:00
Alan Modra
b091f402a9
* config/tc-hppa.c (CHECK_FIELD_WHERE): Define.
...
(md_apply_fix): Use it here. Replace printf with equivalent
as_bad_where.
(tc_gen_reloc): Use as_bad_where instead of as_bad.
(md_apply_fix): Here too.
* config/tc-i386.c (tc_gen_reloc): Use as_bad_where instead of as_bad.
* config/tc-m68k.c (tc_gen_reloc): Likewise.
(md_convert_frag_1): Likewise.
2001-06-21 06:12:11 +00:00
Alan Modra
5dd0794dca
Branch hints for Pentium4 as insn modifiers, and some minor tweaks
...
to formatting.
2001-06-10 14:07:12 +00:00
Alan Modra
cb9401fc47
* config/tc-i386.c (md_assemble): Handle Pentium4 branch hints.
...
<JumpByte, JumpDword insn output>: Remove dead code.
2001-06-06 10:23:39 +00:00
Alan Modra
b58c9faf2f
From 2.11 branch 2001-03-30 Richard Henderson <rth@redhat.com>
...
* config/tc-i386.c (md_convert_frag): Don't die on local symbols
that have been finalized.
2001-05-24 23:52:22 +00:00
Alan Modra
9fcc94b611
Fix dwarf2_emit_insn calls when frag_var breaks things.
...
Put back an old entry in ChangeLog-9899, deleted when ChangeLog split.
2001-05-16 01:08:21 +00:00
Alan Modra
636c26b044
* config/tc-i386.c (i386_displacement): Call as_bad for bad GOTOFF
...
expressions rather than triggering an assert.
2001-05-03 01:08:44 +00:00
Alan Modra
93c2a809af
Prepare for multi-pass relaxation.
2001-03-30 00:06:10 +00:00
Alan Modra
551c1ca176
Accept an absolute expression for index scale factor.
2001-03-25 05:57:09 +00:00
Alan Modra
2e98d2de04
Fix register name printed in warning message.
2001-03-19 11:28:20 +00:00
Alan Modra
f3c180aedc
Support for @GOTOFF in .long expressions.
2001-03-13 04:37:13 +00:00
Nick Clifton
f7e42eb4af
Fix copyright notices
2001-03-08 23:24:26 +00:00
Alan Modra
1ae12ab72a
* config/tc-i386.c (struct _i386_insn): Rename disp_reloc to reloc.
...
(md_assemble [smallest displacement]): Use correct field of i.op[] union.
(md_assemble [JumpInterSegment output]): Use correct i.disp_reloc[].
(md_assemble [immediate output]): Likewise.
2001-03-07 02:52:26 +00:00
Andreas Jaeger
7c44d1d360
2001-02-28 Andreas Jaeger <aj@suse.de>, Bo Thorsen <bo@suse.de>
...
* config/tc-i386.c (tc_gen_reloc): Remove ugly hack which is not needed
anymore since we use bfd_elf_generic_reloc now.
(md_apply_fix3): Only apply hack for partial_inplace if not using RELA.
2001-02-28 12:49:40 +00:00
Andreas Jaeger
80b3ee89ae
2001-02-20 Bo Thorsen <bo@suse.de>
...
* config/tc-i386.c (tc_i386_fix_adjustable): Fix GOTPCREL GOT
entry.
2001-02-20 09:48:45 +00:00
Alan Modra
fddf5b5bc2
Handle long jumps for .code16 and .arch < 386 by using a two
...
instruction sequence consisting of a conditional jump of the
opposite sense around an unconditional jump to the target.
Add jumps/nojumps .arch modifier.
2001-02-13 12:44:19 +00:00
Jan Hubicka
23df107806
* elf64-x86-64.c (x86_64_elf_howto): Fix name of R_X86_64_GOTPCREL.
...
* tc-i386.c (i386_displacement): Fix handling of
BFD_RELOC_X86_64_GOTPCREL.
(i386_validate_fix): Likewise.
2001-02-12 16:47:15 +00:00
Kazu Hirata
e5cb08ac57
2001-01-16 Kazu Hirata <kazu@hxi.com>
...
* config/tc-i386.c: Fix formatting.
2001-01-17 23:41:35 +00:00
Kazu Hirata
bfb32b5207
2001-01-14 Kazu Hirata <kazu@hxi.com>
...
* config/tc-alpha.c: Fix formatting.
* config/tc-arc.c: Likewise.
* config/tc-arc.h: Likewise.
* config/tc-d10v.c: Likewise.
* config/tc-i370.c: Likewise.
* config/tc-i386.c: Likewise.
* config/tc-i960.c: Likewise.
* config/tc-m68k.c: Likewise.
* config/tc-ppc.c: Likewise.
* config/tc-sparc.c: Likewise.
* config/tc-tahoe.c: Likewise.
* config/tc-vax.c: Likewise.
2001-01-14 18:54:06 +00:00
Jan Hubicka
b9d79e0379
* tc-i386.h (TARGET_MACH): New macro.
...
(i386_mach): Declare.
* tc-i386.c (i386_mach): New function.
2001-01-13 23:37:57 +00:00
Jan Hubicka
e2914f484e
* i386.c (md_assemble): Check cpu_flags even for nullary instructions.
...
* i386.h (i386_optab): Fix pusha and ret templates.
* i386-dis.c (dis386_att, disx86_64_att): Fix ret, lret and iret
templates.
2001-01-13 09:05:55 +00:00
Alan Modra
6e0b89ee6c
Cure recent x86 warts.
2001-01-12 03:34:49 +00:00
Andreas Jaeger
b77a7acd1b
2001-01-08 Bo Thorsen <bo@suse.de>
...
* config/tc-i386.c (i386_immediate, i386_displacement):
GOTPCREL check fix.
2001-01-08 09:37:43 +00:00
Jan Hubicka
b96d3a207a
* configure.in: Define DEFAULT_ARCH for i386.
...
* tc-i386.c (md_assemble): Return after the error message;
move testing for 64bit operands to proper place.
* i386.exp: Add tests for presence of 32bit versus 64bit output
format; run both 64bit and 32bit tests when format is available;
add x86_64 test.
* x86_64.s: New file.
* x86_64.d: New file.
2001-01-06 12:36:04 +00:00
Jan Hubicka
7bc70a8e57
* tc-i386.c (md_assemble): Handle third byte of the opcode as prefix.
...
* i386.h (i386_optab): Make [sml]fence template to use immext field.
2001-01-05 12:30:12 +00:00
Jan Hubicka
a167610dd0
* tc-i386.c (cpu_arch): Add Pentium4 and modify sledgehammer entry.
...
* NEWS: Add note about Pentium4 support.
2001-01-04 21:27:56 +00:00
Jan Hubicka
09f131f2b6
* tc-i387.c (pi, pte, pt): Update.
...
(type_names): Add new types.
2001-01-03 16:27:41 +00:00
H.J. Lu
ec56dfb4b0
2000-12-22 H.J. Lu <hjl@gnu.org>
...
* config/tc-i386.c (reloc): Update the macro for non-bfd
assembler.
(BFD_RELOC_X86_64_GOTPCREL): Set to 0 for non-bfd assembler.
2000-12-22 20:53:35 +00:00