• Ian Campbell's avatar
    [PATCH] Put .note.* sections into a PT_NOTE segment · f2a9e1de
    Ian Campbell authored
    This patch updates x86_64 linker script to pack any .note.* sections
    into a PT_NOTE segment in the output file.
    
    To do this, we tell ld that we need a PT_NOTE segment.  This requires
    us to start explicitly mapping sections to segments, so we also need
    to explicitly create PT_LOAD segments for text and data, and map the
    sections to them appropriately.  Fortunately, each section will
    default to its previous section's segment, so it doesn't take many
    changes to vmlinux.lds.S.
    
    The corresponding change is already made for i386 in -mm and I'd like
    this patch to join it. The section to segment mappings do change as do
    the segment flags so some time in -mm would be good for that reason as
    well, just in case.
    
    In particular .data and .bss move from the text segment to the data
    segment and .data.cacheline_aligned .data.read_mostly are put in the
    data segment instead of a separate one.
    
    I think that it would be possible to exactly match the existing section
    to segment mapping and flags but it would be a more intrusive change and
    I'm not sure there is a reason for the existing layout other than it is
    what you get by default if you don't explicitly specify something else.
    If there is a reason for the existing layout then I will of course make
    the more intrusive change. If there is no reason we could probably drop
    the executable or writable flags from some segments but I don't know how
    much attention is paid to them anyway so it might not be worth the
    effort.
    
    The vsyscall related sections need to go in a different segment to the
    normal data segment and so I invented a "user" segment to contain them.
    I believe this should appear to be another data segment as far as the
    kernel is concerned so the flags are setup accordingly.
    
    The notes will be used in the Xen paravirt_ops backend to provide
    additional information to the domain builder. I am in the process of
    converting the xen-unstable kernels and tools over to this scheme at the
    moment to support this in the future.
    
    It has been suggested to me that the notes segment should have flags 0
    (i.e. not readable) since it is only used by the loader and is not used
    at runtime. For now I went with a readable segment since that is what
    the i386 patch uses.
    
    AK: dropped NOTES addition right now because the needed infrastructure
    for that is not merged yet
    Signed-off-by: default avatarIan Campbell <ian.campbell@xensource.com>
    Signed-off-by: default avatarAndi Kleen <ak@suse.de>
    f2a9e1de
vmlinux.lds.S 6.6 KB