[LTP] {get|set}_thread_area issue on ARM
Jan Stancek
jstancek@redhat.com
Fri Dec 4 14:19:55 CET 2015
----- Original Message -----
> From: "Yury Norov" <ynorov@caviumnetworks.com>
> To: "Jan Stancek" <jstancek@redhat.com>
> Cc: ltp@lists.linux.it, "David Howells" <dhowells@redhat.com>
> Sent: Friday, 4 December, 2015 2:02:41 PM
> Subject: Re: [LTP] {get|set}_thread_area issue on ARM
>
> On Fri, Dec 04, 2015 at 04:20:37AM -0500, Jan Stancek wrote:
> >
> >
> >
> >
> > ----- Original Message -----
> > > From: "Yury Norov" <ynorov@caviumnetworks.com>
> > > To: ltp@lists.linux.it
> > > Cc: "David Howells" <dhowells@redhat.com>
> > > Sent: Friday, 4 December, 2015 4:47:11 AM
> > > Subject: [LTP] {get|set}_thread_area issue on ARM
> > >
> > > Hi all,
> > >
> > > I just tried build ltp for arm, and one (maybe, first of) test failed
> > > build. Namely, set_thread_area01.c
> > >
> > > The reason is that __NR_set_thread_area and __NR_get_thread_area are
> > > not declared. They should come from
> > > /usr/arm-linux-gnueabi/include/asm/unistd.h
> > > But there's only:
> > > [...]
> > > #define __NR_remap_file_pages (__NR_SYSCALL_BASE+253)
> > > /* for set_thread_area */
> > > /* for get_thread_area */
> > > #define __NR_set_tid_address (__NR_SYSCALL_BASE+256)
> > > [...]
> > >
> > > In kernel, there are stubs for corresponding syscall numbers. So it
> > > looks like this pair is deprecated and unsupported. I can build ltp
> > > for aarch64 and x84_64 just fine.
> >
> > Looking at history, it appears it was never supported.
> >
> > >
> > > Could someone explain me what am I doing wrong?
> >
> > Can you try to add:
> > #include "linux_syscall_numbers.h"
> > to testcases/kernel/syscalls/set_thread_area/set_thread_area01.c
> > and see if it compiles. And when you run it, it should end with TCONF.
> >
> > Regards,
> > Jan
>
> Hi Jan,
>
> It doesn't help much. The problem is not in that ltp doesn't know
> symbols, but because they are identical - both are -1.
> (__LTP__NR_INVALID_SYSCALL)
Hi,
That was expected.
>
> And gcc treats is as an error:
> arm-linux-gnueabi-gcc -g -O2 -g -O2 -fno-strict-aliasing -pipe -Wall
> -W -g -O2 -Wold-style-definition
> -I/home/yury/work/ltp/testcases/kernel/include -I../../../../include
> -I../../../../include -Wl,--rpath=/root/lib32
> -Wl,--dynamic-linker=/root/lib32/ld-2.21.so -L../../../../lib
> set_thread_area01.c -lltp -o set_thread_area01
> set_thread_area01.c: In function ‘get_name’:
> set_thread_area01.c:70:2: error: duplicate case value
> case __NR_get_thread_area:
> ^
> set_thread_area01.c:67:2: error: previously used here
> case __NR_set_thread_area:
> ^
> set_thread_area01.c: In function ‘main’:
> set_thread_area01.c:87:17: warning: comparison between signed
> and unsigned integer expressions [-Wsign-compare]
> for (i = 0; i < sizeof(tests) / sizeof(struct test); i++) {
> ^
> <builtin>: recipe for target 'set_thread_area01' failed
This wasn't - I didn't realize they are used in switch.
I suggest to remove the get_name() function and store names
in struct test (with some macro to stringify those syscall __NR_#).
Would you care to send a patch?
>
> BTW, I forgot to mention, if I "uncomment" that definitions in system
> headers, everything becomes fine.
I assume you still get TCONF when you run it, because kernel should
return ENOSYS for both.
Regards,
Jan
>
> Preprocessed sources for arm and x86_64 are attached.
>
> BR,
> Yury.
>
>
>
More information about the Ltp
mailing list