[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

 


Rackspace

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