[v5,11/12,PowerPC] Reject tdescs with VSX and no FPU or Altivec

Message ID 20181022223242.7858-12-pedromfc@linux.ibm.com
State New, archived
Headers

Commit Message

Pedro Franco de Carvalho Oct. 22, 2018, 10:32 p.m. UTC
  Currently rs6000_gdbarch_init will accept a tdesc with the
"org.gnu.gdb.power.vsx" feature but without the
"org.gnu.gdb.power.altivec" or "org.gnu.gdb.power.fpu".

It isn't clear from the standard features documentation that these are
requirements.  However, these tdescs would cause trouble in the VSX
pseudo-register functions, so this patch will cause them to be
rejected.

gdb/ChangeLog:
YYYY-MM-DD  Pedro Franco de Carvalho  <pedromfc@linux.ibm.com>

	* rs6000-tdep.c (rs6000_gdbarch_init): Reject tdescs with vsx but
	without altivec or fpu.
---
 gdb/rs6000-tdep.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
  

Comments

Pedro Alves Oct. 23, 2018, 4:05 p.m. UTC | #1
Forgot to press send on this one... :-)

On 10/22/2018 11:32 PM, Pedro Franco de Carvalho wrote:
> Currently rs6000_gdbarch_init will accept a tdesc with the
> "org.gnu.gdb.power.vsx" feature but without the
> "org.gnu.gdb.power.altivec" or "org.gnu.gdb.power.fpu".
> 
> It isn't clear from the standard features documentation that these are
> requirements.  

Is that something that should be fixed?

Thanks,
Pedro Alves
  
Pedro Franco de Carvalho Oct. 23, 2018, 6:45 p.m. UTC | #2
Pedro Alves <palves@redhat.com> writes:

>> It isn't clear from the standard features documentation that these are
>> requirements.  
>
> Is that something that should be fixed?

Yes, I can update the documentation to make this a requiremnt.  Can I do
it in a separate patch?

Thanks!

--
Pedro Franco de Carvalho
  
Pedro Alves Oct. 25, 2018, 3:45 p.m. UTC | #3
On 10/23/2018 07:45 PM, Pedro Franco de Carvalho wrote:
> Pedro Alves <palves@redhat.com> writes:
> 
>>> It isn't clear from the standard features documentation that these are
>>> requirements.  
>>
>> Is that something that should be fixed?
> 
> Yes, I can update the documentation to make this a requiremnt.  Can I do
> it in a separate patch?
Sure!

Thanks,
Pedro Alves
  

Patch

diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 54591dbff6..7e41d8ff73 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -6042,7 +6042,8 @@  rs6000_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
 	    valid_p &= tdesc_numbered_register (feature, tdesc_data,
 						PPC_VSR0_UPPER_REGNUM + i,
 						vsx_regs[i]);
-	  if (!valid_p)
+
+	  if (!valid_p || !have_fpu || !have_altivec)
 	    {
 	      tdesc_data_cleanup (tdesc_data);
 	      return NULL;