|
Message-ID: <YoXFGwbFzvBsaaJl@antec> Date: Thu, 19 May 2022 13:18:35 +0900 From: Stafford Horne <shorne@...il.com> To: Florian Fainelli <f.fainelli@...il.com> Cc: musl@...ts.openwall.com, dalias@...c.org, thomas.petazzoni@...tlin.com, stefan.kristiansson@...nalahti.fi Subject: Re: [PATCH v2] Define user_regs, elf_greg_t and elf_fpregset_t for or1k On Tue, May 17, 2022 at 02:58:26PM -0700, Florian Fainelli wrote: > The OpenRISC architecture is currently missing a definition of its > user_regs structure, elf_greg_t and elf_fpregset_t as well as ELF_NGREG, > add those. > --- > Changes in v2: > > - Follow Stafford's recommendations based upon glibc > > arch/or1k/bits/user.h | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/or1k/bits/user.h b/arch/or1k/bits/user.h > index e69de29bb2d1..227f022e2fec 100644 > --- a/arch/or1k/bits/user.h > +++ b/arch/or1k/bits/user.h > @@ -0,0 +1,10 @@ > +struct user_regs { > + unsigned long gpr[32]; > + unsigned long pc; > + unsigned long sr; > +}; > + > +#define ELF_NGREG 32 > +typedef unsigned long elf_greg_t, elf_gregset_t[ELF_NGREG]; > + I think ELF_NGREG should be 34 here. On glibc we defined this like this, but I am beginning to doubt it is correct: (sys/ucontext.h) #define __NGREG 32 (bits/procfs.h) #define ELF_NGREG __NGREG typedef elf_greg_t elf_gregset_t[34]; In linux and some other architectures they define ELF_NGREG as below (so that would mean 34 is right): #define ELF_NGREG (sizeof (struct user_regs_struct) / sizeof (elf_greg_t)) In linux we define this, so yours matches. (arch/openrisc/include/uapi/asm/ptrace.h) truct user_regs_struct { /* GPR R0-R31... */ unsigned long gpr[32]; unsigned long pc; unsigned long sr; }; > +typedef elf_greg_t elf_fpregset_t[ELF_NGREG]; This should be: typedef elf_greg_t elf_fpregset_t[32]; However, I have tested all of glibc with the definition as above with ELF_NGREG 32 and elf_gregset_t[34]. But, I think I will like to change that and test again. So in the end I think we should use this. #define ELF_NGREG (sizeof (struct user_regs) / sizeof (elf_greg_t)) typedef elf_greg_t elf_gregset_t[ELF_NGREG]; typedef elf_greg_t elf_fpregset_t[32]; Side Point I am not sure why cpulimit needs elf_gregset_t anyway. I see it includes procfs.h, I removed that include and it seems to compile ok. -Stafford
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.