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

Re: [Minios-devel] [UNIKRAFT PATCH v4 2/2] plat: Register eh_frame and eh_frame_hdr in memory.h



Hello Vlad,

This patch seems fine.

Reviewed-by: Sharan Santhanam <sharan.santhanam@xxxxxxxxx>

A small note, when submitting the next version of a series it would be nice to apply patches from patchwork and then apply the changes. The reviewed-by tag is applied to those patches reviewed in the previous version of the series.

Thanks & Regards
Sharan

On 4/2/19 8:39 PM, Vlad-Andrei BĂDOIU (78692) wrote:
Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
---
  plat/common/include/sections.h | 32 +++++++++++++++++++-----------
  plat/kvm/memory.c              | 36 +++++++++++++++++++++++++++-------
  plat/xen/memory.c              | 32 ++++++++++++++++++++++++------
  3 files changed, 76 insertions(+), 24 deletions(-)

diff --git a/plat/common/include/sections.h b/plat/common/include/sections.h
index ecb36072..1052cfc7 100644
--- a/plat/common/include/sections.h
+++ b/plat/common/include/sections.h
@@ -48,6 +48,12 @@ extern char _dtb[];
  /* [_text, _etext]: contains .text.* sections */
  extern char _text[], _etext[];
+/* [__eh_frame_start, __eh_frame_end]: contains .eh_frame section */
+extern char __eh_frame_start, __eh_frame_end;
+
+/* [__eh_frame_hdr_start, __eh_frame_hdr_end]: contains .eh_frame_hdr section 
*/
+extern char __eh_frame_hdr_start, __eh_frame_hdr_end;
+
  /* [_rodata, _erodata]: contains .rodata.* sections */
  extern char _rodata[], _erodata[];
@@ -65,17 +71,21 @@ extern char _end[]; #define __uk_image_symbol(addr) ((unsigned long)(addr)) -#define __DTB __uk_image_symbol(_dtb)
-#define __TEXT         __uk_image_symbol(_text)
-#define __ETEXT                __uk_image_symbol(_etext)
-#define __RODATA       __uk_image_symbol(_rodata)
-#define __ERODATA      __uk_image_symbol(_erodata)
-#define __DATA         __uk_image_symbol(_data)
-#define __EDATA                __uk_image_symbol(_edata)
-#define __CTORS                __uk_image_symbol(_ctors)
-#define __ECTORS       __uk_image_symbol(_ectors)
-#define __BSS_START    __uk_image_symbol(__bss_start)
-#define __END          __uk_image_symbol(_end)
+#define __DTB                   __uk_image_symbol(_dtb)
+#define __TEXT                  __uk_image_symbol(_text)
+#define __ETEXT                 __uk_image_symbol(_etext)
+#define __EH_FRAME_START        __uk_image_symbol(__eh_frame_start)
+#define __EH_FRAME_END          __uk_image_symbol(__eh_frame_end)
+#define __EH_FRAME_HDR_START    __uk_image_symbol(__eh_frame_hdr_start)
+#define __EH_FRAME_HDR_END      __uk_image_symbol(__eh_frame_hdr_end)
+#define __RODATA                __uk_image_symbol(_rodata)
+#define __ERODATA               __uk_image_symbol(_erodata)
+#define __DATA                  __uk_image_symbol(_data)
+#define __EDATA                 __uk_image_symbol(_edata)
+#define __CTORS                 __uk_image_symbol(_ctors)
+#define __ECTORS                __uk_image_symbol(_ectors)
+#define __BSS_START             __uk_image_symbol(__bss_start)
+#define __END                   __uk_image_symbol(_end)
#endif /*__ASSEMBLY__*/ diff --git a/plat/kvm/memory.c b/plat/kvm/memory.c
index a7b4d5ef..e45b88c5 100644
--- a/plat/kvm/memory.c
+++ b/plat/kvm/memory.c
@@ -33,7 +33,7 @@ extern void *_libkvmplat_mem_end;
int ukplat_memregion_count(void)
  {
-       return 7;
+       return 9;
  }
int ukplat_memregion_get(int i, struct ukplat_memregion_desc *m)
@@ -53,7 +53,29 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
  #endif
                ret = 0;
                break;
-       case 1: /* rodata */
+       case 1: /* eh_frame */
+               m->base  = (void *) __EH_FRAME_START;
+               m->len   = (size_t) __EH_FRAME_END
+                               - (size_t) __EH_FRAME_START;
+               m->flags = (UKPLAT_MEMRF_RESERVED
+                           | UKPLAT_MEMRF_READABLE);
+               ret = 0;
+#if CONFIG_UKPLAT_MEMRNAME
+               m->name  = "eh_frame";
+#endif
+               break;
+       case 2: /* eh_frame_hdr */
+               m->base  = (void *) __EH_FRAME_HDR_START;
+               m->len   = (size_t) __EH_FRAME_HDR_END
+                          - (size_t) __EH_FRAME_HDR_START;
+               m->flags = (UKPLAT_MEMRF_RESERVED
+                           | UKPLAT_MEMRF_READABLE);
+               ret = 0;
+#if CONFIG_UKPLAT_MEMRNAME
+               m->name  = "eh_frame_hdr";
+#endif
+               break;
+       case 3: /* rodata */
                m->base  = (void *) __RODATA;
                m->len   = (size_t) __ERODATA - (size_t) __RODATA;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -63,7 +85,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
  #endif
                ret = 0;
                break;
