Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > linux.kernel > #1297746 > unrolled thread

[PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier

Started byGuenter Roeck <linux@roeck-us.net>
First post2015-12-24 06:10 +0100
Last post2015-12-24 16:30 +0100
Articles 4 — 2 participants

Back to article view | Back to linux.kernel


Contents

  [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier Guenter Roeck <linux@roeck-us.net> - 2015-12-24 06:10 +0100
    Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and  earlier James Hogan <james.hogan@imgtec.com> - 2015-12-24 13:50 +0100
      Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and  earlier James Hogan <james.hogan@imgtec.com> - 2015-12-24 14:00 +0100
      Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and  earlier Guenter Roeck <linux@roeck-us.net> - 2015-12-24 16:30 +0100

#1297746 — [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier

FromGuenter Roeck <linux@roeck-us.net>
Date2015-12-24 06:10 +0100
Subject[PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
Message-ID<qJ6k1-2vP-1@gated-at.bofh.it>
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [next] | [standalone]


#1297837 — Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier

FromJames Hogan <james.hogan@imgtec.com>
Date2015-12-24 13:50 +0100
SubjectRe: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
Message-ID<qJdvb-6KI-1@gated-at.bofh.it>
In reply to#1297746

[Multipart message — attachments visible in raw view] — view raw

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
> 
> 

[toc] | [prev] | [next] | [standalone]


#1297847 — Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier

FromJames Hogan <james.hogan@imgtec.com>
Date2015-12-24 14:00 +0100
SubjectRe: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
Message-ID<qJdET-6Ob-23@gated-at.bofh.it>
In reply to#1297837

[Multipart message — attachments visible in raw view] — view raw

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
> > 
> > 


[toc] | [prev] | [next] | [standalone]


#1297898 — Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier

FromGuenter Roeck <linux@roeck-us.net>
Date2015-12-24 16:30 +0100
SubjectRe: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
Message-ID<qJg01-8rx-7@gated-at.bofh.it>
In reply to#1297837
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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[toc] | [prev] | [standalone]


Back to top | Article view | linux.kernel


csiph-web