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

[Minios-devel] [UNIKRAFT PATCH v3 2/7] plat: move common section definitions from linker script to include file



Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
---
 plat/common/include/common.lds.h | 32 ++++++++++++++++-
 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.S       | 10 ++----
 plat/linuxu/x86/link64.lds.S     |  6 +++-
 plat/xen/arm/link32.lds.S        | 29 ++--------------
 plat/xen/x86/link64.lds.S        |  4 ++-
 8 files changed, 49 insertions(+), 123 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..0d28ffff 100644
--- a/plat/common/include/common.lds.h
+++ b/plat/common/include/common.lds.h
@@ -1,6 +1,7 @@
 /* SPDX-License-Identifier: BSD-3-Clause */
 /*
- * Copyright (c) 2019, NEC Laboratories Europe GmbH, NEC Corporation.
+ * Copyright (c) 2019, NEC Laboratories Europe GmbH, NEC Corporation,
+ *                     Politehnica University of Bucharest.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
@@ -31,6 +32,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 +67,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)                                                 \
+       }
+
 #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.
- *
- * 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.S b/plat/linuxu/arm/link.lds.S
index 6f45fd8b..8a731c5c 100644
--- a/plat/linuxu/arm/link.lds.S
+++ b/plat/linuxu/arm/link.lds.S
@@ -1,11 +1,7 @@
+#include <common.lds.h>
+
 SECTIONS
 {
-   . = ALIGN(0x1000);
-   uk_ctortab = .;
-   .uk_ctortab :
-   {
-       KEEP(*(SORT_BY_NAME(.uk_ctortab[0-7])))
-       LONG(0)
-   }
+       CTORTAB_SECTION
 }
 INSERT AFTER .rodata
diff --git a/plat/linuxu/x86/link64.lds.S b/plat/linuxu/x86/link64.lds.S
index 077aaf66..46034477 100644
--- a/plat/linuxu/x86/link64.lds.S
+++ b/plat/linuxu/x86/link64.lds.S
@@ -1,6 +1,10 @@
+#include <common.lds.h>
+
 SECTIONS
 {
-   INCLUDE plat/common/x86/link64.lds
+       EXCEPTION_SECTIONS
+
+       CTORTAB_SECTION
 }
 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 : {
-- 
2.21.0


_______________________________________________
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®.