-       case 2: /* ctors */
+       case 4: /* ctors */
                m->base  = (void *) __CTORS;
                m->len   = (size_t) __ECTORS - (size_t) __CTORS;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -73,7 +95,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
  #endif
                ret = 0;
                break;
-       case 3: /* data */
+       case 5: /* data */
                m->base  = (void *) __DATA;
                m->len   = (size_t) __EDATA - (size_t) __DATA;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -84,7 +106,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
  #endif
                ret = 0;
                break;
-       case 4: /* bss */
+       case 6: /* bss */
                m->base  = (void *) __BSS_START;
                m->len   = (size_t) __END - (size_t) __BSS_START;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -95,7 +117,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
  #endif
                ret = 0;
                break;
-       case 5: /* heap */
+       case 7: /* heap */
                m->base  = _libkvmplat_heap_start;
                m->len   = (size_t) _libkvmplat_stack_top
                           - (size_t) _libkvmplat_heap_start;
@@ -105,7 +127,7 @@ int ukplat_memregion_get(int i, struct 
ukplat_memregion_desc *m)
  #endif
                ret = 0;
                break;
-       case 6: /* stack */
+       case 8: /* stack */
                m->base  = _libkvmplat_stack_top;
                m->len   = (size_t) _libkvmplat_mem_end
                           - (size_t) _libkvmplat_stack_top;
diff --git a/plat/xen/memory.c b/plat/xen/memory.c
index b63f11bb..4b3e9466 100644
--- a/plat/xen/memory.c
+++ b/plat/xen/memory.c
@@ -47,7 +47,7 @@
int ukplat_memregion_count(void)
  {
-       return (int) _libxenplat_mrd_num + 5;
+       return (int) _libxenplat_mrd_num + 7;
  }
int ukplat_memregion_get(int i, struct ukplat_memregion_desc *m)
@@ -55,7 +55,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
UK_ASSERT(m); - switch(i) {
+       switch (i) {
        case 0: /* text */
                m->base  = (void *) __TEXT;
                m->len   = (size_t) __ETEXT - (size_t) __TEXT;
@@ -65,7 +65,27 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
                m->name  = "text";
  #endif
                break;
-       case 1: /* ro data */
+       case 1: /* eh_frame */
+               m->base  = (void *) __EH_FRAME_START;
+               m->len   = (size_t) __EH_FRAME_END
+                               - (size_t) __EH_FRAME_START;
+               m->flags = (UKPLAT_MEMRF_RESERVED
+                           | UKPLAT_MEMRF_READABLE);
+#if CONFIG_UKPLAT_MEMRNAME
+               m->name  = "eh_frame";
+#endif
+               break;
+       case 2: /* eh_frame_hdr */
+               m->base  = (void *) __EH_FRAME_HDR_START;
+               m->len   = (size_t) __EH_FRAME_HDR_END
+                               - (size_t) __EH_FRAME_HDR_START;
+               m->flags = (UKPLAT_MEMRF_RESERVED
+                           | UKPLAT_MEMRF_READABLE);
+#if CONFIG_UKPLAT_MEMRNAME
+               m->name  = "eh_frame_hdr";
+#endif
+               break;
+       case 3: /* ro data */
                m->base  = (void *) __RODATA;
                m->len   = (size_t) __ERODATA - (size_t) __RODATA;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -74,7 +94,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
                m->name  = "rodata";
  #endif
                break;
-       case 2: /* ctors */
+       case 4: /* ctors */
                m->base  = (void *) __CTORS;
                m->len   = (size_t) __ECTORS - (size_t) __CTORS;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -83,7 +103,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
                m->name  = "ctors";
  #endif
                break;
-       case 3: /* data */
+       case 5: /* data */
                m->base  = (void *) __DATA;
                m->len   = (size_t) __EDATA - (size_t) __DATA;
                m->flags = (UKPLAT_MEMRF_RESERVED
@@ -93,7 +113,7 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc 
*m)
                m->name  = "data";
  #endif
                break;
-       case 4: /* bss */
+       case 6: /* bss */
                m->base  = (void *) __BSS_START;
                m->len   = (size_t) __END - (size_t) __BSS_START;
                m->flags = (UKPLAT_MEMRF_RESERVED


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

 


Rackspace

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