[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

make oldconfig bzImage with GCC 4.9.2 on debian 8



Hi all,

I am compiling https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 
I have gcc 4.9.2 installed on my Debbian 8.0. I have compiled linux-kernel-2.6.32 on this box. Somebody may point out that this is old version and i do not waste time in compile but this is requirement and i have to do it.
Currently  i have applied following patches to this kernel:

diff -Narup linux-2.6.20-orig/arch/i386/boot/compressed/misc.c linux-2.6.20/arch/i386/boot/compressed/misc.c
--- linux-2.6.20-orig/arch/i386/boot/compressed/misc.c 2007-02-04 11:44:54.000000000 -0700
+++ linux-2.6.20/arch/i386/boot/compressed/misc.c 2007-02-09 12:04:46.000000000 -0700
@@ -372,8 +372,8 @@ asmlinkage void decompress_kernel(void *
 #endif
 
  makecrc();
- putstr("Uncompressing Linux... ");
+ putstr("Starting... ");
  gunzip();
- putstr("Ok, booting the kernel.\n");
+ //putstr("Ok, booting the kernel.\n");
  return;
 }
diff -Narup linux-2.6.20-orig/kernel/printk.c linux-2.6.20/kernel/printk.c
--- linux-2.6.20-orig/kernel/printk.c 2007-02-04 11:44:54.000000000 -0700
+++ linux-2.6.20/kernel/printk.c 2007-02-09 12:04:24.000000000 -0700
@@ -115,6 +115,8 @@ static int preferred_console = -1;
 /* Flag: console code may call schedule() */
 static int console_may_schedule;
 
+static int printk_dots = 1;
+
 #ifdef CONFIG_PRINTK
 
 static char __log_buf[__LOG_BUF_LEN];
@@ -122,6 +124,14 @@ static char *log_buf = __log_buf;
 static int log_buf_len = __LOG_BUF_LEN;
 static unsigned long logged_chars; /* Number of chars produced since last read+clear operation */
 
+static int __init printk_dots_setup(char *str)
+{
+    printk_dots = simple_strtoul(str, NULL, 10);
+    return 1;
+}
+
+__setup("printk_dots=", printk_dots_setup);
+
 static int __init log_buf_len_setup(char *str)
 {
  unsigned long size = memparse(str, &str);
@@ -359,7 +369,16 @@ static void _call_console_drivers(unsign
  log_buf_len);
  __call_console_drivers(0, end & LOG_BUF_MASK);
  } else {
- __call_console_drivers(start, end);
+ if (msg_log_level <= 2 /* KERN_CRIT, KERN_ALERT, KERN_EMERG */
+    || printk_dots == 0) {
+ __call_console_drivers(start, end);
+ }
+ else {
+ char orig = LOG_BUF(start);
+ LOG_BUF(start) = '.';
+ __call_console_drivers(start, start + 1);
+ LOG_BUF(start) = orig;
+ }
  }
  }
 }

Index: linux-2.6.20.4/Makefile
===================================================================
--- linux-2.6.20.4.orig/Makefile
+++ linux-2.6.20.4/Makefile
@@ -412,10 +412,12 @@ ifeq ($(config-targets),1)
 include $(srctree)/arch/$(ARCH)/Makefile
 export KBUILD_DEFCONFIG
 
-config %config: scripts_basic outputmakefile FORCE
+config: scripts_basic outputmakefile FORCE
+ $(Q)mkdir -p include/linux include/config
+ $(Q)$(MAKE) $(build)=scripts/kconfig $@
+%config: scripts_basic outputmakefile FORCE
  $(Q)mkdir -p include/linux include/config
  $(Q)$(MAKE) $(build)=scripts/kconfig $@
-
 else
 # ===========================================================================
 # Build targets only - this includes vmlinux, arch specific targets, clean
@@ -1439,7 +1441,7 @@ endif
  $(Q)$(MAKE) $(build)=$(build-dir) $(target-dir)$(notdir $@)
 
 # Modules
-/ %/: prepare scripts FORCE
+/: prepare scripts FORCE
  $(Q)$(MAKE) KBUILD_MODULES=$(if $(CONFIG_MODULES),1) \
  $(build)=$(build-dir)
 %.ko: prepare scripts FORCE

Index: linux-2.6.20.4/scripts/mod/sumversion.c
===================================================================
--- linux-2.6.20.4.orig/scripts/mod/sumversion.c
+++ linux-2.6.20.4/scripts/mod/sumversion.c
@@ -8,6 +8,7 @@
 #include <errno.h>
 #include <string.h>
 #include "modpost.h"
+#include <linux/limits.h>

 /*
  * Stolen form Cryptographic API.

--- ../linux/arch/i386/kernel/Makefile  2007-03-23 13:52:51.000000000 -0600
+++ arch/i386/kernel/Makefile   2015-05-26 08:54:54.206372389 -0600
@@ -56,7 +56,7 @@

 # The DSO images are built using a special linker script.
 quiet_cmd_syscall = SYSCALL $@
-      cmd_syscall = $(CC) -m elf_i386 -nostdlib $(SYSCFLAGS_$(@F)) \
+      cmd_syscall = $(CC) -m32 -nostdlib $(SYSCFLAGS_$(@F)) \
                          -Wl,-T,$(filter-out FORCE,$^) -o $@

 export CPPFLAGS_vsyscall.lds += -P -C -U$(ARCH)


After this i got some error while make bzImage as follows:

  LD      arch/i386/lib/built-in.o
  CC      arch/i386/lib/bitops.o
  AS      arch/i386/lib/checksum.o
  CC      arch/i386/lib/delay.o
  AS      arch/i386/lib/getuser.o
  CC      arch/i386/lib/memcpy.o
  AS      arch/i386/lib/putuser.o
  AS      arch/i386/lib/semaphore.o
  CC      arch/i386/lib/strstr.o
  CC      arch/i386/lib/usercopy.o
In file included from include/linux/blkdev.h:10:0,
                 from arch/i386/lib/usercopy.c:10:
include/linux/pagemap.h: In function ‘fault_in_pages_readable’:
include/linux/pagemap.h:222:16: warning: variable ‘c’ set but not used [-Wunused-but-set-variable]
  volatile char c;
                ^
  AR      arch/i386/lib/lib.a
  GEN     .version
  CHK     include/linux/compile.h
  UPD     include/linux/compile.h
  CC      init/version.o
  LD      init/built-in.o
  LD      vmlinux
kernel/built-in.o: In function `mutex_lock':
(.sched.text+0xea5): undefined reference to `__mutex_lock_slowpath'
kernel/built-in.o: In function `mutex_unlock':
(.sched.text+0xeb5): undefined reference to `__mutex_unlock_slowpath'
Makefile:744: recipe for target 'vmlinux' failed
make: *** [vmlinux] Error 1

I am doing this as a requirement. Please help me resolve this issue.
Thanks in advance.
Dhiraj

Reply to: