|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH v2 1/6] plat: move common section definitions from linker script to include file
Hi Florian,
Please see my comments inline.
On 5/24/19 3:11 PM, Florian Schmidt wrote:
> This only concerns kvm and Xen for now, because linuxu is special and
> doesn't have a proper full linker script yet.
>
> Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
> ---
> plat/common/include/common.lds.h | 29 ++++++++++++++++
> plat/common/x86/link64.lds | 59 --------------------------------
> plat/kvm/arm/link64.lds.S | 28 ++-------------
> plat/kvm/x86/link64.lds.S | 4 ++-
> plat/linuxu/arm/link.lds | 1 +
> plat/linuxu/x86/link64.lds | 26 +++++++++++++-
> plat/xen/arm/link32.lds.S | 29 ++--------------
> plat/xen/x86/link64.lds.S | 4 ++-
> 8 files changed, 65 insertions(+), 115 deletions(-)
> delete mode 100644 plat/common/x86/link64.lds
>
> diff --git a/plat/common/include/common.lds.h
> b/plat/common/include/common.lds.h
> index 8672b6ff..ea030d9e 100644
> --- a/plat/common/include/common.lds.h
> +++ b/plat/common/include/common.lds.h
> @@ -31,6 +31,8 @@
> #ifndef __UK_COMMON_LDS_H
> #define __UK_COMMON_LDS_H
>
> +#include <uk/arch/limits.h> /* for __PAGE_SIZE */
> +
> /* DWARF debug sections. Symbols in the DWARF debugging sections are
> * relative to the beginning of the section so we begin them at 0.
> */
> @@ -64,4 +66,31 @@
> .debug_macro 0 : { *(.debug_macro) } \
> .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) }
>
> +#define EXCEPTION_SECTIONS \
> + . = ALIGN(__PAGE_SIZE); \
> + __eh_frame_start = .; \
> + .eh_frame : \
> + { \
> + *(.eh_frame) \
> + *(.eh_frame.*) \
> + } \
> + __eh_frame_end = .; \
> + \
> + __eh_frame_hdr_start = .; \
> + .eh_frame_hdr : \
> + { \
> + *(.eh_frame_hdr) \
> + *(.eh_frame_hdr.*) \
> + } \
> + __eh_frame_hdr_end = .;
> +
> +#define CTORTAB_SECTION
> \
> + . = ALIGN(__PAGE_SIZE); \
> + uk_ctortab = .; \
> + .uk_ctortab : \
> + { \
> + KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7]))) \
> + LONG(0) \
Nitpicking. If we'll have a v3, please indent these 2 lines above.
> + }
> +
> #endif /* __UK_COMMON_LDS_H */
> diff --git a/plat/common/x86/link64.lds b/plat/common/x86/link64.lds
> deleted file mode 100644
> index 96f353b8..00000000
> --- a/plat/common/x86/link64.lds
> +++ /dev/null
> @@ -1,59 +0,0 @@
> -/* SPDX-License-Identifier: BSD-3-Clause */
> -/*
> - * Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
> - *
> - * Copyright (c) 2019, Politehnica University of Bucharest. All rights
> reserved.
Since the definitions from here were moved to common.lds.h, shouldn't we
also move the copyright and authorship there?
> - *
> - * Redistribution and use in source and binary forms, with or without
> - * modification, are permitted provided that the following conditions
> - * are met:
> - *
> - * 1. Redistributions of source code must retain the above copyright
> - * notice, this list of conditions and the following disclaimer.
> - * 2. Redistributions in binary form must reproduce the above copyright
> - * notice, this list of conditions and the following disclaimer in the
> - * documentation and/or other materials provided with the distribution.
> - * 3. Neither the name of the copyright holder nor the names of its
> - * contributors may be used to endorse or promote products derived from
> - * this software without specific prior written permission.
> - *
> - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
> IS"
> - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
> - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
> - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
> - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
> - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
> - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
> - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
> - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
> - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
> - * POSSIBILITY OF SUCH DAMAGE.
> - *
> - * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
> - */
> -
> -. = ALIGN(0x1000);
> -__eh_frame_start = .;
> -.eh_frame :
> -{
> - *(.eh_frame)
> - *(.eh_frame.*)
> -}
> -__eh_frame_end = .;
> -
> -__eh_frame_hdr_start = .;
> -.eh_frame_hdr :
> -{
> - *(.eh_frame_hdr)
> - *(.eh_frame_hdr.*)
> -}
> -__eh_frame_hdr_end = .;
> -
> -. = ALIGN(0x1000);
> -uk_ctortab = .;
> -.uk_ctortab :
> -{
> - KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7])))
> - LONG(0)
> -}
> -
> diff --git a/plat/kvm/arm/link64.lds.S b/plat/kvm/arm/link64.lds.S
> index 96d9edcb..753d1696 100644
> --- a/plat/kvm/arm/link64.lds.S
> +++ b/plat/kvm/arm/link64.lds.S
> @@ -69,25 +69,7 @@ SECTIONS {
> . = ALIGN(__PAGE_SIZE);
> _etext = .;
>
> - /* Exception frame */
> - __eh_frame_start = .;
> - .eh_frame :
> - {
> - *(.eh_frame)
> - *(.eh_frame.*)
> - }
> - __eh_frame_end = .;
> -
> - /* Exception frame header */
> - __eh_frame_hdr_start = .;
> - .eh_frame_hdr :
> - {
> -
> - *(.eh_frame_hdr)
> - *(.eh_frame_hdr.*)
> - }
> - . = ALIGN(__PAGE_SIZE);
> - __eh_frame_hdr_end = .;
> + EXCEPTION_SECTIONS
>
> /* Read-only data */
> _rodata = .;
> @@ -100,13 +82,7 @@ SECTIONS {
>
> _erodata = .;
>
> - . = ALIGN(__PAGE_SIZE);
> - uk_ctortab = .;
> - .uk_ctortab :
> - {
> - KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7])))
> - LONG(0)
> - }
> + CTORTAB_SECTION
>
> /* Constructor tables (read-only) */
> . = ALIGN(0x8);
> diff --git a/plat/kvm/x86/link64.lds.S b/plat/kvm/x86/link64.lds.S
> index 2a258e5d..5c63e4af 100644
> --- a/plat/kvm/x86/link64.lds.S
> +++ b/plat/kvm/x86/link64.lds.S
> @@ -43,7 +43,9 @@ SECTIONS
> }
> _etext = .;
>
> - INCLUDE plat/common/x86/link64.lds
> + EXCEPTION_SECTIONS
> +
> + CTORTAB_SECTION
>
> /* Read-only data */
> . = ALIGN(0x1000);
> diff --git a/plat/linuxu/arm/link.lds b/plat/linuxu/arm/link.lds
> index 6f45fd8b..f9920245 100644
> --- a/plat/linuxu/arm/link.lds
> +++ b/plat/linuxu/arm/link.lds
> @@ -1,5 +1,6 @@
> SECTIONS
> {
> + /* TODO: include these from common-lds.h */
Why don't we include these from common.lds.h now?
> . = ALIGN(0x1000);
> uk_ctortab = .;
> .uk_ctortab :
> diff --git a/plat/linuxu/x86/link64.lds b/plat/linuxu/x86/link64.lds
> index 077aaf66..aa239a0d 100644
> --- a/plat/linuxu/x86/link64.lds
> +++ b/plat/linuxu/x86/link64.lds
> @@ -1,6 +1,30 @@
> SECTIONS
> {
> - INCLUDE plat/common/x86/link64.lds
> + /* TODO: include these from common-lds.h */
Why don't we include these from common.lds.h now?
> + . = ALIGN(0x1000);
> + __eh_frame_start = .;
> + .eh_frame :
> + {
> + *(.eh_frame)
> + *(.eh_frame.*)
> + }
> + __eh_frame_end = .;
> +
> + __eh_frame_hdr_start = .;
> + .eh_frame_hdr :
> + {
> + *(.eh_frame_hdr)
> + *(.eh_frame_hdr.*)
> + }
> + __eh_frame_hdr_end = .;
> +
> + . = ALIGN(0x1000);
> + uk_ctortab = .;
> + .uk_ctortab :
> + {
> + KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7])))
> + LONG(0)
> + }
> }
> INSERT AFTER .rodata
>
> diff --git a/plat/xen/arm/link32.lds.S b/plat/xen/arm/link32.lds.S
> index 9af25f15..8bbefa64 100644
> --- a/plat/xen/arm/link32.lds.S
> +++ b/plat/xen/arm/link32.lds.S
> @@ -49,26 +49,7 @@ SECTIONS
>
> _etext = .; /* End of text section */
>
> - /* Exception frame */
> - . = ALIGN(4096);
> - __eh_frame_start = .;
> - .eh_frame :
> - {
> - *(.eh_frame)
> - *(.eh_frame.*)
> - }
> - __eh_frame_end = .;
> -
> -
> - /* Exception frame header */
> - __eh_frame_hdr_start = .;
> - .eh_frame_hdr :
> - {
> - *(.eh_frame_hdr)
> - *(.eh_frame_hdr.*)
> - }
> - . = ALIGN(4096);
> - __eh_frame_hdr_end = .;
> + EXCEPTION_SECTIONS
>
> /* Read-only data */
> _rodata = .;
> @@ -80,13 +61,7 @@ SECTIONS
> . = ALIGN(4096);
> _erodata = .;
>
> - uk_ctortab = .;
> - .uk_ctortab :
> - {
> - KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7])))
> - LONG(0)
> - }
> - . = ALIGN(4096);
> + CTORTAB_SECTION
>
> . = ALIGN(0x8);
> _ctors = .;
> diff --git a/plat/xen/x86/link64.lds.S b/plat/xen/x86/link64.lds.S
> index 44a9deb9..116a12e8 100644
> --- a/plat/xen/x86/link64.lds.S
> +++ b/plat/xen/x86/link64.lds.S
> @@ -41,7 +41,9 @@ SECTIONS
>
> _etext = .; /* End of text section */
>
> - INCLUDE plat/common/x86/link64.lds
> + EXCEPTION_SECTIONS
> +
> + CTORTAB_SECTION
>
> _rodata = .;
> .rodata : {
>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |