Fix linker RWX warning
This commit is contained in:
9
Rakefile
9
Rakefile
@@ -350,7 +350,7 @@ rule '.elna.o' => ->(match) {
|
|||||||
architecture, *path_components = relative_from_tmp(match).to_a
|
architecture, *path_components = relative_from_tmp(match).to_a
|
||||||
path_components[-1] = path_components.last.ext('')
|
path_components[-1] = path_components.last.ext('')
|
||||||
|
|
||||||
[File.join(path_components), TMP + architecture]
|
[File.join('source', path_components), TMP + architecture]
|
||||||
} do |t|
|
} do |t|
|
||||||
options = BuildTarget.new relative_from_tmp(t.name).first
|
options = BuildTarget.new relative_from_tmp(t.name).first
|
||||||
compiler = options.rootfs + "bin/#{options.target}-gcc"
|
compiler = options.rootfs + "bin/#{options.target}-gcc"
|
||||||
@@ -366,10 +366,11 @@ rule 'kernel.elf' => ->(match) {
|
|||||||
|
|
||||||
arch_objects = FileList["arch/#{instruction_set}/*.s"]
|
arch_objects = FileList["arch/#{instruction_set}/*.s"]
|
||||||
.map { |source| Pathname.new(source).relative_path_from("arch/#{instruction_set}").sub_ext('.s.o') }
|
.map { |source| Pathname.new(source).relative_path_from("arch/#{instruction_set}").sub_ext('.s.o') }
|
||||||
.map { |source| TMP + architecture + source }
|
source_objects = FileList['source/*.elna']
|
||||||
.map(&:to_path)
|
.map { |source| Pathname.new(source).relative_path_from('source').sub_ext('.elna.o') }
|
||||||
|
objects = (arch_objects + source_objects).map { |source| (TMP + architecture + source).to_s }
|
||||||
|
|
||||||
arch_objects + FileList['*.elna'].map { |source| (TMP + architecture + source).to_path + '.o' } << 'kernel.ld'
|
objects << "arch/#{instruction_set}/kernel.ld"
|
||||||
} do |t|
|
} do |t|
|
||||||
options = BuildTarget.new relative_from_tmp(t.name).first
|
options = BuildTarget.new relative_from_tmp(t.name).first
|
||||||
compiler = options.rootfs + "bin/#{options.target}-gcc"
|
compiler = options.rootfs + "bin/#{options.target}-gcc"
|
||||||
|
@@ -1,25 +1,28 @@
|
|||||||
OUTPUT_ARCH( "riscv" )
|
OUTPUT_ARCH("riscv")
|
||||||
OUTPUT_FORMAT("elf32-littleriscv")
|
OUTPUT_FORMAT("elf32-littleriscv")
|
||||||
ENTRY(boot)
|
ENTRY(_entry)
|
||||||
|
|
||||||
|
PHDRS {
|
||||||
|
text PT_LOAD FLAGS(5);
|
||||||
|
data PT_LOAD FLAGS(6);
|
||||||
|
}
|
||||||
|
|
||||||
SECTIONS {
|
SECTIONS {
|
||||||
. = 0x80200000;
|
.text 0x80200000 : {
|
||||||
__kernel_base = .;
|
__kernel_base = .;
|
||||||
|
|
||||||
.text :{
|
|
||||||
KEEP(*(.text.boot));
|
KEEP(*(.text.boot));
|
||||||
*(.text .text.*);
|
*(.text .text.*);
|
||||||
}
|
} :text
|
||||||
|
|
||||||
.rodata : ALIGN(4) {
|
.rodata : ALIGN(16) {
|
||||||
*(.rodata .rodata.*);
|
*(.rodata .rodata.*);
|
||||||
}
|
}
|
||||||
|
|
||||||
.data : ALIGN(4) {
|
.data : ALIGN(16) {
|
||||||
*(.data .data.*);
|
*(.data .data.*);
|
||||||
}
|
} :data
|
||||||
|
|
||||||
.bss : ALIGN(4) {
|
.bss : ALIGN(16) {
|
||||||
__bss = .;
|
__bss = .;
|
||||||
*(.bss .bss.* .sbss .sbss.*);
|
*(.bss .bss.* .sbss .sbss.*);
|
||||||
__bss_end = .;
|
__bss_end = .;
|
||||||
@@ -29,6 +32,6 @@ SECTIONS {
|
|||||||
. += 128 * 1024; /* 128KB */
|
. += 128 * 1024; /* 128KB */
|
||||||
__stack_top = .;
|
__stack_top = .;
|
||||||
|
|
||||||
. = ALIGN(4096);
|
. = ALIGN(CONSTANT(MAXPAGESIZE));
|
||||||
__free_ram = .;
|
__free_ram = .;
|
||||||
}
|
}
|
@@ -1,4 +1,4 @@
|
|||||||
.global kernel_main, __bss, __bss_end, __stack_top
|
.global _entry, __bss, __bss_end, __stack_top
|
||||||
|
|
||||||
.section .rodata
|
.section .rodata
|
||||||
|
|
||||||
@@ -215,7 +215,7 @@ panic:
|
|||||||
ret
|
ret
|
||||||
|
|
||||||
.section .text.boot
|
.section .text.boot
|
||||||
boot:
|
_entry:
|
||||||
la t0, __stack_top
|
la t0, __stack_top
|
||||||
mv sp, t0 # Set the stack pointer
|
mv sp, t0 # Set the stack pointer
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user