[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 |