aboutsummaryrefslogtreecommitdiffstats
path: root/patches
diff options
context:
space:
mode:
authorIan Campbell <ian.campbell@xensource.com>2006-08-23 14:34:25 +0100
committerIan Campbell <ian.campbell@xensource.com>2006-08-23 14:34:25 +0100
commit0bf63993544a11ff94a8cb0caa1441b7497cf231 (patch)
tree7936a12d33f50528ded6b4a69a1cdaddb693966c /patches
parent829f87e0184620bc5f6e3d2ebdcb7c7dd3517e2b (diff)
downloadxen-0bf63993544a11ff94a8cb0caa1441b7497cf231.tar.gz
xen-0bf63993544a11ff94a8cb0caa1441b7497cf231.tar.bz2
xen-0bf63993544a11ff94a8cb0caa1441b7497cf231.zip
[LINUX] Define ELFNOTE as a preprocessor macro rather than an assembler macro
Assembler .macros have various issues with string arguments and :varargs. Signed-off-by: Ian Campbell <ian.campbell@xensource.com>
Diffstat (limited to 'patches')
-rw-r--r--patches/linux-2.6.16.13/series1
-rw-r--r--patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch44
2 files changed, 45 insertions, 0 deletions
diff --git a/patches/linux-2.6.16.13/series b/patches/linux-2.6.16.13/series
index 12af0f7312..63774a0bd7 100644
--- a/patches/linux-2.6.16.13/series
+++ b/patches/linux-2.6.16.13/series
@@ -20,3 +20,4 @@ xen-hotplug.patch
xenoprof-generic.patch
x86-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
x86_64-put-note-sections-into-a-pt_note-segment-in-vmlinux.patch
+x86-elfnote-as-preprocessor-macro.patch
diff --git a/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch b/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch
new file mode 100644
index 0000000000..208573b424
--- /dev/null
+++ b/patches/linux-2.6.16.13/x86-elfnote-as-preprocessor-macro.patch
@@ -0,0 +1,44 @@
+
+diff -r 4b7cd997c08f include/linux/elfnote.h
+--- a/include/linux/elfnote.h Wed Aug 23 11:48:46 2006 +0100
++++ b/include/linux/elfnote.h Wed Aug 23 12:44:27 2006 +0100
+@@ -31,22 +31,24 @@
+ /*
+ * Generate a structure with the same shape as Elf{32,64}_Nhdr (which
+ * turn out to be the same size and shape), followed by the name and
+- * desc data with appropriate padding. The 'desc' argument includes
+- * the assembler pseudo op defining the type of the data: .asciz
+- * "hello, world"
++ * desc data with appropriate padding. The 'desctype' argument is the
++ * assembler pseudo op defining the type of the data e.g. .asciz while
++ * 'descdata' is the data itself e.g. "hello, world".
++ *
++ * e.g. ELFNOTE(XYZCo, 42, .asciz, "forty-two")
++ * ELFNOTE(XYZCo, 12, .long, 0xdeadbeef)
+ */
+-.macro ELFNOTE name type desc:vararg
+-.pushsection ".note.\name"
+- .align 4
+- .long 2f - 1f /* namesz */
+- .long 4f - 3f /* descsz */
+- .long \type
+-1:.asciz "\name"
+-2:.align 4
+-3:\desc
+-4:.align 4
+-.popsection
+-.endm
++#define ELFNOTE(name, type, desctype, descdata) \
++.pushsection .note.name ; \
++ .align 4 ; \
++ .long 2f - 1f /* namesz */ ; \
++ .long 4f - 3f /* descsz */ ; \
++ .long type ; \
++1:.asciz "name" ; \
++2:.align 4 ; \
++3:desctype descdata ; \
++4:.align 4 ; \
++.popsection ;
+ #else /* !__ASSEMBLER__ */
+ #include <linux/elf.h>
+ /*