Bug 487887

Summary: Add Full POWER7 binutils support
Product: [Fedora] Fedora Reporter: Peter Bergner <bergner>
Component: binutilsAssignee: Nick Clifton <nickc>
Status: CLOSED RAWHIDE QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: rawhideCC: amodra, jakub, jan.kratochvil, nickc
Target Milestone: ---   
Target Release: ---   
Hardware: powerpc   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2009-03-05 13:48:17 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Attachments:
Description Flags
Full POWER7 support plus various fixes
none
Updated full POWER7 support plus various fixes
none
Fix for binutils-2.19.51.0.2 build breakage none

Description Peter Bergner 2009-02-28 20:29:19 UTC
This bugzilla will be used to submit the POWER7 binutils support for Fedora11 with eventual inclusion in RHEL6.

Comment 1 Peter Bergner 2009-03-03 05:03:11 UTC
Created attachment 333834 [details]
Full POWER7 support plus various fixes

This is a combined patch gathering all of Alan's binutils-2_19-branch checkins that added Full support for POWER7 to the branch, as well as fixes various bugs.  This patch is against the 2.19.1 branch tag.  The combined ChangeLog entry is:

bfd/
	2009-02-15  Alan Modra  <amodra.au>
	* elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
	add toc.symndx and toc.add.
	(ppc64_elf_check_relocs): Don't set htab->tls_get_addr here.
	Set up toc.add.
	(get_tls_mask): Add toc_addend param, set from toc.add.  Adjust all
	callers.
	(ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd.
	(branch_reloc_hash_match): New function, extracted from..
	(ppc64_elf_tls_optimize): ..here.
	(ppc64_elf_relocate_section): Properly set addends when optimizing
	tls sequences.  Avoid unnecessary reading and writing of insns.
	Only redo reloc when symbol changed.  Bypass symbol checks when
	using tlsld_got.
	* elf32-ppc.c (ppc_elf_tls_setup): Correct comment.
	(branch_reloc_hash_match): New function, extracted from..
	(ppc_elf_tls_optimize): ..here.
	(ppc_elf_relocate_section): Avoid unnecessary reading of insns.
	Don't clear addend on zapped __tls_get_addr reloc.

	2009-02-01  Jan Kratochvil  <jan.kratochvil>
	* elf-eh-frame.c (REQUIRE_CLEARED_RELOCS) Remove.
	(_bfd_elf_parse_eh_frame): Do not check relocations for removed FDEs.

	2009-01-26  Nathan Sidwell  <nathan>
	* elf32-ppc.c (ppc_elf_relax_section): Add space for relocs
	describing the trampolines.
	(ppc_elf_relocate_section): Update relocs to describe the
	trampolines.

	2009-01-22  Alan Modra  <amodra.au>
	PR 6832
	* dwarf2.c (find_line): Don't update stash->sec_info_ptr until
	after comp_unit_find_line call.

	2009-01-14  Alan Modra  <amodra.au>
	PR 9735
	* syms.c (_bfd_stab_section_find_nearest_line): Don't free
	saved filename, use bfd_alloc rather than bfd_malloc for it.

	2009-01-11  Jan Kratochvil  <jan.kratochvil>
	* elflink.c (_bfd_elf_section_already_linked): Handle g++-3.4
	relocations in `.gnu.linkonce.r.*' referencing its `.gnu.linkonce.t.*'.

	2008-12-11  Alan Modra  <amodra.au>
	PR 7041
	* elf64-ppc.c (func_desc_adjust): Correct logic making fake function
	descriptors.  Similarly correct making function descriptors dynamic.

	2008-11-14  Nathan Sidwell  <nathan>
	* elf.c (assign_file_positions_for_load_sections): Use header_size
	to avoid moving the load address of file headers.
	(assign_file_positions_for_load_sections): Set header_size for
	segments containing the file header.

	2008-11-13  Hans-Peter Nilsson  <hp>
	PR ld/7028
	* elf.c (assign_file_positions_for_load_sections): Allocate phrds
	with bfd_zalloc2 instead of bfd_alloc2.  For the amount, use
	the possibly-preset header-size, not the computed one.

	2008-11-13  Alan Modra  <amodra.au>
	PR 7023
	* elf.c (bfd_section_from_shdr <SHT_SYMTAB>): Fail on invalid sh_info.

	2008-11-11  Alan Modra  <amodra.au>
	PR 7012
	* dwarf2.c (find_line): Don't keep stale pointers into realloc'd
	memory.  Return on errors.  Fix memory leak.
	(_bfd_dwarf2_cleanup_debug_info): Free dwarf_str_buffer.

	2008-10-10  Nathan Froyd  <froydnj>
	* elf32-ppc.c (ppc_elf_merge_obj_attributes): Merge
	Tag_GNU_Power_ABI_Struct_Return.

	2008-10-03  Alan Modra  <amodra.au>
	* elf.c (bfd_elf_set_group_contents): Assign sh_info for ld -r when
	the signature symbol is global.
	* elflink.c (elf_link_input_bfd): Ensure group signature symbol
	is output when ld -r.  Set group sh_info when local.
	* linker.c (default_indirect_link_order): Handle group sections
	specially.

	2008-09-28  Alan Modra  <amodra.au>
	* elf.c (_bfd_elf_init_private_section_data): Tweak union copy.
	(bfd_section_from_shdr): Don't change SHT_GROUP section name.
	* elflink.c (section_signature): New function.
	(_bfd_elf_section_already_linked): Use it.

binutils/
	2008-12-04  Ben Elliston  <bje.com>
	* doc/binutils.texi (objdump): Update booke documentation.
	* NEWS: Document user-visible changes to command line options.

	2008-10-10  Nathan Froyd  <froydnj>
	* readelf.c (display_power_gnu_attribute): Decode
	Tag_GNU_Power_ABI_Struct_Return.

	2008-09-28  Alan Modra  <amodra.au>
	* objcopy.c (setup_section): Set elf_group_id.

gas/
	2009-02-26  Peter Bergner  <bergner.com>
	* config/tc-ppc.c (pre_defined_registers): Add "f32" to "f63",
	"f.32" to "f.63", "vs0" to "vs63" and "vs.0" to "vs.63".
	(parse_cpu): Extend -mpower7 to accept power7 and isel instructions.

	2009-01-09  Peter Bergner  <bergner.com>
	* config/tc-ppc.c (ppc_setup_opcodes): Remove PPC_OPCODE_NOPOWER4 test.
	Test the new "deprecated" opcode field.

	2008-12-04  Ben Elliston  <bje.com>
	* config/tc-ppc.c (parse_cpu): Remove booke64 support. Update
	usage strings.
	(ppc_setup_opcodes): Likewise, remove booke64 support.
	* doc/c-ppc.texi (PowerPC-Opts): Remove -mbooke32 and -mbooke64.
	* doc/as.texinfo (Overview): Likewise.

	2008-09-09  Peter Bergner  <bergner.com>
	* config/tc-ppc.c (ppc_setup_opcodes): Simplify POWER4/NOPOWER4 test.
	Remove POWER5 and POWER6 tests.

gas/testsuite/
	2009-02-26  Peter Bergner  <bergner.com>
	* gas/ppc/e500mc.d ("wait", "waitsrv", "waitimpl"): Add tests.
	* gas/ppc/e500mc.s: Likewise.
	* gas/ppc/power6.d ("cdtbcd", "cbcdtd", "addg6s"): Add tests.
	* gas/ppc/power6.s: Likewise.
	* gas/ppc/power7.d ("lfdpx", "mffgpr", "mftgpr"): Remove invalid tests.
	("wait", "waitsrv", "waitimpl", "divwe", "divwe.", "divweo", "divweo.",
	"divweu", "divweu.", "divweuo", "divweuo.", "bpermd", "popcntw",
	"popcntd", "ldbrx", "stdbrx", "lfiwzx", "lfiwzx", "fcfids", "fcfids.",
	"fcfidus", "fcfidus.", "fctiwu", "fctiwu.", "fctiwuz", "fctiwuz.",
	"fctidu", "fctidu.", "fctiduz", "fctiduz.", "fcfidu", "fcfidu.",
	"ftdiv", "ftdiv", "ftsqrt", "ftsqrt", "dcbtt", "dcbtstt", "dcffix",
	"dcffix.", "lbarx", "lbarx", "lbarx", "lharx", "lharx", "lharx",
	"stbcx.", "sthcx.", "fre", "fre.", "fres", "fres.", "frsqrte",
	"frsqrte.", "frsqrtes", "frsqrtes.", "isel"): Add tests.
	* gas/ppc/power7.s: Likewise.
	* gas/ppc/vsx.d: New test.
	* gas/ppc/vsx.s: Likewise.
	* gas/ppc/ppc.exp: Run it.

	2009-02-19  Peter Bergner  <bergner.com>
	* gas/ppc/e500mc.d ("lfdepx", "stfdepx"): Fix tests to expect a
	floating point register.

	2009-02-05  Peter Bergner  <bergner.com>
	* gas/ppc/booke.s ("dcbt", "dcbtst"): New tests.
	* gas/ppc/booke.d: Likewise.
	* gas/ppc/power4_32.s: Likewise.
	* gas/ppc/power4_32.d: Likewise.

	2009-01-14  Peter Bergner  <bergner.com>
	* gas/ppc/power6.s ("mtfsf", "mtfsf.", "mtfsfi", "mtfsfi."): Add tests.
	* gas/ppc/power6.d: Likewise.

	2008-12-04  Ben Elliston  <bje.com>
	* gas/ppc/booke.s: Remove booke64 instructions.
	* gas/ppc/booke.d: Update expected disassembly output.
	* gas/ppc/booke_xcoff.s: Use -mbooke/-Mbooke.
	* gas/ppc/booke_xcoff.d: Likewise.
	* gas/ppc/booke_xcoff64.d: Likewise.
	* gas/ppc/booke_xcoff64.s: Likewise.

	2008-09-09  Peter Bergner  <bergner.com>
	* gas/ppc/common.s: New test.
	* gas/ppc/common.d: Likewise.
	* gas/ppc/power4_32.s: Likewise.
	* gas/ppc/power4_32.d: Likewise.
	* gas/ppc/power6.s: Add attn, mtcr, mtcrf, mfcr, dcbz.
	* gas/ppc/power6.d: Likewise.
	* gas/ppc/ppc.exp: Run power4_32 test.

include/elf/
	2008-11-14  Nathan Sidwell  <nathan>
	* internal.h (struct elf_segment_map): Add header_size field.
 
	2008-10-10  Nathan Froyd  <froydnj>
	* ppc.h: Add Tag_GNU_Power_ABI_Struct_Return.

include/opcode/
	2009-02-26  Peter Bergner  <bergner.com>
	* ppc.h (PPC_OPCODE_POWER7): New.

	2009-01-09  Peter Bergner  <bergner.com>
	* ppc.h (struct powerpc_opcode): New field "deprecated".
	(PPC_OPCODE_NOPOWER4): Delete.

ld/
	2009-02-16  Alan Modra  <amodra.au>
	* ldlang.c (push_stat_ptr, pop_stat_ptr): New functions.
	(stat_save, stat_save_ptr): New variables.
	(lang_insert_orphan): Use push_stat_ptr and pop_stat_ptr.
	(load_symbols): Likewise.  Delete dead "bad_load" code.
	(open_input_bfds): Warn on script containing output sections.
	(lang_enter_output_section_statement): Use push_stat_ptr.
	(lang_enter_group): Likewise.
	(lang_leave_output_section_statement): Use pop_stat_ptr.
	(lang_leave_group): Likewise.
	* ldlang.h (push_stat_ptr, pop_stat_ptr): Declare.
	* ldctor.c (ldctor_build_sets): Use push_stat_ptr and pop_stat_ptr.
	* emultempl/beos.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
	* emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
	* emultempl/pep.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
	* emultempl/xtensaelf.em (ld_xtensa_insert_page_offsets): Likewise.

	2008-10-04  Alan Modra  <amodra.au>
	PR 6931
	* ldemul.c (ldemul_place_orphan): Add "constraint" param.
	* ldemul.h (ldemul_place_orphan): Update prototype.
	(struct ld_emulation_xfer_struct <place_orphan>): Likewise add param.
	* ldlang.c (unique_section_p): Make static.
	(lang_output_section_statement_lookup): Optimise creation of SPECIAL
	sections.
	(lang_insert_orphan): Add "constraint" param.  Pass to
	lang_enter_output_section_statement.
	(init_os): Don't use an existing bfd section for SPECIAL sections.
	(lang_place_orphans): Don't rename unique output sections, instead
	mark their output section statements SPECIAL.
	* ldlang.h (lang_insert_orphan): Update prototype.
	(unique_section_p): Delete.
	* emultempl/beos.em (place_orphan): Add "constraint" param.
	* emultempl/elf32.em (place_orphan): Likewise.  Don't match existing
	output sections if set.
	* emultempl/pe.em (place_orphan): Likewise.
	* emultempl/pep.em (place_orphan): Likewise.
	* emultempl/mmo.em (mmo_place_orphan): Update.
	* emultempl/spuelf.em (spu_place_special_section): Update.

	2008-10-03  Alan Modra  <amodra.au>
	PR 6931
	* ldemul.c (ldemul_place_orphan): Add "name" param.
	* ldemul.h (ldemul_place_orphan): Update prototype.
	(struct ld_emulation_xfer_struct <place_orphan>): Likewise.
	* ldlang.c (lang_place_orphans): Generate unique section names here..
	* emultempl/elf32.em (place_orphan): ..rather than here.  Don't
	directly use an existing output section statement that has no
	bfd section.
	* emultempl/pe.em (place_orphan): Likewise.
	* emultempl/pep.em (place_orphan): Likewise.
	* emultempl/beos.em (place_orphan): Adjust.
	* emultempl/spuelf.em (spu_place_special_section): Adjust
	place_orphan call.
	* emultempl/genelf.em (gld${EMULATION_NAME}_after_open): New function.
	(LDEMUL_AFTER_OPEN): Define.

	2008-09-25  Alan Modra  <amodra.au>
	* ldexp.c (fold_binary): Evaluate rhs when lhs not valid.

ld/testsuite/
	2009-02-01  Jan Kratochvil  <jan.kratochvil>
	* ld-elf/eh-group2.s: New `.cfi_lsda' referencing `.gcc_except_table'.
	* ld-elf/eh-group.exp: New test and conditional defininiton of `ELF64'.

	2009-01-26  Nathan Sidwell  <nathan>
	* ld-powerpc/powerpc.exp: Add vxworks relax testcase.
	* ld-powerpc/vxworks-relax.s, ld-powerpc/vxworks-relax.rd: New.
	* ld-powerpc/vxworks1.ld: Add .pad and .far input sections.
	* ld-powerpc/vxworks1.rd: Correct regexp for undefined symbols.

	2009-01-11  Jan Kratochvil  <jan.kratochvil>
	* ld-elf/linkoncerdiff.d, ld-elf/linkoncerdiff1.s,
	ld-elf/linkoncerdiff2.s: New.

	2008-10-10  Nathan Froyd  <froydnj>
	* ld-powerpc/attr-gnu-12-1.s: New file.
	* ld-powerpc/attr-gnu-12-2.s: New file.
	* ld-powerpc/attr-gnu-12-11.d: New file.
	* ld-powerpc/attr-gnu-12-21.d: New file.
	* ld-powerpc/powerpc.exp: Run new dump tests.

opcodes/
	2009-02-26  Peter Bergner  <bergner.com>
	* ppc-dis.c (powerpc_init_dialect): Extend -Mpower7 to disassemble
	the power7 and the isel instructions.
	* ppc-opc.c (insert_xc6, extract_xc6): New static functions.
	(insert_dm, extract_dm): Likewise.
	(XB6): Update comment to include XX2 form.
	(WC, XC6, SHW, DMEX, UIM, XX2, XX3RC, XX4, XX2_MASK, XX2UIM_MASK,
	XX2BF_MASK, XX3BF_MASK, XX3SHW_MASK, XX4_MASK, XWC_MASK, POWER7): New.
	(RemoveXX3DM): Delete.
	(powerpc_opcodes): <"lfdp", "lfdpx", "mcrxr", "mftb", "mffgpr",
	"mftgpr">: Deprecate for POWER7.
	<"fres", "fres.", "frsqrtes", "frsqrtes.", "fre", "fre.", "frsqrte",
	"frsqrte.">: Deprecate the three operand form and enable the two
	operand form for POWER7 and later.
	<"wait">: Extend to accept optional parameter.  Enable for POWER7.
	<"waitsrv", "waitimpl">: Add extended opcodes.
	<"ldbrx", "stdbrx">: Enable for POWER7.
	<"cdtbcd", "cbcdtd", "addg6s">: Add POWER6 opcodes.
	<"bpermd", "dcbtstt", "dcbtt", "dcffix.", "dcffix", "divde.", "divde",
	"divdeo.", "divdeo", "divdeu.", "divdeu", "divdeuo.", "divdeuo",
	"divwe.", "divwe", "divweo.", "divweo", "divweu.", "divweu", "divweuo.",
	"divweuo", "fcfids.", "fcfids", "fcfidu.", "fcfidu", "fcfidus.",
	"fcfidus", "fctidu.", "fctidu", "fctiduz.", "fctiduz", "fctiwu.",
	"fctiwu", "fctiwuz.", "fctiwuz", "ftdiv", "ftsqrt", "lbarx", "lfiwzx",
	"lharx", "popcntd", "popcntw", "stbcx.", "sthcx.">: Add POWER7 opcodes.
	<"lxsdux", "lxsdx", "lxvdsx", "lxvw4ux", "lxvw4x", "stxsdux", "stxsdx",
	"stxvw4ux", "stxvw4x", "xsabsdp", "xsadddp", "xscmpodp", "xscmpudp",
	"xscpsgndp", "xscvdpsp", "xscvdpsxds", "xscvdpsxws", "xscvdpuxds",
	"xscvdpuxws", "xscvspdp", "xscvsxddp", "xscvuxddp", "xsdivdp",
	"xsmaddadp", "xsmaddmdp", "xsmaxdp", "xsmindp", "xsmsubadp",
	"xsmsubmdp", "xsmuldp", "xsnabsdp", "xsnegdp", "xsnmaddadp",
	"xsnmaddmdp", "xsnmsubadp", "xsnmsubmdp", "xsrdpi", "xsrdpic",
	"xsrdpim", "xsrdpip", "xsrdpiz", "xsredp", "xsrsqrtedp", "xssqrtdp",
	"xssubdp", "xstdivdp", "xstsqrtdp", "xvabsdp", "xvabssp", "xvadddp",
	"xvaddsp", "xvcmpeqdp.", "xvcmpeqdp", "xvcmpeqsp.", "xvcmpeqsp",
	"xvcmpgedp.", "xvcmpgedp", "xvcmpgesp.", "xvcmpgesp", "xvcmpgtdp.",
	"xvcmpgtdp", "xvcmpgtsp.", "xvcmpgtsp", "xvcpsgnsp", "xvcvdpsp",
	"xvcvdpsxds", "xvcvdpsxws", "xvcvdpuxds", "xvcvdpuxws", "xvcvspdp",
	"xvcvspsxds", "xvcvspsxws", "xvcvspuxds", "xvcvspuxws", "xvcvsxddp",
	"xvcvsxdsp", "xvcvsxwdp", "xvcvsxwsp", "xvcvuxddp", "xvcvuxdsp",
	"xvcvuxwdp", "xvcvuxwsp", "xvdivdp", "xvdivsp", "xvmaddadp",
	"xvmaddasp", "xvmaddmdp", "xvmaddmsp", "xvmaxdp", "xvmaxsp",
	"xvmindp", "xvminsp", "xvmovsp", "xvmsubadp", "xvmsubasp", "xvmsubmdp",
	"xvmsubmsp", "xvmuldp", "xvmulsp", "xvnabsdp", "xvnabssp", "xvnegdp",
	"xvnegsp", "xvnmaddadp", "xvnmaddasp", "xvnmaddmdp", "xvnmaddmsp",
	"xvnmsubadp", "xvnmsubasp", "xvnmsubmdp", "xvnmsubmsp", "xvrdpi",
	"xvrdpic", "xvrdpim", "xvrdpip", "xvrdpiz", "xvredp", "xvresp",
	"xvrspi", "xvrspic", "xvrspim", "xvrspip", "xvrspiz", "xvrsqrtedp",
	"xvrsqrtesp", "xvsqrtdp", "xvsqrtsp", "xvsubdp", "xvsubsp", "xvtdivdp",
	"xvtdivsp", "xvtsqrtdp", "xvtsqrtsp", "xxland", "xxlandc", "xxlnor",
	"xxlor", "xxlxor", "xxmrghw", "xxmrglw", "xxsel", "xxsldwi", "xxspltd",
	"xxspltw", "xxswapd">: Add VSX opcodes.

	2009-02-19  Peter Bergner  <bergner.com>
	* ppc-opc.c (powerpc_opcodes) <"lfdepx", "stfdepx">: Fix the first
	operand to be a float point register (FRT/FRS).

	2009-02-05  Peter Bergner  <bergner.com>
	* ppc-opc.c: Update copyright year.
	(powerpc_opcodes) <"dcbt", "dcbtst">: Deprecate the Embedded operand
	ordering for POWER4 and later and use the correct Server ordering.

	2009-01-14  Peter Bergner  <bergner.com>
	* ppc-dis.c (print_insn_powerpc): Skip insn if it is deprecated.
	* ppc-opc.c (powerpc_opcodes) <mtfsf, mtfsf.>: Deprecate the two
	operand form and enable the four operand form for POWER6 and later.
	<mtfsfi, mtfsfi.>: Deprecate the two operand form and enable the
	three operand form for POWER6 and later.

	2009-01-09  Peter Bergner  <bergner.com>
	* ppc-opc.c (PPCNONE): Define.
	(NOPOWER4): Delete.
	(powerpc_opcodes): Initialize the new "deprecated" field.

	2008-12-04  Ben Elliston  <bje.com>
	* ppc-dis.c (powerpc_init_dialect): Do not set PPC_OPCODE_BOOKE
	for -Mbooke.
	(print_ppc_disassembler_options): Update usage.
	* ppc-opc.c (DE, DES, DEO, DE_MASK): Remove.
	(BOOKE64): Remove.
	(PPCCHLK64): Likewise.
	(powerpc_opcodes): Remove all BOOKE64 instructions.

Comment 2 Peter Bergner 2009-03-05 05:28:26 UTC
Created attachment 334093 [details]
Updated full POWER7 support plus various fixes

Talking with Nick offline, he said Fedora11 will actually be based on the 2.19
linux binutils release.  Specifically, this tarball:

    ftp://ftp.kernel.org/pub/linux/devel/binutils/binutils-2.19.51.0.2.tar.gz

That contains many of the fixes in our previous patch, so here is a reduced
patch that applies to the tarball.  I'll note I had to add one more patch which
I'll attach next which fixes the building of the unpatched tarball.  I have
sent this patch to HJ to incorporate into his next release tarball.
Here is the updated/trimmed ChangeLog:

bfd/
        2009-02-15  Alan Modra  <amodra.au>
        * elf64-ppc.c (struct _ppc64_elf_section_data): Delete t_symndx,
        add toc.symndx and toc.add.
        (ppc64_elf_check_relocs): Don't set htab->tls_get_addr here.
        Set up toc.add.
        (get_tls_mask): Add toc_addend param, set from toc.add.  Adjust all
        callers.
        (ppc64_elf_tls_setup): Set htab->tls_get_addr and tls_get_addr_fd.
        (branch_reloc_hash_match): New function, extracted from..
        (ppc64_elf_tls_optimize): ..here.
        (ppc64_elf_relocate_section): Properly set addends when optimizing
        tls sequences.  Avoid unnecessary reading and writing of insns.
        Only redo reloc when symbol changed.  Bypass symbol checks when
        using tlsld_got.
        * elf32-ppc.c (ppc_elf_tls_setup): Correct comment.
        (branch_reloc_hash_match): New function, extracted from..
        (ppc_elf_tls_optimize): ..here.
        (ppc_elf_relocate_section): Avoid unnecessary reading of insns.
        Don't clear addend on zapped __tls_get_addr reloc.

gas/
        2009-03-04  Alan Modra  <amodra.au>
        * config/tc-ppc.c (md_assemble): APUinfo only for e500.

        2009-02-26  Peter Bergner  <bergner.com>
        * config/tc-ppc.c (pre_defined_registers): Add "f32" to "f63",
        "f.32" to "f.63", "vs0" to "vs63" and "vs.0" to "vs.63".
        (parse_cpu): Extend -mpower7 to accept power7 and isel instructions.

gas/testsuite/
        2009-02-26  Peter Bergner  <bergner.com>
        * gas/ppc/e500mc.d ("wait", "waitsrv", "waitimpl"): Add tests.
        * gas/ppc/e500mc.s: Likewise.
        * gas/ppc/power6.d ("cdtbcd", "cbcdtd", "addg6s"): Add tests.
        * gas/ppc/power6.s: Likewise.
        * gas/ppc/power7.d ("lfdpx", "mffgpr", "mftgpr"): Remove invalid tests.
        ("wait", "waitsrv", "waitimpl", "divwe", "divwe.", "divweo", "divweo.",
        "divweu", "divweu.", "divweuo", "divweuo.", "bpermd", "popcntw",
        "popcntd", "ldbrx", "stdbrx", "lfiwzx", "lfiwzx", "fcfids", "fcfids.",
        "fcfidus", "fcfidus.", "fctiwu", "fctiwu.", "fctiwuz", "fctiwuz.",
        "fctidu", "fctidu.", "fctiduz", "fctiduz.", "fcfidu", "fcfidu.",
        "ftdiv", "ftdiv", "ftsqrt", "ftsqrt", "dcbtt", "dcbtstt", "dcffix",
        "dcffix.", "lbarx", "lbarx", "lbarx", "lharx", "lharx", "lharx",
        "stbcx.", "sthcx.", "fre", "fre.", "fres", "fres.", "frsqrte",
        "frsqrte.", "frsqrtes", "frsqrtes.", "isel"): Add tests.
        * gas/ppc/power7.s: Likewise.
        * gas/ppc/vsx.d: New test.
        * gas/ppc/vsx.s: Likewise.
        * gas/ppc/ppc.exp: Run it.

        2009-02-19  Peter Bergner  <bergner.com>
        * gas/ppc/e500mc.d ("lfdepx", "stfdepx"): Fix tests to expect a
        floating point register.

        2009-02-05  Peter Bergner  <bergner.com>
        * gas/ppc/booke.s ("dcbt", "dcbtst"): New tests.
        * gas/ppc/booke.d: Likewise.
        * gas/ppc/power4_32.s: Likewise.
        * gas/ppc/power4_32.d: Likewise.

include/opcode/
        2009-02-26  Peter Bergner  <bergner.com>
        * ppc.h (PPC_OPCODE_POWER7): New.

ld/
        2009-02-16  Alan Modra  <amodra.au>
        * ldlang.c (push_stat_ptr, pop_stat_ptr): New functions.
        (stat_save, stat_save_ptr): New variables.
        (lang_insert_orphan): Use push_stat_ptr and pop_stat_ptr.
        (load_symbols): Likewise.  Delete dead "bad_load" code.
        (open_input_bfds): Warn on script containing output sections.
        (lang_enter_output_section_statement): Use push_stat_ptr.
        (lang_enter_group): Likewise.
        (lang_leave_output_section_statement): Use pop_stat_ptr.
        (lang_leave_group): Likewise.
        * ldlang.h (push_stat_ptr, pop_stat_ptr): Declare.
        * ldctor.c (ldctor_build_sets): Use push_stat_ptr and pop_stat_ptr.
        * emultempl/beos.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
        * emultempl/pe.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
        * emultempl/pep.em (gld_${EMULATION_NAME}_set_symbols): Likewise.
        * emultempl/xtensaelf.em (ld_xtensa_insert_page_offsets): Likewise.

opcodes/
        2009-03-03  Peter Bergner  <bergner.com>
        * ppc-opc.c (powerpc_opcodes): Reorder the opcode table so that
        instructions from newer processors are listed before older ones.

        2009-02-26  Peter Bergner  <bergner.com>
        * ppc-dis.c (powerpc_init_dialect): Extend -Mpower7 to disassemble
        the power7 and the isel instructions.
        * ppc-opc.c (insert_xc6, extract_xc6): New static functions.
        (insert_dm, extract_dm): Likewise.
        (XB6): Update comment to include XX2 form.
        (WC, XC6, SHW, DMEX, UIM, XX2, XX3RC, XX4, XX2_MASK, XX2UIM_MASK,
        XX2BF_MASK, XX3BF_MASK, XX3SHW_MASK, XX4_MASK, XWC_MASK, POWER7): New.
        (RemoveXX3DM): Delete.
        (powerpc_opcodes): <"lfdp", "lfdpx", "mcrxr", "mftb", "mffgpr",
        "mftgpr">: Deprecate for POWER7.
        <"fres", "fres.", "frsqrtes", "frsqrtes.", "fre", "fre.", "frsqrte",
        "frsqrte.">: Deprecate the three operand form and enable the two
        operand form for POWER7 and later.
        <"wait">: Extend to accept optional parameter.  Enable for POWER7.
        <"waitsrv", "waitimpl">: Add extended opcodes.
        <"ldbrx", "stdbrx">: Enable for POWER7.
        <"cdtbcd", "cbcdtd", "addg6s">: Add POWER6 opcodes.
        <"bpermd", "dcbtstt", "dcbtt", "dcffix.", "dcffix", "divde.", "divde",
        "divdeo.", "divdeo", "divdeu.", "divdeu", "divdeuo.", "divdeuo",
        "divwe.", "divwe", "divweo.", "divweo", "divweu.", "divweu",
"divweuo.",
        "divweuo", "fcfids.", "fcfids", "fcfidu.", "fcfidu", "fcfidus.",
        "fcfidus", "fctidu.", "fctidu", "fctiduz.", "fctiduz", "fctiwu.",
        "fctiwu", "fctiwuz.", "fctiwuz", "ftdiv", "ftsqrt", "lbarx", "lfiwzx",
        "lharx", "popcntd", "popcntw", "stbcx.", "sthcx.">: Add POWER7 opcodes.
        <"lxsdux", "lxsdx", "lxvdsx", "lxvw4ux", "lxvw4x", "stxsdux", "stxsdx",
        "stxvw4ux", "stxvw4x", "xsabsdp", "xsadddp", "xscmpodp", "xscmpudp",
        "xscpsgndp", "xscvdpsp", "xscvdpsxds", "xscvdpsxws", "xscvdpuxds",
        "xscvdpuxws", "xscvspdp", "xscvsxddp", "xscvuxddp", "xsdivdp",
        "xsmaddadp", "xsmaddmdp", "xsmaxdp", "xsmindp", "xsmsubadp",
        "xsmsubmdp", "xsmuldp", "xsnabsdp", "xsnegdp", "xsnmaddadp",
        "xsnmaddmdp", "xsnmsubadp", "xsnmsubmdp", "xsrdpi", "xsrdpic",
        "xsrdpim", "xsrdpip", "xsrdpiz", "xsredp", "xsrsqrtedp", "xssqrtdp",
        "xssubdp", "xstdivdp", "xstsqrtdp", "xvabsdp", "xvabssp", "xvadddp",
        "xvaddsp", "xvcmpeqdp.", "xvcmpeqdp", "xvcmpeqsp.", "xvcmpeqsp",
        "xvcmpgedp.", "xvcmpgedp", "xvcmpgesp.", "xvcmpgesp", "xvcmpgtdp.",
        "xvcmpgtdp", "xvcmpgtsp.", "xvcmpgtsp", "xvcpsgnsp", "xvcvdpsp",
        "xvcvdpsxds", "xvcvdpsxws", "xvcvdpuxds", "xvcvdpuxws", "xvcvspdp",
        "xvcvspsxds", "xvcvspsxws", "xvcvspuxds", "xvcvspuxws", "xvcvsxddp",
        "xvcvsxdsp", "xvcvsxwdp", "xvcvsxwsp", "xvcvuxddp", "xvcvuxdsp",
        "xvcvuxwdp", "xvcvuxwsp", "xvdivdp", "xvdivsp", "xvmaddadp",
        "xvmaddasp", "xvmaddmdp", "xvmaddmsp", "xvmaxdp", "xvmaxsp",
        "xvmindp", "xvminsp", "xvmovsp", "xvmsubadp", "xvmsubasp", "xvmsubmdp",
        "xvmsubmsp", "xvmuldp", "xvmulsp", "xvnabsdp", "xvnabssp", "xvnegdp",
        "xvnegsp", "xvnmaddadp", "xvnmaddasp", "xvnmaddmdp", "xvnmaddmsp",
        "xvnmsubadp", "xvnmsubasp", "xvnmsubmdp", "xvnmsubmsp", "xvrdpi",
        "xvrdpic", "xvrdpim", "xvrdpip", "xvrdpiz", "xvredp", "xvresp",
        "xvrspi", "xvrspic", "xvrspim", "xvrspip", "xvrspiz", "xvrsqrtedp",
        "xvrsqrtesp", "xvsqrtdp", "xvsqrtsp", "xvsubdp", "xvsubsp", "xvtdivdp",
        "xvtdivsp", "xvtsqrtdp", "xvtsqrtsp", "xxland", "xxlandc", "xxlnor",
        "xxlor", "xxlxor", "xxmrghw", "xxmrglw", "xxsel", "xxsldwi", "xxspltd",
        "xxspltw", "xxswapd">: Add VSX opcodes.

        2009-02-19  Peter Bergner  <bergner.com>
        * ppc-opc.c (powerpc_opcodes) <"lfdepx", "stfdepx">: Fix the first
        operand to be a float point register (FRT/FRS).

        2009-02-05  Peter Bergner  <bergner.com>
        * ppc-opc.c: Update copyright year.
        (powerpc_opcodes) <"dcbt", "dcbtst">: Deprecate the Embedded operand
        ordering for POWER4 and later and use the correct Server ordering.

Comment 3 Peter Bergner 2009-03-05 05:29:35 UTC
Created attachment 334094 [details]
Fix for binutils-2.19.51.0.2 build breakage

This is the patch to fix the build breakage when building binutils-2.19.51.0.2
configured with --enable-targets=all:

        * elf32-lm32.c (lm32_elf_relocate_section): Add an argument for
        error ignored.

Comment 4 Nick Clifton 2009-03-05 13:48:17 UTC
Hi Peter,

  Thanks for the patches.  I have integrated them into one patch and added them to the sources.  If you download the latest binutils source rpm (2.19.51.0.2.16) you should find them present.

Cheers
  Nick