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

Re: [Minios-devel] [UNIKRAFT PATCH 1/2] plat: Add the eh_frame and eh_frame_hdr sections



Hey Florian,

On 12/13/18 11:55 AM, Florian Schmidt wrote:
> Hi Vlad,
>
> thanks for the patch! I have one question:
>
> On 12/12/18 6:08 PM, Vlad-Andrei BĂDOIU (78692) wrote:
>> This patch adds the eh_frame and eh_frame hdr sections to
>> the linker script for both XEN and KVM.
>>
>> A new linker script has been created plat/common/x86/link64.lds in
>> order to avoid code duplication.
>>
>> This patch adds the frames to the linker scripts.
>>
>> Signed-off-by: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
>> ---
>>   plat/common/x86/link64.lds | 51 ++++++++++++++++++++++++++++++++++++++
>>   plat/kvm/x86/link64.lds    |  2 ++
>>   plat/xen/x86/link64.lds    |  2 ++
>>   3 files changed, 55 insertions(+)
>>   create mode 100644 plat/common/x86/link64.lds
>>
>> diff --git a/plat/common/x86/link64.lds b/plat/common/x86/link64.lds
>> new file mode 100644
>> index 0000000..1b809c4
>> --- /dev/null
>> +++ b/plat/common/x86/link64.lds
>> @@ -0,0 +1,51 @@
>> +/* SPDX-License-Identifier: BSD-3-Clause */
>> +/*
>> + * Authors: Vlad-Andrei Badoiu <vlad_andrei.badoiu@xxxxxxxxxxxxxxx>
>> + *
>> + * Copyright (c) 2018, NEC Europe Ltd., NEC Corporation. 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 = .;
>> +
>> +. = ALIGN(0x1000);
>
> I understand that the first alignment is probably necessary to make 
> sure you don't share a page with the read-write data coming before it 
> in the layout, but do you need such a large alignment before the hdr? 
> Can't the hdr and the frame share a page?
Yes, hdr and eh_frame could share a page. I'll send a v2 of this patch 
with the in-between alignment removed, is that all right?
>> +__eh_frame_hdr_start = .;
>> +.eh_frame_hdr :
>> +{
>> +    *(.eh_frame_hdr)
>> +    *(.eh_frame_hdr.*)
>> +}
>> +__eh_frame_hdr_end = .;
>> diff --git a/plat/kvm/x86/link64.lds b/plat/kvm/x86/link64.lds
>> index 60b5d21..c96f750 100644
>> --- a/plat/kvm/x86/link64.lds
>> +++ b/plat/kvm/x86/link64.lds
>> @@ -41,6 +41,8 @@ SECTIONS
>>       }
>>       _etext = .;
>>   +    INCLUDE plat/common/x86/link64.lds
>> +
>>       /* Read-only data */
>>       . = ALIGN(0x1000);
>>       _rodata = .;
>> diff --git a/plat/xen/x86/link64.lds b/plat/xen/x86/link64.lds
>> index 5391dbd..2e83de4 100644
>> --- a/plat/xen/x86/link64.lds
>> +++ b/plat/xen/x86/link64.lds
>> @@ -39,6 +39,8 @@ SECTIONS
>>         _etext = .;            /* End of text section */
>>   +    INCLUDE plat/common/x86/link64.lds
>> +
>>       _rodata = .;
>>       .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®.