[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [PATCH 36/40] arm64: add the link file



Hi Shijie,

On 03/11/17 03:12, Huang Shijie wrote:
This patch adds the link file for arm64.

This patch is based on Chen Baozi's patch:
    "arm64: Add the support for arm64"

Change-Id: Ida3f7806af1c29e85e2c60073965043167acb510
Jira: ENTOS-247
Signed-off-by: Huang Shijie <shijie.huang@xxxxxxx>
---
  Makefile                          |  3 ++
  arch/arm/arm64/minios-arm64.lds.S | 76 +++++++++++++++++++++++++++++++++++++++
  2 files changed, 79 insertions(+)
  create mode 100644 arch/arm/arm64/minios-arm64.lds.S

diff --git a/Makefile b/Makefile
index 43075e1..ab86dce 100644
--- a/Makefile
+++ b/Makefile
@@ -164,6 +164,9 @@ endif
  $(OBJ_DIR)/arch/x86/minios-x86%.lds:  arch/x86/minios-x86.lds.S
        $(CPP) $(ASFLAGS) -P $< -o $@
+$(OBJ_DIR)/arch/arm/arm64/minios-$(MINIOS_TARGET_ARCH).lds: arch/arm/arm64/minios-$(MINIOS_TARGET_ARCH).lds.S
+       $(CPP) $(ASFLAGS) -I $(OBJ_DIR)/include/arm/arm64 -P $< -o $@
+
  $(OBJ_DIR)/$(TARGET): $(OBJS) $(APP_O) arch_lib 
$(OBJ_DIR)/$(TARGET_ARCH_DIR)/minios-$(MINIOS_TARGET_ARCH).lds
        $(LD) -r $(LDFLAGS) $(HEAD_OBJ) $(APP_O) $(OBJS) $(LDARCHLIB) $(LDLIBS) 
-o $@.o
        $(OBJCOPY) -w -G $(GLOBAL_PREFIX)* -G _start $@.o $@.o
diff --git a/arch/arm/arm64/minios-arm64.lds.S 
b/arch/arm/arm64/minios-arm64.lds.S
new file mode 100644
index 0000000..8d2e91f
--- /dev/null
+++ b/arch/arm/arm64/minios-arm64.lds.S
@@ -0,0 +1,76 @@
+#include <pagetable.h>
+
+OUTPUT_FORMAT("elf64-littleaarch64")
+OUTPUT_ARCH(aarch64)
+ENTRY(_start)
+SECTIONS
+{
+  . = (0xffffffffffffffff << (VA_BITS - 1));

How did you decide that value?

+  _text = .;                   /* Text and read-only data */
+  .text : {
+       *(.text)
+       *(.gnu.warning)
+  }
+
+  _etext = .;                  /* End of text section */
+
+  .rodata : { *(.rodata) *(.rodata.*) }
+  . = ALIGN(PAGE_SIZE);
+  _erodata = .;
+
+  /* newlib initialization functions */
+  . = ALIGN(64 / 8);

What's that value?

+  PROVIDE (__preinit_array_start = .);
+  .preinit_array     : { *(.preinit_array) }
+  PROVIDE (__preinit_array_end = .);
+  PROVIDE (__init_array_start = .);
+  .init_array     : { *(.init_array) }
+  PROVIDE (__init_array_end = .);
+  PROVIDE (__fini_array_start = .);
+  .fini_array     : { *(.fini_array) }
+  PROVIDE (__fini_array_end = .);
+
+  .ctors : {
+        __CTOR_LIST__ = .;
+        *(.ctors)
+       CONSTRUCTORS
+        QUAD(0)
+        __CTOR_END__ = .;
+  }
+
+  .dtors : {
+        __DTOR_LIST__ = .;
+        *(.dtors)
+        QUAD(0)
+        __DTOR_END__ = .;
+  }
+
+  .data : {                    /* Data */
+       *(.data)
+  }
+
+  _edata = .;                  /* End of data section */
+
+  __bss_start = .;             /* BSS */
+  .bss : {
+       *(.bss)
+        *(.app.bss)
+  }
+  _end = . ;
+
+  /* Sections to be discarded */
+  /DISCARD/ : {
+       *(.text.exit)
+       *(.data.exit)
+       *(.exitcall.exit)
+  }
+
+  /* Stabs debugging sections.  */
+  .stab 0 : { *(.stab) }
+  .stabstr 0 : { *(.stabstr) }
+  .stab.excl 0 : { *(.stab.excl) }
+  .stab.exclstr 0 : { *(.stab.exclstr) }
+  .stab.index 0 : { *(.stab.index) }
+  .stab.indexstr 0 : { *(.stab.indexstr) }
+  .comment 0 : { *(.comment) }
+}


Cheers,

--
Julien Grall

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/cgi-bin/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.