From: Jeremy Fitzhardinge Use existing elfnote.h to generate vsyscall notes, rather than doing it locally. Changes elfnote.h a bit to suite, since this is the first asm user, and it wasn't quite right. Signed-off-by: Jeremy Fitzhardinge Cc: "Eric W. Biederman" Cc: Roland McGrath Cc: Andrew Morton Cc: Andi Kleen Signed-off-by: Andrew Morton --- arch/i386/kernel/vsyscall-note.S | 23 ++++++----------------- arch/x86_64/vdso/vdso-note.S | 4 ++-- include/linux/elfnote.h | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 24 deletions(-) diff -puN arch/i386/kernel/vsyscall-note.S~x86-use-elfnoteh-to-generate-vsyscall-notes arch/i386/kernel/vsyscall-note.S --- a/arch/i386/kernel/vsyscall-note.S~x86-use-elfnoteh-to-generate-vsyscall-notes +++ a/arch/i386/kernel/vsyscall-note.S @@ -3,23 +3,12 @@ * Here we can supply some information useful to userland. */ -#include #include +#include -#define ASM_ELF_NOTE_BEGIN(name, flags, vendor, type) \ - .section name, flags; \ - .balign 4; \ - .long 1f - 0f; /* name length */ \ - .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) +/* Ideally this would use UTS_NAME, but using a quoted string here + doesn't work. Remember to change this when changing the + kernel's name. */ +ELFNOTE_START(Linux, 0, "a") .long LINUX_VERSION_CODE - ASM_ELF_NOTE_END +ELFNOTE_END diff -puN arch/x86_64/vdso/vdso-note.S~x86-use-elfnoteh-to-generate-vsyscall-notes arch/x86_64/vdso/vdso-note.S --- a/arch/x86_64/vdso/vdso-note.S~x86-use-elfnoteh-to-generate-vsyscall-notes +++ a/arch/x86_64/vdso/vdso-note.S @@ -8,5 +8,5 @@ #include /* Supply version information to coredumps */ - ELFNOTE(kernelversion, 0, .long, LINUX_VERSION_CODE) - ELFNOTE(os, 0, .asciz, UTS_SYSNAME) + ELFNOTE(kernelversion, 0, .long LINUX_VERSION_CODE) + ELFNOTE(os, 0, .asciz UTS_SYSNAME) diff -puN include/linux/elfnote.h~x86-use-elfnoteh-to-generate-vsyscall-notes include/linux/elfnote.h --- a/include/linux/elfnote.h~x86-use-elfnoteh-to-generate-vsyscall-notes +++ a/include/linux/elfnote.h @@ -38,17 +38,25 @@ * e.g. ELFNOTE(XYZCo, 42, .asciz, "forty-two") * ELFNOTE(XYZCo, 12, .long, 0xdeadbeef) */ -#define ELFNOTE(name, type, desctype, descdata) \ -.pushsection .note.name, "",@note ; \ +#define ELFNOTE_START(name, type, flags) \ +.pushsection .note.name, flags,@note ; \ .align 4 ; \ .long 2f - 1f /* namesz */ ; \ - .long 4f - 3f /* descsz */ ; \ + .long 4484f - 3f /* descsz */ ; \ .long type ; \ 1:.asciz #name ; \ 2:.align 4 ; \ -3:desctype descdata ; \ -4:.align 4 ; \ +3: + +#define ELFNOTE_END \ +4484:.align 4 ; \ .popsection ; + +#define ELFNOTE(name, type, desc) \ + ELFNOTE_START(name, type, "") \ + desc ; \ + ELFNOTE_END + #else /* !__ASSEMBLER__ */ #include /* _