This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Better checking of ISA/ASE/ABI options for MIPS gas


Eric Christopher wrote:
> >
> >I'm somewhat uncertain about the ABI incompatibility warning for
> >wrong FP register widths, does it make sense to force a different
> >FP register width in the assembler in some cases?
> >
> 
> No. No more reading the minds of programmers. :)

Well, for GP registers we do even as_bad().

> btw, the indention on the code in the diff is wacky. I assume it's  
> correct in your files?

I think so.

> >@@ -1031,7 +1052,13 @@ static int validate_mips_insn (const str
> > struct mips_cpu_info
> > {
> >   const char *name;           /* CPU or ISA name.  */
> >-  int is_isa;                 /* Is this an ISA?  (If 0, a CPU.) */
> >+  int flags;
> >+#define MIPS_CPU_IS_ISA		0x0001	/* Is this an ISA?  (If 0, a 
> >CPU.) */
> >+#define MIPS_CPU_ASE_SMARTMIPS	0x0002	/* CPU implements SmartMIPS  
> >ASE */
> >+#define MIPS_CPU_ASE_DSP	0x0004	/* CPU implements DSP ASE */
> >+#define MIPS_CPU_ASE_MT		0x0008	/* CPU implements MT ASE */
> >+#define MIPS_CPU_ASE_MIPS3D	0x0010	/* CPU implements MIPS-3D ASE */
> >+#define MIPS_CPU_ASE_MDMX	0x0020	/* CPU implements MDMX ASE */
> >   int isa;                    /* ISA level.  */
> >   int cpu;                    /* CPU number (default CPU if ISA).  */
> > };
> 
> Ugh. Can you haul these defines out somewhere else?

Sure.

> And why change the table to include default extensions for the cpu?

To handle them the same way as the ISA. This is for ASEs which are
always implemented in that particular CPU.

> >   /* End of GCC-shared inference code.  */
> 
> You need to make sure that this shared code is the same logic in both  
> places - preferably before committing this.

Yes. Do you think the logic is ok (modulo the FP ABI warning)?

> >+#if 0 /* XXX FIXME */
> >+  /* 32 bit code with 64 bit FP registers.  */
> >+  if (!file_mips_fp32 && ABI_NEEDS_32BIT_REGS (mips_abi))
> >+    elf_elfheader (stdoutput)->e_flags |= ???;
> >+#endif
> > }
> >
> 
> ???

Same like for MIPS3D, we should tell the linker this object is (possibly)
incompatible to other O32 objects with 32bit FP regs.


Thiemo


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]