use elfnote.h to generate vsyscall notes.
Use existing elfnote.h to generate vsyscall notes, rather than doing it locally. Changes elfnote.h a bit to suit, since this is the first asm user, and it wasn't quite right. Signed-off-by: Jeremy Fitzhardinge <jeremy@xensource.com> Cc: "Eric W. Biederman" <ebiederm@xmission.com> Cc: Roland McGrath <roland@redhat.com> Cc: Andrew Morton <akpm@linux-foundation.com>
This commit is contained in:
parent
86313c488a
commit
810bab448e
2 changed files with 21 additions and 24 deletions
|
@ -3,23 +3,12 @@
|
||||||
* Here we can supply some information useful to userland.
|
* Here we can supply some information useful to userland.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <linux/uts.h>
|
|
||||||
#include <linux/version.h>
|
#include <linux/version.h>
|
||||||
|
#include <linux/elfnote.h>
|
||||||
|
|
||||||
#define ASM_ELF_NOTE_BEGIN(name, flags, vendor, type) \
|
/* Ideally this would use UTS_NAME, but using a quoted string here
|
||||||
.section name, flags; \
|
doesn't work. Remember to change this when changing the
|
||||||
.balign 4; \
|
kernel's name. */
|
||||||
.long 1f - 0f; /* name length */ \
|
ELFNOTE_START(Linux, 0, "a")
|
||||||
.long 3f - 2f; /* data length */ \
|
|
||||||
.long type; /* note type */ \
|
|
||||||
0: .asciz vendor; /* vendor name */ \
|
|
||||||
1: .balign 4; \
|
|
||||||
2:
|
|
||||||
|
|
||||||
#define ASM_ELF_NOTE_END \
|
|
||||||
3: .balign 4; /* pad out section */ \
|
|
||||||
.previous
|
|
||||||
|
|
||||||
ASM_ELF_NOTE_BEGIN(".note.kernel-version", "a", UTS_SYSNAME, 0)
|
|
||||||
.long LINUX_VERSION_CODE
|
.long LINUX_VERSION_CODE
|
||||||
ASM_ELF_NOTE_END
|
ELFNOTE_END
|
||||||
|
|
|
@ -38,17 +38,25 @@
|
||||||
* e.g. ELFNOTE(XYZCo, 42, .asciz, "forty-two")
|
* e.g. ELFNOTE(XYZCo, 42, .asciz, "forty-two")
|
||||||
* ELFNOTE(XYZCo, 12, .long, 0xdeadbeef)
|
* ELFNOTE(XYZCo, 12, .long, 0xdeadbeef)
|
||||||
*/
|
*/
|
||||||
#define ELFNOTE(name, type, desctype, descdata) \
|
#define ELFNOTE_START(name, type, flags) \
|
||||||
.pushsection .note.name, "",@note ; \
|
.pushsection .note.name, flags,@note ; \
|
||||||
.align 4 ; \
|
.balign 4 ; \
|
||||||
.long 2f - 1f /* namesz */ ; \
|
.long 2f - 1f /* namesz */ ; \
|
||||||
.long 4f - 3f /* descsz */ ; \
|
.long 4484f - 3f /* descsz */ ; \
|
||||||
.long type ; \
|
.long type ; \
|
||||||
1:.asciz #name ; \
|
1:.asciz #name ; \
|
||||||
2:.align 4 ; \
|
2:.balign 4 ; \
|
||||||
3:desctype descdata ; \
|
3:
|
||||||
4:.align 4 ; \
|
|
||||||
|
#define ELFNOTE_END \
|
||||||
|
4484:.balign 4 ; \
|
||||||
.popsection ;
|
.popsection ;
|
||||||
|
|
||||||
|
#define ELFNOTE(name, type, desc) \
|
||||||
|
ELFNOTE_START(name, type, "") \
|
||||||
|
desc ; \
|
||||||
|
ELFNOTE_END
|
||||||
|
|
||||||
#else /* !__ASSEMBLER__ */
|
#else /* !__ASSEMBLER__ */
|
||||||
#include <linux/elf.h>
|
#include <linux/elf.h>
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue