linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
@ 2015-12-24  5:04 Guenter Roeck
  2015-12-24 12:48 ` James Hogan
  2016-01-03 23:08 ` Guenter Roeck
  0 siblings, 2 replies; 7+ messages in thread
From: Guenter Roeck @ 2015-12-24  5:04 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: linux-mips, linux-kernel, Guenter Roeck, Qais Yousef

Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
error seen with binutils 2.24 and earlier. However, the fix does not work,
and again results in the already known build errors if the kernel is built
with an earlier version of binutils.

CC      arch/mips/vdso/gettimeofday.o
/tmp/ccnOVbHT.s: Assembler messages:
/tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
/tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1

Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
Cc: Qais Yousef <qais.yousef@imgtec.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
---
Tested with binutils 2.25 and 2.22.

 arch/mips/vdso/Makefile | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
index 018f8c7b94f2..14568900fc1d 100644
--- a/arch/mips/vdso/Makefile
+++ b/arch/mips/vdso/Makefile
@@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
 # the comments on that file.
 #
 ifndef CONFIG_CPU_MIPSR6
-  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
+  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
     $(warning MIPS VDSO requires binutils >= 2.25)
     obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y))
     ccflags-vdso += -DDISABLE_MIPS_VDSO
-- 
2.1.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2015-12-24  5:04 [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier Guenter Roeck
@ 2015-12-24 12:48 ` James Hogan
  2015-12-24 12:57   ` James Hogan
  2015-12-24 15:24   ` Guenter Roeck
  2016-01-03 23:08 ` Guenter Roeck
  1 sibling, 2 replies; 7+ messages in thread
From: James Hogan @ 2015-12-24 12:48 UTC (permalink / raw)
  To: Guenter Roeck; +Cc: Ralf Baechle, linux-mips, linux-kernel, Qais Yousef

[-- Attachment #1: Type: text/plain, Size: 2979 bytes --]

Hi Guenter,

On Wed, Dec 23, 2015 at 09:04:31PM -0800, Guenter Roeck wrote:
> Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
> error seen with binutils 2.24 and earlier. However, the fix does not work,
> and again results in the already known build errors if the kernel is built
> with an earlier version of binutils.
> 
> CC      arch/mips/vdso/gettimeofday.o
> /tmp/ccnOVbHT.s: Assembler messages:
> /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
> make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
> 
> Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
> Cc: Qais Yousef <qais.yousef@imgtec.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> Tested with binutils 2.25 and 2.22.
> 
>  arch/mips/vdso/Makefile | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> index 018f8c7b94f2..14568900fc1d 100644
> --- a/arch/mips/vdso/Makefile
> +++ b/arch/mips/vdso/Makefile
> @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
>  # the comments on that file.
>  #
>  ifndef CONFIG_CPU_MIPSR6
> -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
> +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)

I agree this is semantically correct, but there is something more evil
going on here.

Originally the check was version <= 2.24
Qais' patch changed it to version >= 2.25 (intending version < 2.25)
Your patch changes it to version < 2.25

I think the reason this fixed the problem for Qais is actually that he
probably had a similar toolchain version to what I'm using:

GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90

./scripts/ld-version.sh does this:

print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];

which changes that version number into:
 20000000
+ 2400000
+  900000 = 23300000

I.e. it doesn't expect a[3] to be >= 10.

Should we do something like this (increase multipliers on a[1] and
a[2])?:

diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
index 198580d245e0..0b67edc5bc6f 100755
--- a/scripts/ld-version.sh
+++ b/scripts/ld-version.sh
@@ -3,6 +3,6 @@
 	{
 	gsub(".*)", "");
 	split($1,a, ".");
-	print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
+	print a[1]*100000000 + a[2]*1000000 + a[3]*10000 + a[4]*100 + a[5];
 	exit
 	}

which gives 2.24.90 => 224900000.

All call sites would need updating too to add the extra 0, but a quick
git grep isn't showing any other ones than this one.

Cheers
James

>      $(warning MIPS VDSO requires binutils >= 2.25)
>      obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y))
>      ccflags-vdso += -DDISABLE_MIPS_VDSO
> -- 
> 2.1.4
> 
> 

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2015-12-24 12:48 ` James Hogan
@ 2015-12-24 12:57   ` James Hogan
  2016-01-05  9:20     ` Michal Marek
  2015-12-24 15:24   ` Guenter Roeck
  1 sibling, 1 reply; 7+ messages in thread
From: James Hogan @ 2015-12-24 12:57 UTC (permalink / raw)
  To: Guenter Roeck
  Cc: Ralf Baechle, linux-mips, linux-kernel, Qais Yousef, Andi Kleen,
	Michal Marek

[-- Attachment #1: Type: text/plain, Size: 3414 bytes --]

On Thu, Dec 24, 2015 at 12:48:12PM +0000, James Hogan wrote:
> Hi Guenter,
> 
> On Wed, Dec 23, 2015 at 09:04:31PM -0800, Guenter Roeck wrote:
> > Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
> > error seen with binutils 2.24 and earlier. However, the fix does not work,
> > and again results in the already known build errors if the kernel is built
> > with an earlier version of binutils.
> > 
> > CC      arch/mips/vdso/gettimeofday.o
> > /tmp/ccnOVbHT.s: Assembler messages:
> > /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> > /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> > scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
> > make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
> > 
> > Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
> > Cc: Qais Yousef <qais.yousef@imgtec.com>
> > Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> > ---
> > Tested with binutils 2.25 and 2.22.
> > 
> >  arch/mips/vdso/Makefile | 2 +-
> >  1 file changed, 1 insertion(+), 1 deletion(-)
> > 
> > diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> > index 018f8c7b94f2..14568900fc1d 100644
> > --- a/arch/mips/vdso/Makefile
> > +++ b/arch/mips/vdso/Makefile
> > @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
> >  # the comments on that file.
> >  #
> >  ifndef CONFIG_CPU_MIPSR6
> > -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
> > +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
> 
> I agree this is semantically correct, but there is something more evil
> going on here.
> 
> Originally the check was version <= 2.24
> Qais' patch changed it to version >= 2.25 (intending version < 2.25)
> Your patch changes it to version < 2.25
> 
> I think the reason this fixed the problem for Qais is actually that he
> probably had a similar toolchain version to what I'm using:
> 
> GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90
> 
> ./scripts/ld-version.sh does this:
> 
> print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
> 
> which changes that version number into:
>  20000000
> + 2400000
> +  900000 = 23300000
> 
> I.e. it doesn't expect a[3] to be >= 10.
> 
> Should we do something like this (increase multipliers on a[1] and
> a[2])?:
> 
> diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
> index 198580d245e0..0b67edc5bc6f 100755
> --- a/scripts/ld-version.sh
> +++ b/scripts/ld-version.sh
> @@ -3,6 +3,6 @@
>  	{
>  	gsub(".*)", "");
>  	split($1,a, ".");
> -	print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
> +	print a[1]*100000000 + a[2]*1000000 + a[3]*10000 + a[4]*100 + a[5];
>  	exit
>  	}
> 
> which gives 2.24.90 => 224900000.
> 
> All call sites would need updating too to add the extra 0, but a quick
> git grep isn't showing any other ones than this one.

Actually, linux-next includes this commit which uses ld-ifversion too:

19a3cc83353e3bb4bc28769f8606139a3d350d2d
"Kbuild, lto: Add Link Time Optimization support v3"

Cheers
James

> 
> Cheers
> James
> 
> >      $(warning MIPS VDSO requires binutils >= 2.25)
> >      obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y))
> >      ccflags-vdso += -DDISABLE_MIPS_VDSO
> > -- 
> > 2.1.4
> > 
> > 



[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2015-12-24 12:48 ` James Hogan
  2015-12-24 12:57   ` James Hogan
@ 2015-12-24 15:24   ` Guenter Roeck
  1 sibling, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2015-12-24 15:24 UTC (permalink / raw)
  To: James Hogan; +Cc: Ralf Baechle, linux-mips, linux-kernel, Qais Yousef

On 12/24/2015 04:48 AM, James Hogan wrote:
> Hi Guenter,
>
> On Wed, Dec 23, 2015 at 09:04:31PM -0800, Guenter Roeck wrote:
>> Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
>> error seen with binutils 2.24 and earlier. However, the fix does not work,
>> and again results in the already known build errors if the kernel is built
>> with an earlier version of binutils.
>>
>> CC      arch/mips/vdso/gettimeofday.o
>> /tmp/ccnOVbHT.s: Assembler messages:
>> /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
>> /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
>> scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
>> make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
>>
>> Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
>> Cc: Qais Yousef <qais.yousef@imgtec.com>
>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>> ---
>> Tested with binutils 2.25 and 2.22.
>>
>>   arch/mips/vdso/Makefile | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
>> index 018f8c7b94f2..14568900fc1d 100644
>> --- a/arch/mips/vdso/Makefile
>> +++ b/arch/mips/vdso/Makefile
>> @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
>>   # the comments on that file.
>>   #
>>   ifndef CONFIG_CPU_MIPSR6
>> -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
>> +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
>
> I agree this is semantically correct, but there is something more evil
> going on here.
>
> Originally the check was version <= 2.24
> Qais' patch changed it to version >= 2.25 (intending version < 2.25)
> Your patch changes it to version < 2.25
>
> I think the reason this fixed the problem for Qais is actually that he
> probably had a similar toolchain version to what I'm using:
>
> GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90
>

My toolchains are yocto 1.3 (2.22) and yocto 2.0 (2.25).

> ./scripts/ld-version.sh does this:
>
> print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
>
> which changes that version number into:
>   20000000
> +  2400000
> +   900000 = 23300000
>
> I.e. it doesn't expect a[3] to be >= 10.
>
> Should we do something like this (increase multipliers on a[1] and
> a[2])?:
>
> diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
> index 198580d245e0..0b67edc5bc6f 100755
> --- a/scripts/ld-version.sh
> +++ b/scripts/ld-version.sh
> @@ -3,6 +3,6 @@
>   	{
>   	gsub(".*)", "");
>   	split($1,a, ".");
> -	print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
> +	print a[1]*100000000 + a[2]*1000000 + a[3]*10000 + a[4]*100 + a[5];
>   	exit
>   	}
>
> which gives 2.24.90 => 224900000.
>
Yes, that makes sense, and from your description will be necessary.

Thanks,
Guenter


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2015-12-24  5:04 [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier Guenter Roeck
  2015-12-24 12:48 ` James Hogan
@ 2016-01-03 23:08 ` Guenter Roeck
  1 sibling, 0 replies; 7+ messages in thread
From: Guenter Roeck @ 2016-01-03 23:08 UTC (permalink / raw)
  To: Ralf Baechle; +Cc: linux-mips, linux-kernel, Qais Yousef, James Hogan

On 12/23/2015 09:04 PM, Guenter Roeck wrote:
> Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
> error seen with binutils 2.24 and earlier. However, the fix does not work,
> and again results in the already known build errors if the kernel is built
> with an earlier version of binutils.
>
> CC      arch/mips/vdso/gettimeofday.o
> /tmp/ccnOVbHT.s: Assembler messages:
> /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
> make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
>

> Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")

The above patch, and thus the build error with binutils 2.24 and earlier introduced by it,
has now made it into the mainline kernel.

Guenter

> Cc: Qais Yousef <qais.yousef@imgtec.com>
> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> ---
> Tested with binutils 2.25 and 2.22.
>
>   arch/mips/vdso/Makefile | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> index 018f8c7b94f2..14568900fc1d 100644
> --- a/arch/mips/vdso/Makefile
> +++ b/arch/mips/vdso/Makefile
> @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
>   # the comments on that file.
>   #
>   ifndef CONFIG_CPU_MIPSR6
> -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
> +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
>       $(warning MIPS VDSO requires binutils >= 2.25)
>       obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y))
>       ccflags-vdso += -DDISABLE_MIPS_VDSO
>


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2015-12-24 12:57   ` James Hogan
@ 2016-01-05  9:20     ` Michal Marek
  2016-01-05 10:06       ` James Hogan
  0 siblings, 1 reply; 7+ messages in thread
From: Michal Marek @ 2016-01-05  9:20 UTC (permalink / raw)
  To: James Hogan, Guenter Roeck
  Cc: Ralf Baechle, linux-mips, linux-kernel, Qais Yousef, Andi Kleen

On 2015-12-24 13:57, James Hogan wrote:
> On Thu, Dec 24, 2015 at 12:48:12PM +0000, James Hogan wrote:
>> Hi Guenter,
>>
>> On Wed, Dec 23, 2015 at 09:04:31PM -0800, Guenter Roeck wrote:
>>> Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
>>> error seen with binutils 2.24 and earlier. However, the fix does not work,
>>> and again results in the already known build errors if the kernel is built
>>> with an earlier version of binutils.
>>>
>>> CC      arch/mips/vdso/gettimeofday.o
>>> /tmp/ccnOVbHT.s: Assembler messages:
>>> /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
>>> /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
>>> scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
>>> make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
>>>
>>> Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
>>> Cc: Qais Yousef <qais.yousef@imgtec.com>
>>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
>>> ---
>>> Tested with binutils 2.25 and 2.22.
>>>
>>>  arch/mips/vdso/Makefile | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
>>> index 018f8c7b94f2..14568900fc1d 100644
>>> --- a/arch/mips/vdso/Makefile
>>> +++ b/arch/mips/vdso/Makefile
>>> @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
>>>  # the comments on that file.
>>>  #
>>>  ifndef CONFIG_CPU_MIPSR6
>>> -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
>>> +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
>>
>> I agree this is semantically correct, but there is something more evil
>> going on here.
>>
>> Originally the check was version <= 2.24
>> Qais' patch changed it to version >= 2.25 (intending version < 2.25)
>> Your patch changes it to version < 2.25
>>
>> I think the reason this fixed the problem for Qais is actually that he
>> probably had a similar toolchain version to what I'm using:
>>
>> GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90
>>
>> ./scripts/ld-version.sh does this:
>>
>> print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
>>
>> which changes that version number into:
>>  20000000
>> + 2400000
>> +  900000 = 23300000
>>
>> I.e. it doesn't expect a[3] to be >= 10.
>>
>> Should we do something like this (increase multipliers on a[1] and
>> a[2])?:
>>
>> diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
>> index 198580d245e0..0b67edc5bc6f 100755
>> --- a/scripts/ld-version.sh
>> +++ b/scripts/ld-version.sh
>> @@ -3,6 +3,6 @@
>>  	{
>>  	gsub(".*)", "");
>>  	split($1,a, ".");
>> -	print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
>> +	print a[1]*100000000 + a[2]*1000000 + a[3]*10000 + a[4]*100 + a[5];
>>  	exit
>>  	}
>>
>> which gives 2.24.90 => 224900000.
>>
>> All call sites would need updating too to add the extra 0, but a quick
>> git grep isn't showing any other ones than this one.
> 
> Actually, linux-next includes this commit which uses ld-ifversion too:
> 
> 19a3cc83353e3bb4bc28769f8606139a3d350d2d
> "Kbuild, lto: Add Link Time Optimization support v3"

That commit needs updating for other reasons, so feel free to fix
ld-ifversion and its usage in arch/mips.

Michal


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
  2016-01-05  9:20     ` Michal Marek
@ 2016-01-05 10:06       ` James Hogan
  0 siblings, 0 replies; 7+ messages in thread
From: James Hogan @ 2016-01-05 10:06 UTC (permalink / raw)
  To: Michal Marek
  Cc: Guenter Roeck, Ralf Baechle, linux-mips, linux-kernel,
	Qais Yousef, Andi Kleen

[-- Attachment #1: Type: text/plain, Size: 3743 bytes --]

On Tue, Jan 05, 2016 at 10:20:59AM +0100, Michal Marek wrote:
> On 2015-12-24 13:57, James Hogan wrote:
> > On Thu, Dec 24, 2015 at 12:48:12PM +0000, James Hogan wrote:
> >> Hi Guenter,
> >>
> >> On Wed, Dec 23, 2015 at 09:04:31PM -0800, Guenter Roeck wrote:
> >>> Commit 2a037f310bab ("MIPS: VDSO: Fix build error") tries to fix a build
> >>> error seen with binutils 2.24 and earlier. However, the fix does not work,
> >>> and again results in the already known build errors if the kernel is built
> >>> with an earlier version of binutils.
> >>>
> >>> CC      arch/mips/vdso/gettimeofday.o
> >>> /tmp/ccnOVbHT.s: Assembler messages:
> >>> /tmp/ccnOVbHT.s:50: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> >>> /tmp/ccnOVbHT.s:374: Error: can't resolve `_start' {*UND* section} - `L0 {.text section}
> >>> scripts/Makefile.build:258: recipe for target 'arch/mips/vdso/gettimeofday.o' failed
> >>> make[2]: *** [arch/mips/vdso/gettimeofday.o] Error 1
> >>>
> >>> Fixes: 2a037f310bab ("MIPS: VDSO: Fix build error")
> >>> Cc: Qais Yousef <qais.yousef@imgtec.com>
> >>> Signed-off-by: Guenter Roeck <linux@roeck-us.net>
> >>> ---
> >>> Tested with binutils 2.25 and 2.22.
> >>>
> >>>  arch/mips/vdso/Makefile | 2 +-
> >>>  1 file changed, 1 insertion(+), 1 deletion(-)
> >>>
> >>> diff --git a/arch/mips/vdso/Makefile b/arch/mips/vdso/Makefile
> >>> index 018f8c7b94f2..14568900fc1d 100644
> >>> --- a/arch/mips/vdso/Makefile
> >>> +++ b/arch/mips/vdso/Makefile
> >>> @@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
> >>>  # the comments on that file.
> >>>  #
> >>>  ifndef CONFIG_CPU_MIPSR6
> >>> -  ifeq ($(call ld-ifversion, -lt, 22500000, y),)
> >>> +  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
> >>
> >> I agree this is semantically correct, but there is something more evil
> >> going on here.
> >>
> >> Originally the check was version <= 2.24
> >> Qais' patch changed it to version >= 2.25 (intending version < 2.25)
> >> Your patch changes it to version < 2.25
> >>
> >> I think the reason this fixed the problem for Qais is actually that he
> >> probably had a similar toolchain version to what I'm using:
> >>
> >> GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90
> >>
> >> ./scripts/ld-version.sh does this:
> >>
> >> print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
> >>
> >> which changes that version number into:
> >>  20000000
> >> + 2400000
> >> +  900000 = 23300000
> >>
> >> I.e. it doesn't expect a[3] to be >= 10.
> >>
> >> Should we do something like this (increase multipliers on a[1] and
> >> a[2])?:
> >>
> >> diff --git a/scripts/ld-version.sh b/scripts/ld-version.sh
> >> index 198580d245e0..0b67edc5bc6f 100755
> >> --- a/scripts/ld-version.sh
> >> +++ b/scripts/ld-version.sh
> >> @@ -3,6 +3,6 @@
> >>  	{
> >>  	gsub(".*)", "");
> >>  	split($1,a, ".");
> >> -	print a[1]*10000000 + a[2]*100000 + a[3]*10000 + a[4]*100 + a[5];
> >> +	print a[1]*100000000 + a[2]*1000000 + a[3]*10000 + a[4]*100 + a[5];
> >>  	exit
> >>  	}
> >>
> >> which gives 2.24.90 => 224900000.
> >>
> >> All call sites would need updating too to add the extra 0, but a quick
> >> git grep isn't showing any other ones than this one.
> > 
> > Actually, linux-next includes this commit which uses ld-ifversion too:
> > 
> > 19a3cc83353e3bb4bc28769f8606139a3d350d2d
> > "Kbuild, lto: Add Link Time Optimization support v3"
> 
> That commit needs updating for other reasons, so feel free to fix
> ld-ifversion and its usage in arch/mips.

Thanks. This change is now in linux-next, and will hopefully be included
in v4.4:
http://patchwork.linux-mips.org/patch/11931/

Cheers
James

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2016-01-05 10:06 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-24  5:04 [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier Guenter Roeck
2015-12-24 12:48 ` James Hogan
2015-12-24 12:57   ` James Hogan
2016-01-05  9:20     ` Michal Marek
2016-01-05 10:06       ` James Hogan
2015-12-24 15:24   ` Guenter Roeck
2016-01-03 23:08 ` Guenter Roeck

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).