[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH v2 2/2] plat: Register eh_frame and eh_frame_hdr in memory.h
Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx> --- plat/common/include/sections.h | 32 +++++++++++++++++++++----------- plat/kvm/memory.c | 24 +++++++++++++++++++++++- plat/xen/memory.c | 20 ++++++++++++++++++++ 3 files changed, 64 insertions(+), 12 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..6c520941 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) @@ -115,6 +115,28 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc *m) ret = 0; #if CONFIG_UKPLAT_MEMRNAME m->name = "bstack"; +#endif + break; + case 7: /* 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 8: /* 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; default: diff --git a/plat/xen/memory.c b/plat/xen/memory.c index b63f11bb..2ffa6151 100644 --- a/plat/xen/memory.c +++ b/plat/xen/memory.c @@ -101,6 +101,26 @@ int ukplat_memregion_get(int i, struct ukplat_memregion_desc *m) | UKPLAT_MEMRF_WRITABLE); #if CONFIG_UKPLAT_MEMRNAME m->name = "bss"; +#endif + break; + case 5: /* 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 6: /* 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; default: -- 2.20.1 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |