The upstream binutils (2.27 and trunk) is almost complete for POWER9, but unfortunately the changes expected to land in DD2 hardware have not yet been set in stone. With that said, the remaining changes are fairly small and will only affect user space; there are no kernel dependencies on the unresolved architecture changes.
== Comment: #3 - Peter E. Bergner <email address hidden> - 2016-11-01 10:43:16 ==
Complete POWER9 support is upstream and exists in trunk and the binutils 2.27 and 2.26 release branches.
== Comment: #4 - Breno Henrique Leitao <email address hidden> - 2016-11-21 12:45:53 ==
(In reply to comment #3)
> Complete POWER9 support is upstream and exists in trunk and the binutils
> 2.27 and 2.26 release branches.
Binutils version 2.27 is already in Ubuntu 17.04. Is there anything else required?
== Comment: #5 - William J. Schmidt <email address hidden> - 2016-11-21 13:32:50 ==
(In reply to comment #4)
> (In reply to comment #3)
> > Complete POWER9 support is upstream and exists in trunk and the binutils
> > 2.27 and 2.26 release branches.
>
> Binutils version 2.27 is already in Ubuntu 17.04. Is there anything else
> required?
Well, as long as they pick up the backported fixes, nothing else is required. That's what this feature is there to ensure.
> Well, as long as they pick up the backported fixes, nothing else is
> required. That's what this feature is there to ensure.
Do you know, at this time, which are the fixes that will be requested to be backported?
== Comment: #7 - William J. Schmidt <email address hidden> - 2016-11-28 09:17:01 ==
(In reply to comment #6)
> Hi,
>
> > Well, as long as they pick up the backported fixes, nothing else is
> > required. That's what this feature is there to ensure.
>
> Do you know, at this time, which are the fixes that will be requested to be
> backported?
Peter, can you please respond to Breno's question?
== Comment: #8 - Peter E. Bergner <email address hidden> - 2016-11-29 12:08:11 ==
CC'ing Alan in case he has an extra input.
Looking through the binutils-2_27-branch log, I see the following commits we would want picked up:
Fixes a gdb segfault if a section named .opd is found in ELFv2 binaries.
* elf64-ppc.c (synthetic_opd): New static var. (compare_symbols): Don't treat symbols in .opd specially for ELFv2. (ppc64_elf_get_synthetic_symtab): Likewise. Comment.
commit 2a0b8eb7a7974ff7605cb3ba5dffa5abef286ffa
Author: Alan Modra <email address hidden>
Date: Tue Aug 30 20:57:32 2016 +0930
ppc apuinfo for spe parsed incorrectly
apuinfo saying SPE resulted in mach = bfd_mach_ppc_vle due to a
missing break.
commit 7f27ccfcd5b86a6517a5c01d1cc29e87ac39c13c
Author: Alan Modra <email address hidden>
Date: Fri Aug 19 11:06:41 2016 +0930
PR 20472, PowerPC64 ifunc confusion
This patch fixes quite a lot of confusion in allocate_dynrelocs over
ifuncs. Function descriptors make ELFv1 quite different to ELFv2.
PR 20472
* elf64-ppc.c (ppc64_elf_before_check_relocs): Tweak abiversion test. (readonly_dynrelocs): Comment fix. (global_entry_stub): New function. (ppc64_elf_adjust_dynamic_symbol): Tweak abiversion test. Match
ELFv2 code deciding on dynamic relocs vs. global entry stubs to
that in size_global_entry_stubs, handling ifunc too. Delete dead
weak sym code. (allocate_dynrelocs): Ensure dyn_relocs field is cleared when no dyn_relocs are needed. Correct handling of ifunc dyn_relocs.
Tidy ELIMINATE_COPY_RELOCS code, only setting dynindx for undefweak syms. Expand and correct comments. (size_global_entry_stubs): Ensure symbol is defined. (ppc64_elf_relocate_section): Match condition under which dyn_relocs are emitted to that in allocate_dynrelocs.
commit e4aa8a9f60398eacd04398bcc51d7be5f93ed4eb
Author: Alan Modra <email address hidden>
Date: Thu Aug 11 12:30:52 2016 +0930
PowerPC64 ELFv1 undefined weak functions
Undefined weak functions, like __gmon_start__, were not being made
dynamic or emitting plt call code. While the behaviour of undefined
weak symbols is not defined in the ELF standard, the intention on
powerpc64 was to make it possible to link without a definition of such
symbols and at run time behave the same as if a definition was found
at link time in a shared library.
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Don't exit with non_got_ref true in any case where we could have generated dynbss
copies but decide not to do so.
The upstream binutils (2.27 and trunk) is almost complete for POWER9, but unfortunately the changes expected to land in DD2 hardware have not yet been set in stone. With that said, the remaining changes are fairly small and will only affect user space; there are no kernel dependencies on the unresolved architecture changes.
== Comment: #3 - Peter E. Bergner <email address hidden> - 2016-11-01 10:43:16 ==
Complete POWER9 support is upstream and exists in trunk and the binutils 2.27 and 2.26 release branches.
== Comment: #4 - Breno Henrique Leitao <email address hidden> - 2016-11-21 12:45:53 ==
(In reply to comment #3)
> Complete POWER9 support is upstream and exists in trunk and the binutils
> 2.27 and 2.26 release branches.
Binutils version 2.27 is already in Ubuntu 17.04. Is there anything else required?
== Comment: #5 - William J. Schmidt <email address hidden> - 2016-11-21 13:32:50 ==
(In reply to comment #4)
> (In reply to comment #3)
> > Complete POWER9 support is upstream and exists in trunk and the binutils
> > 2.27 and 2.26 release branches.
>
> Binutils version 2.27 is already in Ubuntu 17.04. Is there anything else
> required?
Well, as long as they pick up the backported fixes, nothing else is required. That's what this feature is there to ensure.
== Comment: #6 - Breno Henrique Leitao <email address hidden> - 2016-11-24 06:52:51 ==
Hi,
> Well, as long as they pick up the backported fixes, nothing else is
> required. That's what this feature is there to ensure.
Do you know, at this time, which are the fixes that will be requested to be backported?
== Comment: #7 - William J. Schmidt <email address hidden> - 2016-11-28 09:17:01 ==
(In reply to comment #6)
> Hi,
>
> > Well, as long as they pick up the backported fixes, nothing else is
> > required. That's what this feature is there to ensure.
>
> Do you know, at this time, which are the fixes that will be requested to be
> backported?
Peter, can you please respond to Breno's question?
== Comment: #8 - Peter E. Bergner <email address hidden> - 2016-11-29 12:08:11 ==
CC'ing Alan in case he has an extra input.
Looking through the binutils- 2_27-branch log, I see the following commits we would want picked up:
commit 799b679496c98eb 1f31625b00bb5db 67a6f608d7
Author: Peter Bergner <email address hidden>
Date: Fri Sep 16 16:17:46 2016 -0500
Backport lastest POWER9 support to match final ISA 3.0 documentation.
opcodes/
2016- 09-14 Peter Bergner <email address hidden>
Apply from master.
* ppc-opc.c (powerpc_opcodes) <slbiag>: New mnemonic.
<addex. , brd, brh, brw, lwzmx, nandxor, rldixor, setbool,
<cp_ abort>: Rename mnemonic from ...
<cpabort> : ...to this.
<copy_ first>: Rename mnemonic from ...
<paste_ last>: Rename mnemonic from ...
<paste. >: ...to this.
xor3>: Delete mnemonics.
<setb>: Change to a X form instruction.
<sync>: Change to 1 operand form.
<copy>: Delete mnemonic.
<copy>: ...to this.
<paste, paste.>: Delete mnemonics.
gas/
2016- 09-14 Peter Bergner <email address hidden>
Apply from master.
* testsuite/ gas/ppc/ power9. d <slbiag, cpabort> New tests.
<addex. , brd, brh, brw, lwzmx, nandxor, rldixor, setbool, gas/ppc/ power9. s: Likewise.
xor3, cp_abort, copy_first, paste, paste_last, sync>: Remove tests.
<copy, paste.>: Update tests.
* testsuite/
commit c6a7c521c14e0cc 188ccc0388e0d5d 21c2042c94
Author: Alan Modra <email address hidden>
Date: Thu Sep 1 14:56:52 2016 +0930
Don't treat .opd section specially when ELFv2
Fixes a gdb segfault if a section named .opd is found in ELFv2 binaries.
* elf64-ppc.c (synthetic_opd): New static var.
(compare_ symbols) : Don't treat symbols in .opd specially for ELFv2.
(ppc64_ elf_get_ synthetic_ symtab) : Likewise. Comment.
commit 2a0b8eb7a7974ff 7605cb3ba5dffa5 abef286ffa
Author: Alan Modra <email address hidden>
Date: Tue Aug 30 20:57:32 2016 +0930
ppc apuinfo for spe parsed incorrectly
apuinfo saying SPE resulted in mach = bfd_mach_ppc_vle due to a
missing break.
PR 20531 ppc_set_ arch): Add missing "break".
* elf32-ppc.c (_bfd_elf_
commit 7f27ccfcd5b86a6 517a5c01d1cc29e 87ac39c13c
Author: Alan Modra <email address hidden>
Date: Fri Aug 19 11:06:41 2016 +0930
PR 20472, PowerPC64 ifunc confusion
This patch fixes quite a lot of confusion in allocate_dynrelocs over
ifuncs. Function descriptors make ELFv1 quite different to ELFv2.
PR 20472 elf_before_ check_relocs) : Tweak abiversion test.
(readonly_ dynrelocs) : Comment fix.
(global_ entry_stub) : New function.
(ppc64_ elf_adjust_ dynamic_ symbol) : Tweak abiversion test. Match entry_stubs, handling ifunc too. Delete dead
(allocate_ dynrelocs) : Ensure dyn_relocs field is cleared when no
dyn_ relocs are needed. Correct handling of ifunc dyn_relocs. COPY_RELOCS code, only setting dynindx for
undefweak syms. Expand and correct comments.
(size_ global_ entry_stubs) : Ensure symbol is defined.
(ppc64_ elf_relocate_ section) : Match condition under which
dyn_ relocs are emitted to that in allocate_dynrelocs.
* elf64-ppc.c (ppc64_
ELFv2 code deciding on dynamic relocs vs. global entry stubs to
that in size_global_
weak sym code.
Tidy ELIMINATE_
commit e4aa8a9f60398ea cd04398bcc51d7b e5f93ed4eb
Author: Alan Modra <email address hidden>
Date: Thu Aug 11 12:30:52 2016 +0930
PowerPC64 ELFv1 undefined weak functions
Undefined weak functions, like __gmon_start__, were not being made
dynamic or emitting plt call code. While the behaviour of undefined
weak symbols is not defined in the ELF standard, the intention on
powerpc64 was to make it possible to link without a definition of such
symbols and at run time behave the same as if a definition was found
at link time in a shared library.
* elf64-ppc.c (ppc64_ elf_adjust_ dynamic_ symbol) : Don't exit with
non_ got_ref true in any case where we could have generated dynbss
copies but decide not to do so.