Message ID | 1562826026-158569-1-git-send-email-hongzhi.song@windriver.com |
---|---|
State | Changes Requested |
Headers | show |
Series | [V2] getrlimit03: adjust a bit of code to compatiable with mips32 | expand |
----- Original Message ----- > Error info: > getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = > ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff > > According to kernel code: [arch/mips/include/uapi/asm/resource.h] > RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. > > /* > * SuS says limits have to be unsigned. > * Which makes a ton more sense anyway, > * but we keep the old value on MIPS32, > * for compatibility: > */ > #ifndef __mips64 > # define RLIM_INFINITY 0x7fffffffUL > #endif > > Adding conditional statement about mips to fix this. > > Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> > --- > testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- > 1 file changed, 8 insertions(+), 2 deletions(-) > > diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > index e4d56c4..1903558 100644 > --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > @@ -61,7 +61,13 @@ struct rlimit_ulong { > unsigned long rlim_cur; > unsigned long rlim_max; > }; > +#ifdef __mips > +#ifndef __mips64 > +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > +#else > const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > +#endif > +#endif Hi, This will break every other arch, because it's now undefined everywhere except mips. > > static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) > { > @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t > val_u64, > { > if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || > (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { > - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " > __NR_getrlimit_ulong_str "(%d) had %s = %lx", > - resource, kind, val_u64, > + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu > RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " > __NR_getrlimit_ulong_str "(%d) had %s = %lx", > + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, I suggest to split it into another tst_res() message, line above is nearly 200 characters. Regards, Jan > kind, val_u64, > resource, kind, val_ul); > return -1; > } > -- > 2.8.1 > > > -- > Mailing list info: https://lists.linux.it/listinfo/ltp >
On 7/11/19 3:48 PM, Jan Stancek wrote: > > ----- Original Message ----- >> Error info: >> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = >> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff >> >> According to kernel code: [arch/mips/include/uapi/asm/resource.h] >> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. >> >> /* >> * SuS says limits have to be unsigned. >> * Which makes a ton more sense anyway, >> * but we keep the old value on MIPS32, >> * for compatibility: >> */ >> #ifndef __mips64 >> # define RLIM_INFINITY 0x7fffffffUL >> #endif >> >> Adding conditional statement about mips to fix this. >> >> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> >> --- >> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- >> 1 file changed, 8 insertions(+), 2 deletions(-) >> >> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >> index e4d56c4..1903558 100644 >> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >> @@ -61,7 +61,13 @@ struct rlimit_ulong { >> unsigned long rlim_cur; >> unsigned long rlim_max; >> }; >> +#ifdef __mips >> +#ifndef __mips64 >> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >> +#else >> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >> +#endif >> +#endif > Hi, > > This will break every other arch, because it's now undefined everywhere except mips. Is there a good way to filter mips32? I tried 65 #ifdef __mips 66 #ifndef __mips64 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; 68 #endif 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; 70 #else 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; 72 #endif but mips32 thinks the RLIM_INFINITY_UL micro is redefined. > >> >> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) >> { >> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t >> val_u64, >> { >> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || >> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { >> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " >> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >> - resource, kind, val_u64, >> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu >> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " >> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, > I suggest to split it into another tst_res() message, line above is nearly 200 characters. Sorry, I shouldn't append debug code to patch. --Hongzhi > > Regards, > Jan > >> kind, val_u64, >> resource, kind, val_ul); >> return -1; >> } >> -- >> 2.8.1 >> >> >> -- >> Mailing list info: https://lists.linux.it/listinfo/ltp >>
on 2019/07/12 13:46, Hongzhi, Song wrote: > > On 7/11/19 3:48 PM, Jan Stancek wrote: >> >> ----- Original Message ----- >>> Error info: >>> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = >>> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff >>> >>> According to kernel code: [arch/mips/include/uapi/asm/resource.h] >>> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. >>> >>> /* >>> * SuS says limits have to be unsigned. >>> * Which makes a ton more sense anyway, >>> * but we keep the old value on MIPS32, >>> * for compatibility: >>> */ >>> #ifndef __mips64 >>> # define RLIM_INFINITY 0x7fffffffUL >>> #endif >>> >>> Adding conditional statement about mips to fix this. >>> >>> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> >>> --- >>> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- >>> 1 file changed, 8 insertions(+), 2 deletions(-) >>> >>> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>> index e4d56c4..1903558 100644 >>> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>> @@ -61,7 +61,13 @@ struct rlimit_ulong { >>> unsigned long rlim_cur; >>> unsigned long rlim_max; >>> }; >>> +#ifdef __mips >>> +#ifndef __mips64 >>> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>> +#else >>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>> +#endif >>> +#endif >> Hi, >> >> This will break every other arch, because it's now undefined >> everywhere except mips. > > > Is there a good way to filter mips32? > > I tried > > 65 #ifdef __mips > 66 #ifndef __mips64 > 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > 68 #endif > 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > 70 #else > 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > 72 #endif > > but mips32 thinks the RLIM_INFINITY_UL micro is redefined. Hi hongzhi You redefine RLIM_INFINITY_UL macro indeed when on mips32 because line 67 and 69. It should be as below: +#ifdef __mips +#ifndef __mips64 +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; #endif +#else +const unsigned long RLIM_INFINITY_UL = ULONG_MAX; +#endif > > >> >>> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) >>> { >>> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t >>> val_u64, >>> { >>> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || >>> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { >>> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " >>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>> - resource, kind, val_u64, >>> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d >>> ULONG_MAX = %lu >>> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " >>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, >>> RLIM_INFINITY_UL, resource, >> I suggest to split it into another tst_res() message, line above is >> nearly 200 characters. > > > Sorry, I shouldn't append debug code to patch. > > --Hongzhi > > >> >> Regards, >> Jan >> >>> kind, val_u64, >>> resource, kind, val_ul); >>> return -1; >>> } >>> -- >>> 2.8.1 >>> >>> >>> -- >>> Mailing list info: https://lists.linux.it/listinfo/ltp >>> >
On 7/12/19 2:00 PM, Yang Xu wrote: > on 2019/07/12 13:46, Hongzhi, Song wrote: >> >> On 7/11/19 3:48 PM, Jan Stancek wrote: >>> >>> ----- Original Message ----- >>>> Error info: >>>> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = >>>> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff >>>> >>>> According to kernel code: [arch/mips/include/uapi/asm/resource.h] >>>> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. >>>> >>>> /* >>>> * SuS says limits have to be unsigned. >>>> * Which makes a ton more sense anyway, >>>> * but we keep the old value on MIPS32, >>>> * for compatibility: >>>> */ >>>> #ifndef __mips64 >>>> # define RLIM_INFINITY 0x7fffffffUL >>>> #endif >>>> >>>> Adding conditional statement about mips to fix this. >>>> >>>> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> >>>> --- >>>> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- >>>> 1 file changed, 8 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> index e4d56c4..1903558 100644 >>>> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> @@ -61,7 +61,13 @@ struct rlimit_ulong { >>>> unsigned long rlim_cur; >>>> unsigned long rlim_max; >>>> }; >>>> +#ifdef __mips >>>> +#ifndef __mips64 >>>> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>>> +#else >>>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>>> +#endif >>>> +#endif >>> Hi, >>> >>> This will break every other arch, because it's now undefined >>> everywhere except mips. >> >> >> Is there a good way to filter mips32? >> >> I tried >> >> 65 #ifdef __mips >> 66 #ifndef __mips64 >> 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >> 68 #endif >> 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >> 70 #else >> 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >> 72 #endif >> >> but mips32 thinks the RLIM_INFINITY_UL micro is redefined. > > Hi hongzhi > > You redefine RLIM_INFINITY_UL macro indeed when on mips32 because line > 67 and 69. > > It should be as below: > +#ifdef __mips > +#ifndef __mips64 > +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > #endif > +#else > +const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > +#endif > Thanks for your reply. But this will exclude mips64. --Hongzhi > > >> >> >>> >>>> static int getrlimit_ulong(int resource, struct rlimit_ulong >>>> *rlim) >>>> { >>>> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, >>>> uint64_t >>>> val_u64, >>>> { >>>> if ((val_u64 > RLIM_INFINITY_UL && val_ul != >>>> RLIM_INFINITY_UL) || >>>> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { >>>> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>> - resource, kind, val_u64, >>>> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d >>>> ULONG_MAX = %lu >>>> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, >>>> RLIM_INFINITY_UL, resource, >>> I suggest to split it into another tst_res() message, line above is >>> nearly 200 characters. >> >> >> Sorry, I shouldn't append debug code to patch. >> >> --Hongzhi >> >> >>> >>> Regards, >>> Jan >>> >>>> kind, val_u64, >>>> resource, kind, val_ul); >>>> return -1; >>>> } >>>> -- >>>> 2.8.1 >>>> >>>> >>>> -- >>>> Mailing list info: https://lists.linux.it/listinfo/ltp >>>> >> > > > >
----- Original Message ----- > > On 7/11/19 3:48 PM, Jan Stancek wrote: > > > > ----- Original Message ----- > >> Error info: > >> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = > >> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff > >> > >> According to kernel code: [arch/mips/include/uapi/asm/resource.h] > >> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. > >> > >> /* > >> * SuS says limits have to be unsigned. > >> * Which makes a ton more sense anyway, > >> * but we keep the old value on MIPS32, > >> * for compatibility: > >> */ > >> #ifndef __mips64 > >> # define RLIM_INFINITY 0x7fffffffUL > >> #endif > >> > >> Adding conditional statement about mips to fix this. > >> > >> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> > >> --- > >> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- > >> 1 file changed, 8 insertions(+), 2 deletions(-) > >> > >> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >> index e4d56c4..1903558 100644 > >> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >> @@ -61,7 +61,13 @@ struct rlimit_ulong { > >> unsigned long rlim_cur; > >> unsigned long rlim_max; > >> }; > >> +#ifdef __mips > >> +#ifndef __mips64 > >> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > >> +#else > >> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > >> +#endif > >> +#endif > > Hi, > > > > This will break every other arch, because it's now undefined everywhere > > except mips. > > > Is there a good way to filter mips32? Maybe something like: #include "lapi/abisize.h" #if defined(__mips__) && defined(TST_ABI32) const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; #else const unsigned long RLIM_INFINITY_UL = ULONG_MAX; #endif > > I tried > > 65 #ifdef __mips > 66 #ifndef __mips64 > 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > 68 #endif > 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > 70 #else > 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > 72 #endif > > but mips32 thinks the RLIM_INFINITY_UL micro is redefined. > > > > > >> > >> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) > >> { > >> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t > >> val_u64, > >> { > >> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || > >> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { > >> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " > >> __NR_getrlimit_ulong_str "(%d) had %s = %lx", > >> - resource, kind, val_u64, > >> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu > >> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " > >> __NR_getrlimit_ulong_str "(%d) had %s = %lx", > >> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, > > I suggest to split it into another tst_res() message, line above is nearly > > 200 characters. > > > Sorry, I shouldn't append debug code to patch. > > --Hongzhi > > > > > > Regards, > > Jan > > > >> kind, val_u64, > >> resource, kind, val_ul); > >> return -1; > >> } > >> -- > >> 2.8.1 > >> > >> > >> -- > >> Mailing list info: https://lists.linux.it/listinfo/ltp > >> >
On 7/12/19 3:14 PM, Jan Stancek wrote: > ----- Original Message ----- >> On 7/11/19 3:48 PM, Jan Stancek wrote: >>> ----- Original Message ----- >>>> Error info: >>>> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = >>>> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff >>>> >>>> According to kernel code: [arch/mips/include/uapi/asm/resource.h] >>>> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. >>>> >>>> /* >>>> * SuS says limits have to be unsigned. >>>> * Which makes a ton more sense anyway, >>>> * but we keep the old value on MIPS32, >>>> * for compatibility: >>>> */ >>>> #ifndef __mips64 >>>> # define RLIM_INFINITY 0x7fffffffUL >>>> #endif >>>> >>>> Adding conditional statement about mips to fix this. >>>> >>>> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> >>>> --- >>>> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- >>>> 1 file changed, 8 insertions(+), 2 deletions(-) >>>> >>>> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> index e4d56c4..1903558 100644 >>>> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>> @@ -61,7 +61,13 @@ struct rlimit_ulong { >>>> unsigned long rlim_cur; >>>> unsigned long rlim_max; >>>> }; >>>> +#ifdef __mips >>>> +#ifndef __mips64 >>>> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>>> +#else >>>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>>> +#endif >>>> +#endif >>> Hi, >>> >>> This will break every other arch, because it's now undefined everywhere >>> except mips. >> >> Is there a good way to filter mips32? > Maybe something like: > > #include "lapi/abisize.h" > > #if defined(__mips__) && defined(TST_ABI32) > const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > #else > const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > #endif TST_ABI32 looks like not work, and I sent patch-V3 using __mips and __mips64. --Hongzhi > >> I tried >> >> 65 #ifdef __mips >> 66 #ifndef __mips64 >> 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >> 68 #endif >> 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >> 70 #else >> 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >> 72 #endif >> >> but mips32 thinks the RLIM_INFINITY_UL micro is redefined. >> >> >>>> >>>> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) >>>> { >>>> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t >>>> val_u64, >>>> { >>>> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || >>>> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { >>>> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>> - resource, kind, val_u64, >>>> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu >>>> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, >>> I suggest to split it into another tst_res() message, line above is nearly >>> 200 characters. >> >> Sorry, I shouldn't append debug code to patch. >> >> --Hongzhi >> >> >>> Regards, >>> Jan >>> >>>> kind, val_u64, >>>> resource, kind, val_ul); >>>> return -1; >>>> } >>>> -- >>>> 2.8.1 >>>> >>>> >>>> -- >>>> Mailing list info: https://lists.linux.it/listinfo/ltp >>>>
----- Original Message ----- > > On 7/12/19 3:14 PM, Jan Stancek wrote: > > ----- Original Message ----- > >> On 7/11/19 3:48 PM, Jan Stancek wrote: > >>> ----- Original Message ----- > >>>> Error info: > >>>> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = > >>>> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff > >>>> > >>>> According to kernel code: [arch/mips/include/uapi/asm/resource.h] > >>>> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. > >>>> > >>>> /* > >>>> * SuS says limits have to be unsigned. > >>>> * Which makes a ton more sense anyway, > >>>> * but we keep the old value on MIPS32, > >>>> * for compatibility: > >>>> */ > >>>> #ifndef __mips64 > >>>> # define RLIM_INFINITY 0x7fffffffUL > >>>> #endif > >>>> > >>>> Adding conditional statement about mips to fix this. > >>>> > >>>> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> > >>>> --- > >>>> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- > >>>> 1 file changed, 8 insertions(+), 2 deletions(-) > >>>> > >>>> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >>>> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >>>> index e4d56c4..1903558 100644 > >>>> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >>>> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c > >>>> @@ -61,7 +61,13 @@ struct rlimit_ulong { > >>>> unsigned long rlim_cur; > >>>> unsigned long rlim_max; > >>>> }; > >>>> +#ifdef __mips > >>>> +#ifndef __mips64 > >>>> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > >>>> +#else > >>>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > >>>> +#endif > >>>> +#endif > >>> Hi, > >>> > >>> This will break every other arch, because it's now undefined everywhere > >>> except mips. > >> > >> Is there a good way to filter mips32? > > Maybe something like: > > > > #include "lapi/abisize.h" > > > > #if defined(__mips__) && defined(TST_ABI32) > > const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > > #else > > const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > > #endif > > > TST_ABI32 looks like not work Can you elaborate? >, and I sent patch-V3 using __mips and __mips64. > > --Hongzhi > > > > > >> I tried > >> > >> 65 #ifdef __mips > >> 66 #ifndef __mips64 > >> 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; > >> 68 #endif > >> 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > >> 70 #else > >> 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; > >> 72 #endif > >> > >> but mips32 thinks the RLIM_INFINITY_UL micro is redefined. > >> > >> > >>>> > >>>> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) > >>>> { > >>>> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t > >>>> val_u64, > >>>> { > >>>> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || > >>>> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { > >>>> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " > >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", > >>>> - resource, kind, val_u64, > >>>> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu > >>>> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " > >>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", > >>>> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, > >>> I suggest to split it into another tst_res() message, line above is > >>> nearly > >>> 200 characters. > >> > >> Sorry, I shouldn't append debug code to patch. > >> > >> --Hongzhi > >> > >> > >>> Regards, > >>> Jan > >>> > >>>> kind, val_u64, > >>>> resource, kind, val_ul); > >>>> return -1; > >>>> } > >>>> -- > >>>> 2.8.1 > >>>> > >>>> > >>>> -- > >>>> Mailing list info: https://lists.linux.it/listinfo/ltp > >>>> >
On 7/12/19 6:06 PM, Jan Stancek wrote: > > ----- Original Message ----- >> On 7/12/19 3:14 PM, Jan Stancek wrote: >>> ----- Original Message ----- >>>> On 7/11/19 3:48 PM, Jan Stancek wrote: >>>>> ----- Original Message ----- >>>>>> Error info: >>>>>> getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = >>>>>> ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff >>>>>> >>>>>> According to kernel code: [arch/mips/include/uapi/asm/resource.h] >>>>>> RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. >>>>>> >>>>>> /* >>>>>> * SuS says limits have to be unsigned. >>>>>> * Which makes a ton more sense anyway, >>>>>> * but we keep the old value on MIPS32, >>>>>> * for compatibility: >>>>>> */ >>>>>> #ifndef __mips64 >>>>>> # define RLIM_INFINITY 0x7fffffffUL >>>>>> #endif >>>>>> >>>>>> Adding conditional statement about mips to fix this. >>>>>> >>>>>> Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> >>>>>> --- >>>>>> testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- >>>>>> 1 file changed, 8 insertions(+), 2 deletions(-) >>>>>> >>>>>> diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>>>> b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>>>> index e4d56c4..1903558 100644 >>>>>> --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>>>> +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c >>>>>> @@ -61,7 +61,13 @@ struct rlimit_ulong { >>>>>> unsigned long rlim_cur; >>>>>> unsigned long rlim_max; >>>>>> }; >>>>>> +#ifdef __mips >>>>>> +#ifndef __mips64 >>>>>> +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>>>>> +#else >>>>>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>>>>> +#endif >>>>>> +#endif >>>>> Hi, >>>>> >>>>> This will break every other arch, because it's now undefined everywhere >>>>> except mips. >>>> Is there a good way to filter mips32? >>> Maybe something like: >>> >>> #include "lapi/abisize.h" >>> >>> #if defined(__mips__) && defined(TST_ABI32) >>> const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>> #else >>> const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>> #endif >> >> TST_ABI32 looks like not work > Can you elaborate? Thanks for your patient instruction. Now it passes with your suggestion. Previously, my ltp project is too old to missing lapi/abisize.h. I have sent patch-v4, please review it. --Hongzhi > >> , and I sent patch-V3 using __mips and __mips64. >> >> --Hongzhi >> >> >>>> I tried >>>> >>>> 65 #ifdef __mips >>>> 66 #ifndef __mips64 >>>> 67 const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; >>>> 68 #endif >>>> 69 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>>> 70 #else >>>> 71 const unsigned long RLIM_INFINITY_UL = ULONG_MAX; >>>> 72 #endif >>>> >>>> but mips32 thinks the RLIM_INFINITY_UL micro is redefined. >>>> >>>> >>>>>> >>>>>> static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) >>>>>> { >>>>>> @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t >>>>>> val_u64, >>>>>> { >>>>>> if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || >>>>>> (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { >>>>>> - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>>>> - resource, kind, val_u64, >>>>>> + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu >>>>>> RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " >>>>>> __NR_getrlimit_ulong_str "(%d) had %s = %lx", >>>>>> + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, >>>>> I suggest to split it into another tst_res() message, line above is >>>>> nearly >>>>> 200 characters. >>>> Sorry, I shouldn't append debug code to patch. >>>> >>>> --Hongzhi >>>> >>>> >>>>> Regards, >>>>> Jan >>>>> >>>>>> kind, val_u64, >>>>>> resource, kind, val_ul); >>>>>> return -1; >>>>>> } >>>>>> -- >>>>>> 2.8.1 >>>>>> >>>>>> >>>>>> -- >>>>>> Mailing list info: https://lists.linux.it/listinfo/ltp >>>>>>
diff --git a/testcases/kernel/syscalls/getrlimit/getrlimit03.c b/testcases/kernel/syscalls/getrlimit/getrlimit03.c index e4d56c4..1903558 100644 --- a/testcases/kernel/syscalls/getrlimit/getrlimit03.c +++ b/testcases/kernel/syscalls/getrlimit/getrlimit03.c @@ -61,7 +61,13 @@ struct rlimit_ulong { unsigned long rlim_cur; unsigned long rlim_max; }; +#ifdef __mips +#ifndef __mips64 +const unsigned long RLIM_INFINITY_UL = 0x7fffffffUL; +#else const unsigned long RLIM_INFINITY_UL = ULONG_MAX; +#endif +#endif static int getrlimit_ulong(int resource, struct rlimit_ulong *rlim) { @@ -101,8 +107,8 @@ static int compare_u64_ulong(int resource, uint64_t val_u64, { if ((val_u64 > RLIM_INFINITY_UL && val_ul != RLIM_INFINITY_UL) || (val_u64 <= RLIM_INFINITY_UL && val_ul != val_u64)) { - tst_res(TFAIL, "__NR_prlimit64(%d) had %s = %" PRIx64 " but " __NR_getrlimit_ulong_str "(%d) had %s = %lx", - resource, kind, val_u64, + tst_res(TFAIL, "SIGNED_GETRLIMIT = %d __WORDSIZE %d ULONG_MAX = %lu RLIM_INFINITY_UL = %lu __NR_prlimit64(%d) had %s = %" PRIx64 " but " __NR_getrlimit_ulong_str "(%d) had %s = %lx", + SIGNED_GETRLIMIT, __WORDSIZE, ULONG_MAX, RLIM_INFINITY_UL, resource, kind, val_u64, resource, kind, val_ul); return -1; }
Error info: getrlimit03.c:104: FAIL: __NR_prlimit64(0) had rlim_cur = ffffffffffffffff but __NR_getrlimit(0) had rlim_cur = 7fffffff According to kernel code: [arch/mips/include/uapi/asm/resource.h] RLIM_INFINITY is set to 0x7fffffffUL instead of ULONG_MAX on mips32. /* * SuS says limits have to be unsigned. * Which makes a ton more sense anyway, * but we keep the old value on MIPS32, * for compatibility: */ #ifndef __mips64 # define RLIM_INFINITY 0x7fffffffUL #endif Adding conditional statement about mips to fix this. Signed-off-by: Hongzhi.Song <hongzhi.song@windriver.com> --- testcases/kernel/syscalls/getrlimit/getrlimit03.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-)