|
[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
Hey Sharan,
On 4/3/19 3:43 PM, Sharan Santhanam wrote:
> 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.
>
I'll do that for the upcoming patches. Thank you for letting me know!
Vlad
> 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
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |