29 Jan, 2008

1 commit


18 Jul, 2007

1 commit


03 May, 2007

1 commit

  • Three cleanups:

    1: ELF notes are never mapped, so there's no need to have any access
    flags in their phdr.

    2: When generating them from asm, tell the assembler to use a SHT_NOTE
    section type. There doesn't seem to be a way to do this from C.

    3: Use ANSI rather than traditional cpp behaviour to stringify the
    macro argument.

    Signed-off-by: Jeremy Fitzhardinge
    Signed-off-by: Andi Kleen
    Cc: Eric W. Biederman

    Jeremy Fitzhardinge
     

26 Sep, 2006

2 commits

  • I've come across some problems with the assembly version of the ELFNOTE
    macro currently in -mm. (in
    x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch)

    The first is that older gas does not support :varargs in .macro
    definitions (in my testing 2.17 does while 2.15 does not, I don't know
    when it became supported). The Changes file says binutils >= 2.12 so I
    think we need to avoid using it. There are no other uses in mainline or
    -mm. Old gas appears to just ignore it so you get "too many arguments"
    type errors.

    Secondly it seems that passing strings as arguments to assembler macros
    is broken without varargs. It looks like they get unquoted or each
    character is treated as a separate argument or something and this causes
    all manner of grief. I think this is because of the use of -traditional
    when compiling assembly files.

    Therefore I have translated the assembler macro into a pre-processor
    macro.

    I added the desctype as a separate argument instead of including it with
    the descdata as the previous version did since -traditional means the
    ELFNOTE definition after the #else needs to have the same number of
    arguments (I think so anyway, the -traditional CPP semantics are pretty
    fscking strange!).

    With this patch I am able to define elfnotes in assembly like this with
    both old and new assemblers.

    ELFNOTE(Xen, XEN_ELFNOTE_GUEST_OS, .asciz, "linux")
    ELFNOTE(Xen, XEN_ELFNOTE_GUEST_VERSION, .asciz, "2.6")
    ELFNOTE(Xen, XEN_ELFNOTE_XEN_VERSION, .asciz, "xen-3.0")
    ELFNOTE(Xen, XEN_ELFNOTE_VIRT_BASE, .long, __PAGE_OFFSET)

    Which seems reasonable enough.

    Signed-off-by: Ian Campbell
    Acked-by: Jeremy Fitzhardinge
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Ian Campbell
     
  • This patch will pack any .note.* section 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.

    This only changes i386 for now, but I presume the corresponding changes for
    other architectures will be as simple.

    This change also adds , which defines C and Assembler macros
    for actually creating ELF notes.

    Signed-off-by: Jeremy Fitzhardinge
    Cc: Eric W. Biederman
    Cc: Hollis Blanchard
    Signed-off-by: Andrew Morton
    Signed-off-by: Linus Torvalds

    Jeremy Fitzhardinge