[haiku-commits] Change in haiku[master]: arm64: Add ldscripts, add haikuports repo, fix stage0 cross pkg

  • From: Gerrit <review@xxxxxxxxxxxxxxxxxxx>
  • To: waddlesplash <waddlesplash@xxxxxxxxx>, haiku-commits@xxxxxxxxxxxxx
  • Date: Sun, 29 Mar 2020 15:56:22 +0000

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

Other related posts:

  • » [haiku-commits] Change in haiku[master]: arm64: Add ldscripts, add haikuports repo, fix stage0 cross pkg - Gerrit