Added separate toolchains for userspace and kernel.

This commit is contained in:
Amit Mahajan
2010-03-30 20:15:39 +05:30
parent 2b340c9f2f
commit ab728dd1d5
32 changed files with 72 additions and 56 deletions

View File

@@ -96,7 +96,7 @@ class LinuxContainerPacker:
self.atags_elf_in])
self.generate_container_assembler([self.kernel_image_in, self.rootfs_elf_in, \
self.atags_elf_in])
os.system(config.toolchain + "gcc " + "-nostdlib -o %s -T%s %s" \
os.system(config.toolchain_kernel + "gcc " + "-nostdlib -o %s -T%s %s" \
% (self.container_elf_out, self.container_lds_out, \
self.container_S_out))
# Final file is returned so that the final packer needn't
@@ -155,7 +155,7 @@ class DefaultContainerPacker:
def pack_container(self, config):
self.generate_container_lds(self.images_in)
self.generate_container_assembler(self.images_in)
os.system(config.toolchain + "gcc " + "-nostdlib -o %s -T%s %s" \
os.system(config.toolchain_kernel + "gcc " + "-nostdlib -o %s -T%s %s" \
% (self.container_elf_out, self.container_lds_out, \
self.container_S_out))
# Final file is returned so that the final packer needn't

View File

@@ -79,7 +79,7 @@ class AllContainerPacker:
def pack_all(self, config):
self.generate_container_lds(self.containers_lds_out)
self.generate_container_S(self.containers_S_out)
os.system(config.toolchain + "gcc " + "-nostdlib -o %s -T%s %s" \
os.system(config.toolchain_kernel + "gcc " + "-nostdlib -o %s -T%s %s" \
% (self.containers_elf_out, self.containers_lds_out, \
self.containers_S_out))

View File

@@ -64,7 +64,7 @@ class AtagsBuilder:
with open(self.atags_h_in, 'r') as input:
output.write(input.read() % {'cn' : self.cont_id})
os.system(config.toolchain + "cpp -I%s -P %s > %s" % \
os.system(config.toolchain_userspace + "cpp -I%s -P %s > %s" % \
(self.LINUX_ATAGS_BUILDDIR, self.atags_lds_in, \
self.atags_lds_out))
@@ -72,7 +72,7 @@ class AtagsBuilder:
with open(self.atags_c_in, 'r') as input:
output.write(input.read() % {'cn' : self.cont_id})
os.system(config.toolchain + "gcc " + \
os.system(config.toolchain_userspace + "gcc " + \
"-g -ffreestanding -std=gnu99 -Wall -Werror " + \
"-nostdlib -o %s -T%s %s" % \
(self.atags_elf_out, self.atags_lds_out, self.atags_c_out))

View File

@@ -189,20 +189,22 @@ class LinuxBuilder:
for platform, config_file in self.platform_config_file:
if platform == config.platform.upper():
configuration_file = config_file
os.system("make ARCH=codezero CROSS_COMPILE=" + config.toolchain + \
os.system("make ARCH=codezero CROSS_COMPILE=" + \
config.toolchain_userspace + \
" O=" + self.LINUX_KERNEL_BUILDDIR + " " + configuration_file)
self.kernel_updater.modify_kernel_config(self.LINUX_KERNEL_BUILDDIR)
self.kernel_updater.update_kernel_params(config, self.container)
os.system("make ARCH=codezero CROSS_COMPILE=" + config.toolchain + \
os.system("make ARCH=codezero CROSS_COMPILE=" + \
config.toolchain_userspace + \
" O=" + self.LINUX_KERNEL_BUILDDIR + " menuconfig")
os.system("make ARCH=codezero " + \
"CROSS_COMPILE=" + config.toolchain + " O=" + \
self.LINUX_KERNEL_BUILDDIR)
"CROSS_COMPILE=" + config.toolchain_userspace + \
" O=" + self.LINUX_KERNEL_BUILDDIR)
# Generate kernel_image, elf to be used by codezero
linux_elf_gen_cmd = (config.toolchain + "objcopy -R .note \
linux_elf_gen_cmd = (config.toolchain_userspace + "objcopy -R .note \
-R .note.gnu.build-id -R .comment -S --change-addresses " + \
str(conv_hex(-self.container.linux_page_offset + self.container.linux_phys_offset)) + \
" " + self.kernel_binary_image + " " + self.kernel_image)

View File

@@ -51,10 +51,10 @@ class RootfsBuilder:
with open(self.rootfs_h_in, 'r') as input:
output.write(input.read() % {'cn' : self.cont_id})
os.system(config.toolchain + "cpp -I%s -P %s > %s" % \
os.system(config.toolchain_userspace + "cpp -I%s -P %s > %s" % \
(self.LINUX_ROOTFS_BUILDDIR, self.rootfs_lds_in, \
self.rootfs_lds_out))
os.system(config.toolchain + "gcc " + \
os.system(config.toolchain_userspace + "gcc " + \
"-nostdlib -o %s -T%s rootfs.S" % (self.rootfs_elf_out, \
self.rootfs_lds_out))
print "Done..."

View File

@@ -53,7 +53,7 @@ def generate_ksym_to_loader(target_path, source_path):
asm_file.write(ksym_header % (target_path, source_path, sys.argv[0]))
for symbol in symbols:
process = \
subprocess.Popen(config.toolchain + 'objdump -d ' + \
subprocess.Popen(config.toolchain_kernel + 'objdump -d ' + \
source_path + ' | grep "<' + \
symbol + '>"', shell=True, \
stdout=subprocess.PIPE)