2015-04-17 22:01:45

by Tyler Baker

[permalink] [raw]
Subject: [PATCH v2 5/8] selftest/x86: build both bitnesses

Using uname with the processor flag option in some cases can yield 'unknown'
so lets use the machine flag option as it is deterministic. Add a dependency
for all_32 when building on a x86 64 bit host so that both bitnesses are
built in this case.

Cc: Andy Lutomirski <[email protected]>
Signed-off-by: Tyler Baker <[email protected]>
---
tools/testing/selftests/x86/Makefile | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
index f0a7918..57090ad 100644
--- a/tools/testing/selftests/x86/Makefile
+++ b/tools/testing/selftests/x86/Makefile
@@ -7,14 +7,14 @@ BINARIES_64 := $(TARGETS_C_BOTHBITS:%=%_64)

CFLAGS := -O2 -g -std=gnu99 -pthread -Wall

-UNAME_P := $(shell uname -p)
+UNAME_M := $(shell uname -m)

# Always build 32-bit tests
all: all_32

# If we're on a 64-bit host, build 64-bit tests as well
-ifeq ($(shell uname -p),x86_64)
-all: all_64
+ifeq ($(UNAME_M),x86_64)
+all: all_32 all_64
endif

all_32: check_build32 $(BINARIES_32)
--
2.1.4


2015-04-17 22:07:20

by Andy Lutomirski

[permalink] [raw]
Subject: Re: [PATCH v2 5/8] selftest/x86: build both bitnesses

On Fri, Apr 17, 2015 at 3:01 PM, Tyler Baker <[email protected]> wrote:
> Using uname with the processor flag option in some cases can yield 'unknown'
> so lets use the machine flag option as it is deterministic. Add a dependency
> for all_32 when building on a x86 64 bit host so that both bitnesses are
> built in this case.
>
> Cc: Andy Lutomirski <[email protected]>
> Signed-off-by: Tyler Baker <[email protected]>
> ---
> tools/testing/selftests/x86/Makefile | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
> index f0a7918..57090ad 100644
> --- a/tools/testing/selftests/x86/Makefile
> +++ b/tools/testing/selftests/x86/Makefile
> @@ -7,14 +7,14 @@ BINARIES_64 := $(TARGETS_C_BOTHBITS:%=%_64)
>
> CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
>
> -UNAME_P := $(shell uname -p)
> +UNAME_M := $(shell uname -m)
>
> # Always build 32-bit tests
> all: all_32
>
> # If we're on a 64-bit host, build 64-bit tests as well
> -ifeq ($(shell uname -p),x86_64)
> -all: all_64
> +ifeq ($(UNAME_M),x86_64)
> +all: all_32 all_64

This duplicates the all: all_32 above.

--Andy

> endif
>
> all_32: check_build32 $(BINARIES_32)
> --
> 2.1.4
>



--
Andy Lutomirski
AMA Capital Management, LLC

2015-04-17 22:24:27

by Tyler Baker

[permalink] [raw]
Subject: Re: [PATCH v2 5/8] selftest/x86: build both bitnesses

On 17 April 2015 at 15:06, Andy Lutomirski <[email protected]> wrote:
> On Fri, Apr 17, 2015 at 3:01 PM, Tyler Baker <[email protected]> wrote:
>> Using uname with the processor flag option in some cases can yield 'unknown'
>> so lets use the machine flag option as it is deterministic. Add a dependency
>> for all_32 when building on a x86 64 bit host so that both bitnesses are
>> built in this case.
>>
>> Cc: Andy Lutomirski <[email protected]>
>> Signed-off-by: Tyler Baker <[email protected]>
>> ---
>> tools/testing/selftests/x86/Makefile | 6 +++---
>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
>> index f0a7918..57090ad 100644
>> --- a/tools/testing/selftests/x86/Makefile
>> +++ b/tools/testing/selftests/x86/Makefile
>> @@ -7,14 +7,14 @@ BINARIES_64 := $(TARGETS_C_BOTHBITS:%=%_64)
>>
>> CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
>>
>> -UNAME_P := $(shell uname -p)
>> +UNAME_M := $(shell uname -m)
>>
>> # Always build 32-bit tests
>> all: all_32
>>
>> # If we're on a 64-bit host, build 64-bit tests as well
>> -ifeq ($(shell uname -p),x86_64)
>> -all: all_64
>> +ifeq ($(UNAME_M),x86_64)
>> +all: all_32 all_64
>
> This duplicates the all: all_32 above.

I agree with you but the behavior is different than expected.

>From a clean linux-next tree building on a 64-bit x86 host

(jessie)tyler@localhost:~/Dev/kernels/linux$ git describe
next-20150415
(jessie)tyler@localhost:~/Dev/kernels/linux$ uname -m
x86_64
(jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
tools/testing/selftests/x86/
make: Entering directory
'/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
cc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
make: Leaving directory
'/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'

With this series applied on top I get

(jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
tools/testing/selftests/x86/
make: Entering directory
'/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
Makefile:41: warning: overriding recipe for target 'run_tests'
../lib.mk:12: warning: ignoring old recipe for target 'run_tests'
gcc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
gcc -m64 -o sigreturn_64 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
make: Leaving directory
'/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'

Which is what I expected.

>
> --Andy
>
>> endif
>>
>> all_32: check_build32 $(BINARIES_32)
>> --
>> 2.1.4
>>
>
>
>
> --
> Andy Lutomirski
> AMA Capital Management, LLC

Tyler

2015-04-17 22:27:24

by Andy Lutomirski

[permalink] [raw]
Subject: Re: [PATCH v2 5/8] selftest/x86: build both bitnesses

On Fri, Apr 17, 2015 at 3:24 PM, Tyler Baker <[email protected]> wrote:
> On 17 April 2015 at 15:06, Andy Lutomirski <[email protected]> wrote:
>> On Fri, Apr 17, 2015 at 3:01 PM, Tyler Baker <[email protected]> wrote:
>>> Using uname with the processor flag option in some cases can yield 'unknown'
>>> so lets use the machine flag option as it is deterministic. Add a dependency
>>> for all_32 when building on a x86 64 bit host so that both bitnesses are
>>> built in this case.
>>>
>>> Cc: Andy Lutomirski <[email protected]>
>>> Signed-off-by: Tyler Baker <[email protected]>
>>> ---
>>> tools/testing/selftests/x86/Makefile | 6 +++---
>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>
>>> diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
>>> index f0a7918..57090ad 100644
>>> --- a/tools/testing/selftests/x86/Makefile
>>> +++ b/tools/testing/selftests/x86/Makefile
>>> @@ -7,14 +7,14 @@ BINARIES_64 := $(TARGETS_C_BOTHBITS:%=%_64)
>>>
>>> CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
>>>
>>> -UNAME_P := $(shell uname -p)
>>> +UNAME_M := $(shell uname -m)
>>>
>>> # Always build 32-bit tests
>>> all: all_32
>>>
>>> # If we're on a 64-bit host, build 64-bit tests as well
>>> -ifeq ($(shell uname -p),x86_64)
>>> -all: all_64
>>> +ifeq ($(UNAME_M),x86_64)
>>> +all: all_32 all_64
>>
>> This duplicates the all: all_32 above.
>
> I agree with you but the behavior is different than expected.
>
> From a clean linux-next tree building on a 64-bit x86 host
>
> (jessie)tyler@localhost:~/Dev/kernels/linux$ git describe
> next-20150415
> (jessie)tyler@localhost:~/Dev/kernels/linux$ uname -m
> x86_64
> (jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
> tools/testing/selftests/x86/
> make: Entering directory
> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
> cc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
> make: Leaving directory
> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>
> With this series applied on top I get
>
> (jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
> tools/testing/selftests/x86/
> make: Entering directory
> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
> Makefile:41: warning: overriding recipe for target 'run_tests'
> ../lib.mk:12: warning: ignoring old recipe for target 'run_tests'

That can't be a good sign.

> gcc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
> gcc -m64 -o sigreturn_64 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
> make: Leaving directory
> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>
> Which is what I expected.

I meant specifically this line:

+all: all_32 all_64

The rest of this patch looks okay.

--Andy

2015-04-17 22:31:36

by Tyler Baker

[permalink] [raw]
Subject: Re: [PATCH v2 5/8] selftest/x86: build both bitnesses

On 17 April 2015 at 15:27, Andy Lutomirski <[email protected]> wrote:
> On Fri, Apr 17, 2015 at 3:24 PM, Tyler Baker <[email protected]> wrote:
>> On 17 April 2015 at 15:06, Andy Lutomirski <[email protected]> wrote:
>>> On Fri, Apr 17, 2015 at 3:01 PM, Tyler Baker <[email protected]> wrote:
>>>> Using uname with the processor flag option in some cases can yield 'unknown'
>>>> so lets use the machine flag option as it is deterministic. Add a dependency
>>>> for all_32 when building on a x86 64 bit host so that both bitnesses are
>>>> built in this case.
>>>>
>>>> Cc: Andy Lutomirski <[email protected]>
>>>> Signed-off-by: Tyler Baker <[email protected]>
>>>> ---
>>>> tools/testing/selftests/x86/Makefile | 6 +++---
>>>> 1 file changed, 3 insertions(+), 3 deletions(-)
>>>>
>>>> diff --git a/tools/testing/selftests/x86/Makefile b/tools/testing/selftests/x86/Makefile
>>>> index f0a7918..57090ad 100644
>>>> --- a/tools/testing/selftests/x86/Makefile
>>>> +++ b/tools/testing/selftests/x86/Makefile
>>>> @@ -7,14 +7,14 @@ BINARIES_64 := $(TARGETS_C_BOTHBITS:%=%_64)
>>>>
>>>> CFLAGS := -O2 -g -std=gnu99 -pthread -Wall
>>>>
>>>> -UNAME_P := $(shell uname -p)
>>>> +UNAME_M := $(shell uname -m)
>>>>
>>>> # Always build 32-bit tests
>>>> all: all_32
>>>>
>>>> # If we're on a 64-bit host, build 64-bit tests as well
>>>> -ifeq ($(shell uname -p),x86_64)
>>>> -all: all_64
>>>> +ifeq ($(UNAME_M),x86_64)
>>>> +all: all_32 all_64
>>>
>>> This duplicates the all: all_32 above.
>>
>> I agree with you but the behavior is different than expected.
>>
>> From a clean linux-next tree building on a 64-bit x86 host
>>
>> (jessie)tyler@localhost:~/Dev/kernels/linux$ git describe
>> next-20150415
>> (jessie)tyler@localhost:~/Dev/kernels/linux$ uname -m
>> x86_64
>> (jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
>> tools/testing/selftests/x86/
>> make: Entering directory
>> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>> cc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
>> make: Leaving directory
>> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>>
>> With this series applied on top I get
>>
>> (jessie)tyler@localhost:~/Dev/kernels/linux$ make -C
>> tools/testing/selftests/x86/
>> make: Entering directory
>> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>> Makefile:41: warning: overriding recipe for target 'run_tests'
>> ../lib.mk:12: warning: ignoring old recipe for target 'run_tests'
>
> That can't be a good sign.
>
>> gcc -m32 -o sigreturn_32 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
>> gcc -m64 -o sigreturn_64 -O2 -g -std=gnu99 -pthread -Wall sigreturn.c -lrt -ldl
>> make: Leaving directory
>> '/home/tyler/Dev/kernels/linux/tools/testing/selftests/x86'
>>
>> Which is what I expected.
>
> I meant specifically this line:
>
> +all: all_32 all_64
>
> The rest of this patch looks okay.

You are right again. On my machine 'uname -p' returns 'unknown' so
that is why it's not building the 64-bit test on -next :) I'll fix
this up.

>
> --Andy

Tyler