TT Tool: Check arch through kernel ELF

pull/154/head
Andre Richter 2 years ago
parent b7cecafa1e
commit 7ca7f6728f
No known key found for this signature in database
GPG Key ID: 2116C1AB102F615E

@ -172,7 +172,7 @@ $(KERNEL_ELF_RAW): $(KERNEL_ELF_RAW_DEPS)
$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS) $(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
$(call color_header, "Precomputing kernel translation tables and patching kernel ELF") $(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
@cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES) @cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES) @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
##------------------------------------------------------------------------------ ##------------------------------------------------------------------------------
## Generate the stripped kernel binary ## Generate the stripped kernel binary
@ -316,7 +316,7 @@ define KERNEL_TEST_RUNNER
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g') TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g') TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY $(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY $(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
endef endef

@ -615,8 +615,8 @@ BSP = case BSP_TYPE
raise raise
end end
TRANSLATION_TABLES = case TARGET TRANSLATION_TABLES = case KERNEL_ELF.machine
when :aarch64 when :AArch64
Arch::ARMv8::TranslationTable.new Arch::ARMv8::TranslationTable.new
else else
raise raise
@ -856,7 +856,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/Makefile 15_virtual_mem_part3_precompu
+$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS) +$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
+ $(call color_header, "Precomputing kernel translation tables and patching kernel ELF") + $(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
+ @cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES) + @cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
+ @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES) + @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
+ +
+##------------------------------------------------------------------------------ +##------------------------------------------------------------------------------
## Generate the stripped kernel binary ## Generate the stripped kernel binary
@ -873,7 +873,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/Makefile 15_virtual_mem_part3_precompu
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g') TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g') TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
+ $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null + $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY $(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY $(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
endef endef
@ -2458,7 +2458,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/generic.rb 15_v
diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb
--- 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb --- 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb
+++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb +++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/kernel_elf.rb
@@ -0,0 +1,92 @@ @@ -0,0 +1,96 @@
+# frozen_string_literal: true +# frozen_string_literal: true
+ +
+# SPDX-License-Identifier: MIT OR Apache-2.0 +# SPDX-License-Identifier: MIT OR Apache-2.0
@ -2474,6 +2474,10 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 1
+ @symtab_section = @elf.section_by_name('.symtab') + @symtab_section = @elf.section_by_name('.symtab')
+ end + end
+ +
+ def machine
+ @elf.machine.to_sym
+ end
+
+ def symbol_value(symbol_name) + def symbol_value(symbol_name)
+ @symtab_section.symbol_by_name(symbol_name).header.st_value + @symtab_section.symbol_by_name(symbol_name).header.st_value
+ end + end
@ -2555,7 +2559,7 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/kernel_elf.rb 1
diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb
--- 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb --- 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb
+++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb +++ 15_virtual_mem_part3_precomputed_tables/translation_table_tool/main.rb
@@ -0,0 +1,47 @@ @@ -0,0 +1,46 @@
+#!/usr/bin/env ruby +#!/usr/bin/env ruby
+# frozen_string_literal: true +# frozen_string_literal: true
+ +
@ -2563,10 +2567,6 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virt
+# +#
+# Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com> +# Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com>
+ +
+TARGET = ARGV[0].split('-').first.to_sym
+BSP_TYPE = ARGV[1].to_sym
+kernel_elf_path = ARGV[2]
+
+require 'rubygems' +require 'rubygems'
+require 'bundler/setup' +require 'bundler/setup'
+require 'colorize' +require 'colorize'
@ -2577,6 +2577,9 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virt
+require_relative 'bsp' +require_relative 'bsp'
+require_relative 'arch' +require_relative 'arch'
+ +
+BSP_TYPE = ARGV[0].to_sym
+kernel_elf_path = ARGV[1]
+
+start = Time.now +start = Time.now
+ +
+KERNEL_ELF = KernelELF.new(kernel_elf_path) +KERNEL_ELF = KernelELF.new(kernel_elf_path)
@ -2588,8 +2591,8 @@ diff -uNr 14_virtual_mem_part2_mmio_remap/translation_table_tool/main.rb 15_virt
+ raise + raise
+ end + end
+ +
+TRANSLATION_TABLES = case TARGET +TRANSLATION_TABLES = case KERNEL_ELF.machine
+ when :aarch64 + when :AArch64
+ Arch::ARMv8::TranslationTable.new + Arch::ARMv8::TranslationTable.new
+ else + else
+ raise + raise

@ -13,6 +13,10 @@ class KernelELF
@symtab_section = @elf.section_by_name('.symtab') @symtab_section = @elf.section_by_name('.symtab')
end end
def machine
@elf.machine.to_sym
end
def symbol_value(symbol_name) def symbol_value(symbol_name)
@symtab_section.symbol_by_name(symbol_name).header.st_value @symtab_section.symbol_by_name(symbol_name).header.st_value
end end

@ -5,10 +5,6 @@
# #
# Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com> # Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com>
TARGET = ARGV[0].split('-').first.to_sym
BSP_TYPE = ARGV[1].to_sym
kernel_elf_path = ARGV[2]
require 'rubygems' require 'rubygems'
require 'bundler/setup' require 'bundler/setup'
require 'colorize' require 'colorize'
@ -19,6 +15,9 @@ require_relative 'kernel_elf'
require_relative 'bsp' require_relative 'bsp'
require_relative 'arch' require_relative 'arch'
BSP_TYPE = ARGV[0].to_sym
kernel_elf_path = ARGV[1]
start = Time.now start = Time.now
KERNEL_ELF = KernelELF.new(kernel_elf_path) KERNEL_ELF = KernelELF.new(kernel_elf_path)
@ -30,8 +29,8 @@ BSP = case BSP_TYPE
raise raise
end end
TRANSLATION_TABLES = case TARGET TRANSLATION_TABLES = case KERNEL_ELF.machine
when :aarch64 when :AArch64
Arch::ARMv8::TranslationTable.new Arch::ARMv8::TranslationTable.new
else else
raise raise

@ -172,7 +172,7 @@ $(KERNEL_ELF_RAW): $(KERNEL_ELF_RAW_DEPS)
$(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS) $(KERNEL_ELF_TTABLES): $(KERNEL_ELF_TTABLES_DEPS)
$(call color_header, "Precomputing kernel translation tables and patching kernel ELF") $(call color_header, "Precomputing kernel translation tables and patching kernel ELF")
@cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES) @cp $(KERNEL_ELF_RAW) $(KERNEL_ELF_TTABLES)
@$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $(KERNEL_ELF_TTABLES) @$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $(KERNEL_ELF_TTABLES)
##------------------------------------------------------------------------------ ##------------------------------------------------------------------------------
## Generate the stripped kernel binary ## Generate the stripped kernel binary
@ -316,7 +316,7 @@ define KERNEL_TEST_RUNNER
TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g') TEST_ELF=$$(echo $$1 | sed -e 's/.*target/target/g')
TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g') TEST_BINARY=$$(echo $$1.img | sed -e 's/.*target/target/g')
$(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(TARGET) $(BSP) $$TEST_ELF > /dev/null $(DOCKER_TOOLS) $(EXEC_TT_TOOL) $(BSP) $$TEST_ELF > /dev/null
$(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY $(OBJCOPY_CMD) $$TEST_ELF $$TEST_BINARY
$(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY $(DOCKER_TEST) $(EXEC_TEST_DISPATCH) $(EXEC_QEMU) $(QEMU_TEST_ARGS) -kernel $$TEST_BINARY
endef endef

@ -13,6 +13,10 @@ class KernelELF
@symtab_section = @elf.section_by_name('.symtab') @symtab_section = @elf.section_by_name('.symtab')
end end
def machine
@elf.machine.to_sym
end
def symbol_value(symbol_name) def symbol_value(symbol_name)
@symtab_section.symbol_by_name(symbol_name).header.st_value @symtab_section.symbol_by_name(symbol_name).header.st_value
end end

@ -5,10 +5,6 @@
# #
# Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com> # Copyright (c) 2021-2022 Andre Richter <andre.o.richter@gmail.com>
TARGET = ARGV[0].split('-').first.to_sym
BSP_TYPE = ARGV[1].to_sym
kernel_elf_path = ARGV[2]
require 'rubygems' require 'rubygems'
require 'bundler/setup' require 'bundler/setup'
require 'colorize' require 'colorize'
@ -19,6 +15,9 @@ require_relative 'kernel_elf'
require_relative 'bsp' require_relative 'bsp'
require_relative 'arch' require_relative 'arch'
BSP_TYPE = ARGV[0].to_sym
kernel_elf_path = ARGV[1]
start = Time.now start = Time.now
KERNEL_ELF = KernelELF.new(kernel_elf_path) KERNEL_ELF = KernelELF.new(kernel_elf_path)
@ -30,8 +29,8 @@ BSP = case BSP_TYPE
raise raise
end end
TRANSLATION_TABLES = case TARGET TRANSLATION_TABLES = case KERNEL_ELF.machine
when :aarch64 when :AArch64
Arch::ARMv8::TranslationTable.new Arch::ARMv8::TranslationTable.new
else else
raise raise

Loading…
Cancel
Save