Fix ld-version.sh to handle large 3rd version part
authorJames Hogan <james.hogan@imgtec.com>
Sat, 26 Dec 2015 22:47:52 +0000 (22:47 +0000)
committerRalf Baechle <ralf@linux-mips.org>
Mon, 4 Jan 2016 09:22:52 +0000 (10:22 +0100)
The ld-version.sh script doesn't handle versions with large (>= 10) 3rd
version components, because the 2nd component is only multiplied by 10
times that of the 3rd component.

For example the following version string:
GNU ld (Codescape GNU Tools 2015.06-05 for MIPS MTI Linux) 2.24.90

gives a bogus version number:
 20000000
2400000
+  900000 = 23300000

Breakage, confusion and mole-whacking ensues.

Increase the multipliers of the first two version components by a factor
of 10 to give space for a 3rd components of up to 99, and update the
sole user of ld-ifversion (MIPS VDSO) accordingly.

Signed-off-by: James Hogan <james.hogan@imgtec.com>
Acked-by: Guenter Roeck <linux@roeck-us.net>
Reviewed-by: Andi Kleen <ak@linux.intel.com>
Cc: Andi Kleen <ak@linux.intel.com>
Cc: Michal Marek <mmarek@suse.cz>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: linux-mips@linux-mips.org
Cc: linux-kernel@vger.kernel.org
Patchwork: https://patchwork.linux-mips.org/patch/11931/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
arch/mips/vdso/Makefile
scripts/ld-version.sh

index 14568900fc1d14ec2e0ff6b2d7152232c8b867bb..ee3617c0c5e2eb9388d01c1ae6e92846f86bc2a1 100644 (file)
@@ -26,7 +26,7 @@ aflags-vdso := $(ccflags-vdso) \
 # the comments on that file.
 #
 ifndef CONFIG_CPU_MIPSR6
-  ifeq ($(call ld-ifversion, -lt, 22500000, y),y)
+  ifeq ($(call ld-ifversion, -lt, 225000000, y),y)
     $(warning MIPS VDSO requires binutils >= 2.25)
     obj-vdso-y := $(filter-out gettimeofday.o, $(obj-vdso-y))
     ccflags-vdso += -DDISABLE_MIPS_VDSO
index 198580d245e033b8b674fdad3d1aa1cb21f0fd2e..0b67edc5bc6fbb7464c2e8ce4f8f141e7eca66fd 100755 (executable)
@@ -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
        }