From Alex von Gluck IV <kallisti5@xxxxxxxxxxx>:
Alex von Gluck IV has uploaded this change for review. (
https://review.haiku-os.org/c/haiku/+/2444 ;)
Change subject: arm64: Add ldscripts, add haikuports repo, fix stage0 cross pkg
......................................................................
arm64: Add ldscripts, add haikuports repo, fix stage0 cross pkg
Change-Id: Iee6f277463631e9a512975c3e2387c784ce52189
---
A build/jam/repositories/HaikuPorts/arm64
M build/jam/repositories/HaikuPortsCross/arm64
A src/system/ldscripts/arm64/boot_loader_efi.ld
A src/system/ldscripts/arm64/kernel.ld
A src/system/ldscripts/arm64/runtime_loader.ld
5 files changed, 288 insertions(+), 2 deletions(-)
git pull ssh://git.haiku-os.org:22/haiku refs/changes/44/2444/1
diff --git a/build/jam/repositories/HaikuPorts/arm64
b/build/jam/repositories/HaikuPorts/arm64
new file mode 100644
index 0000000..e838cdd
--- /dev/null
+++ b/build/jam/repositories/HaikuPorts/arm64
@@ -0,0 +1,70 @@
+RemotePackageRepository HaikuPorts
+ : arm64
+ : https://eu.hpkg.haiku-os.org/haikuports/master/build-packages
+ :
+ # architecture "any" packages
+ be_book-2008_10_26-3
+ ca_root_certificates-2019_01_23-1
+ gnu_efi_kernel-3.0.10-1
+ haikuporter-1.2.2-2
+ noto-20170920-3
+ timgmsoundfont-fixed-5
+ wqy_microhei-0.2.0~beta-4
+ :
+ # repository architecture packages
+ # primary architecture (arm64)
+ bash-4.4.023-1
+ binutils-2.28.1_2017_08_05-1
+ bison-3.0.5-1
+ coreutils-8.22-1
+ curl-7.40.0-1
+ curl_devel-7.40.0-1
+ expat-2.1.0-1
+ expat_devel-2.1.0-1
+ findutils-4.6.0-1
+ flex-2.5.35-1
+ freetype-2.6.3-1
+ freetype_devel-2.6.3-1
+ gawk-3.1.8-2
+ gcc_syslibs_devel-8.3.0_2019_05_24-1
+ gcc_syslibs-8.3.0_2019_05_24-1
+ grep-2.14-1
+ icu-57.1-2
+ icu_devel-57.1-2
+ less-451-1
+ libsolv-0.3.0_haiku_2014_12_22-1
+ libsolv_devel-0.3.0_haiku_2014_12_22-1
+ m4-1.4.16-1
+ make-4.1-2
+ mawk-1.3.4-1
+ ncurses6-6.0-1
+ ncurses6_devel-6.0-1
+ python-2.7.6-1
+ sed-4.2.1-1
+ texinfo-4.13a-1
+ zlib-1.2.11-1
+ zlib_devel-1.2.11-1
+ :
+ # source packages
+ bash
+ binutils
+ bison
+ coreutils
+ curl
+ expat
+ flex
+ freetype
+ gcc
+ grep
+ icu
+ libsolv
+ m4
+ make
+ ncurses6
+ python
+ sed
+ texinfo
+ zlib
+ :
+ # debuginfo packages
+ ;
diff --git a/build/jam/repositories/HaikuPortsCross/arm64
b/build/jam/repositories/HaikuPortsCross/arm64
index bd969b1..785f91f 100644
--- a/build/jam/repositories/HaikuPortsCross/arm64
+++ b/build/jam/repositories/HaikuPortsCross/arm64
@@ -7,8 +7,8 @@
:
# repository architecture packages (stage 0)
gcc_bootstrap-8.3.0_2019_05_24-1
- gcc_bootstrap_syslibs-8.3.0_2019_05_24-1
- gcc_bootstrap_syslibs_devel-8.3.0_2019_05_24-1
+ gcc_bootstrap_syslibs-8.3.0_2019_05_24-3
+ gcc_bootstrap_syslibs_devel-8.3.0_2019_05_24-3
:
# repository architecture packages (stage 1)
bash_bootstrap-4.4.023-1
diff --git a/src/system/ldscripts/arm64/boot_loader_efi.ld
b/src/system/ldscripts/arm64/boot_loader_efi.ld
new file mode 100644
index 0000000..9b552f0
--- /dev/null
+++ b/src/system/ldscripts/arm64/boot_loader_efi.ld
@@ -0,0 +1,68 @@
+OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64",
"elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+ENTRY(_start)
+SECTIONS
+{
+ .text 0x0 : {
+ _text = .;
+ *(.text.head)
+ *(.text)
+ *(.text.*)
+ *(.gnu.linkonce.t.*)
+ *(.srodata)
+ *(.rodata*)
+ . = ALIGN(16);
+ }
+ _etext = .;
+ _text_size = . - _text;
+ .dynamic : { *(.dynamic) }
+ .data :
+ {
+ __ctor_list = .;
+ *(.ctors)
+ __ctor_end = .;
+ _data = .;
+ *(.sdata)
+ *(.data)
+ *(.data1)
+ *(.data.*)
+ *(.got.plt)
+ *(.got)
+
+ /* the EFI loader doesn't seem to like a .bss section, so we stick
+ it all into .data: */
+ . = ALIGN(16);
+ _bss = .;
+ *(.sbss)
+ *(.scommon)
+ *(.dynbss)
+ *(.bss)
+ *(.bss.*)
+ *(COMMON)
+ . = ALIGN(16);
+ _bss_end = .;
+ }
+
+ .rel.dyn : { *(.rel.dyn) }
+ .rel.plt : { *(.rel.plt) }
+ .rel.got : { *(.rel.got) }
+ .rel.data : { *(.rel.data) *(.rel.data*) }
+ _edata = .;
+ _data_size = . - _etext;
+
+ . = ALIGN(4096);
+ .dynsym : { *(.dynsym) }
+ . = ALIGN(4096);
+ .dynstr : { *(.dynstr) }
+ . = ALIGN(4096);
+
+ _end = . ;
+ .note.gnu.build-id : { *(.note.gnu.build-id) }
+ /DISCARD/ :
+ {
+ *(.rel.reloc)
+ *(.eh_frame)
+ *(.note.GNU-stack)
+ }
+ .comment 0 : { *(.comment) }
+}
diff --git a/src/system/ldscripts/arm64/kernel.ld
b/src/system/ldscripts/arm64/kernel.ld
new file mode 100644
index 0000000..f3f5035
--- /dev/null
+++ b/src/system/ldscripts/arm64/kernel.ld
@@ -0,0 +1,80 @@
+OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64",
"elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+
+/* XXX: this shouldn't be needed to make kernel_arm64 have separate text and
data segments!!! */
+PHDRS
+{
+ headers PT_PHDR PHDRS ;
+ text PT_LOAD FILEHDR PHDRS ;
+ data PT_LOAD ;
+ dynamic PT_DYNAMIC ;
+}
+
+ENTRY(_start)
+SEARCH_DIR("libgcc");
+SECTIONS
+{
+ . = 0x80000000 + SIZEOF_HEADERS;
+
+ .interp : { *(.interp) } :text
+ .hash : { *(.hash) }
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ .rel.text : { *(.rel.text) *(.rel.gnu.linkonce.t*) }
+ .rela.text : { *(.rela.text) *(.rela.gnu.linkonce.t*) }
+ .rel.data : { *(.rel.data) *(.rel.gnu.linkonce.d*) }
+ .rela.data : { *(.rela.data) *(.rela.gnu.linkonce.d*) }
+ .rel.rodata : { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata : { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+ .rela.ctors : { *(.rela.ctors) }
+ .rel.dtors : { *(.rel.dtors) }
+ .rela.dtors : { *(.rela.dtors) }
+ .rel.init : { *(.rel.init) }
+ .rela.init : { *(.rela.init) }
+ .rel.fini : { *(.rel.fini) }
+ .rela.fini : { *(.rela.fini) }
+ .rel.bss : { *(.rel.bss) }
+ .rela.bss : { *(.rela.bss) }
+ .rel.plt : { *(.rel.plt) }
+ .rela.plt : { *(.rela.plt) }
+ .init : { *(.init) } =0x9090
+ .plt : { *(.plt) }
+
+ /* text/read-only data */
+ .text : { *(.text .gnu.linkonce.t.*) } :text =0x9090
+
+ .rodata : { *(.rodata) }
+
+ /* exception unwinding - should really not be needed! XXX: find the
correct place. */
+ __exidx_start = .;
+ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+ __exidx_end = .;
+
+ /* writable data */
+ . = ALIGN(0x1000);
+ __data_start = .;
+ .data : { *(.data .gnu.linkonce.d.*) } :data
+
+ . = ALIGN(0x4);
+ __ctor_list = .;
+ .ctors : { *(.ctors) }
+ __ctor_end = .;
+ __dtor_list = .;
+ .dtors : { *(.dtors) }
+ __dtor_end = .;
+ .got : { *(.got.plt) *(.got) }
+ .dynamic : { *(.dynamic) } :dynamic :data
+
+ /* uninitialized data (in same segment as writable data) */
+ __bss_start = .;
+ .bss : { *(.bss) }
+
+ . = ALIGN(0x1000);
+ _end = .;
+
+ /* Strip unnecessary stuff */
+ /DISCARD/ : { *(.comment .note .eh_frame) }
+}
diff --git a/src/system/ldscripts/arm64/runtime_loader.ld
b/src/system/ldscripts/arm64/runtime_loader.ld
new file mode 100644
index 0000000..d430046
--- /dev/null
+++ b/src/system/ldscripts/arm64/runtime_loader.ld
@@ -0,0 +1,68 @@
+OUTPUT_FORMAT("elf64-littleaarch64", "elf64-littleaarch64",
"elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+
+ENTRY(runtime_loader)
+SEARCH_DIR("libgcc");
+SECTIONS
+{
+ . = 0x00100000 + SIZEOF_HEADERS;
+
+ .interp : { *(.interp) }
+ .hash : { *(.hash) }
+ .dynsym : { *(.dynsym) }
+ .dynstr : { *(.dynstr) }
+ .rel.text : { *(.rel.text) *(.rel.gnu.linkonce.t*) }
+ .rela.text : { *(.rela.text) *(.rela.gnu.linkonce.t*) }
+ .rel.data : { *(.rel.data) *(.rel.gnu.linkonce.d*) }
+ .rela.data : { *(.rela.data) *(.rela.gnu.linkonce.d*) }
+ .rel.rodata : { *(.rel.rodata) *(.rel.gnu.linkonce.r*) }
+ .rela.rodata : { *(.rela.rodata) *(.rela.gnu.linkonce.r*) }
+ .rel.got : { *(.rel.got) }
+ .rela.got : { *(.rela.got) }
+ .rel.ctors : { *(.rel.ctors) }
+ .rela.ctors : { *(.rela.ctors) }
+ .rel.dtors : { *(.rel.dtors) }
+ .rela.dtors : { *(.rela.dtors) }
+ .rel.init : { *(.rel.init) }
+ .rela.init : { *(.rela.init) }
+ .rel.fini : { *(.rel.fini) }
+ .rela.fini : { *(.rela.fini) }
+ .rel.bss : { *(.rel.bss) }
+ .rela.bss : { *(.rela.bss) }
+ .rel.plt : { *(.rel.plt) }
+ .rela.plt : { *(.rela.plt) }
+ .init : { *(.init) } =0x9090
+ .plt : { *(.plt) }
+
+ /* text/read-only data */
+ .text : { *(.text .gnu.linkonce.t.*) }
+
+ .rodata : { *(.rodata) }
+
+ /* exception unwinding - should really not be needed! XXX: find the
correct place. */
+ __exidx_start = .;
+ .ARM.exidx : { *(.ARM.exidx* .gnu.linkonce.armexidx.*) }
+ __exidx_end = .;
+
+ /* writable data */
+ . = ALIGN(0x1000) + (. & (0x1000 - 1));
+ __data_start = .;
+ PROVIDE(_data_start = .);
+ .data : { *(.data .gnu.linkonce.d.*) }
+
+ __ctor_list = .;
+ PROVIDE (_ctor_list = .);
+ .ctors : { *(.ctors) }
+ PROVIDE (__ctor_end = .);
+
+
+ /* uninitialized data (in same segment as writable data) */
+ PROVIDE (__bss_start = .);
+ .bss : { *(.bss) }
+
+ . = ALIGN(0x1000);
+ PROVIDE (_end = .);
+
+ /* Strip unnecessary stuff */
+ /DISCARD/ : { *(.comment .note .dtors) }
+}
--
To view, visit https://review.haiku-os.org/c/haiku/+/2444
To unsubscribe, or for help writing mail filters, visit
https://review.haiku-os.org/settings
Gerrit-Project: haiku
Gerrit-Branch: master
Gerrit-Change-Id: Iee6f277463631e9a512975c3e2387c784ce52189
Gerrit-Change-Number: 2444
Gerrit-PatchSet: 1
Gerrit-Owner: Alex von Gluck IV <kallisti5@xxxxxxxxxxx>
Gerrit-MessageType: newchange