From: Michal Marek <mmarek@suse.cz>
To: James Hogan <james.hogan@imgtec.com>, Guenter Roeck <linux@roeck-us.net>
Cc: Ralf Baechle <ralf@linux-mips.org>,
linux-mips@linux-mips.org, linux-kernel@vger.kernel.org,
Qais Yousef <qais.yousef@imgtec.com>,
Andi Kleen <ak@linux.intel.com>
Subject: Re: [PATCH -next] MIPS: VDSO: Fix build error with binutils 2.24 and earlier
Date: Tue, 5 Jan 2016 10:20:59 +0100 [thread overview]
Message-ID: <568B8AFB.1020403@suse.cz> (raw)
In-Reply-To: <20151224125726.GB5376@jhogan-linux.le.imgtec.org>
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
next prev parent reply other threads:[~2016-01-05 9:21 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
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:48 ` James Hogan
2015-12-24 12:57 ` James Hogan
2015-12-24 12:57 ` James Hogan
2016-01-05 9:20 ` Michal Marek [this message]
2016-01-05 10:06 ` James Hogan
2016-01-05 10:06 ` James Hogan
2015-12-24 15:24 ` Guenter Roeck
2016-01-03 23:08 ` Guenter Roeck
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=568B8AFB.1020403@suse.cz \
--to=mmarek@suse.cz \
--cc=ak@linux.intel.com \
--cc=james.hogan@imgtec.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mips@linux-mips.org \
--cc=linux@roeck-us.net \
--cc=qais.yousef@imgtec.com \
--cc=ralf@linux-mips.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.