This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports 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] tile: fix type of prfpregset_t in <sys/procfs.h>


On 9/6/2012 12:25 PM, Carlos O'Donell wrote:
> On 9/6/2012 11:43 AM, Chris Metcalf wrote:
>> The previous dummy definition (as type int) was fine in general, since
>> tile doesn't have floating-point registers, but it confused gdb's
>> configure, leading to later compile errors.  This change also makes
>> prfpregset_t parallel to prgregset_t, which seems like generally the
>> right thing regardless of the non-existence of the actual registers :-)
>> ---
>> Carlos, we should backport this to 2.16 and probably 2.15, so gdb will be
>> able to build without hackery against it.  Would you like me to integrate
>> the change to the branch(es)?
> If the type hasn't changed size then yes, please backport and check to 2.16 and 2.15.

The type does change size for tilegx64 (not tilepro or tilegx32).  What is
the concern with prfpregset_t's size changing?  The type was never used for
anything before as far as I'm aware, other than gdb, and gdb 7.5 is the
first release of gdb that includes  tilegx support.  It requires the
correct, new type.

Interestingly, in glibc itself the type is only used as "prfpregset_t *",
so those references to the type will not change size, being a pointer
either way.  (The references are in nptl_db, as an argument to
ps_lgetfpregs(), ps_lsetfpregs(), td_thr_getfpregs(), and td_thr_setfpregs().)

>>  ports/ChangeLog.tile                            |    2 ++
>>  ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h |    2 +-
>>  2 files changed, 3 insertions(+), 1 deletion(-)
>>
>> diff --git a/ports/ChangeLog.tile b/ports/ChangeLog.tile
>> index f02c9d8..a289d24 100644
>> --- a/ports/ChangeLog.tile
>> +++ b/ports/ChangeLog.tile
>> @@ -1,5 +1,7 @@
>>  2012-09-06  Chris Metcalf  <cmetcalf@tilera.com>
>>  
>> +	* sysdeps/unix/sysv/linux/tile/sys/procfs.h: Fix type of prfpregset_t.
>> +
>>  	[BZ #14237]
>>  	* sysdeps/tile/__tls_get_addr.S: Fix TLS module initialization bug.
>>  
>> diff --git a/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h b/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h
>> index 295ae50..f533eb1 100644
>> --- a/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h
>> +++ b/ports/sysdeps/unix/sysv/linux/tile/sys/procfs.h
>> @@ -113,7 +113,7 @@ typedef void *psaddr_t;
>>  typedef elf_gregset_t prgregset_t;
>>  
>>  /* Provide dummy declaration here; we don't have FP registers. */
>> -typedef int prfpregset_t;
>> +typedef elf_fpregset_t prfpregset_t;
>>  
>>  /* We don't have any differences between processes and threads,
>>     therefore have only one PID type.  */
>>
> Cheers,
> Carlos.

-- 
Chris Metcalf, Tilera Corp.
http://www.tilera.com


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