summaryrefslogtreecommitdiff
path: root/sysutils/xenkernel3/patches/patch-bd
diff options
context:
space:
mode:
Diffstat (limited to 'sysutils/xenkernel3/patches/patch-bd')
-rw-r--r--sysutils/xenkernel3/patches/patch-bd112
1 files changed, 112 insertions, 0 deletions
diff --git a/sysutils/xenkernel3/patches/patch-bd b/sysutils/xenkernel3/patches/patch-bd
new file mode 100644
index 00000000000..c740a75eaac
--- /dev/null
+++ b/sysutils/xenkernel3/patches/patch-bd
@@ -0,0 +1,112 @@
+$NetBSD: patch-bd,v 1.1 2007/08/17 17:26:05 bouyer Exp $
+
+--- xen/include/public/libelf.h.orig 2007-05-18 16:45:21.000000000 +0200
++++ xen/include/public/libelf.h 2007-08-16 21:43:18.000000000 +0200
+@@ -69,6 +69,9 @@
+ uint64_t pend;
+ uint64_t reloc_offset;
+
++ uint64_t bsd_symtab_pstart;
++ uint64_t bsd_symtab_pend;
++
+ #ifndef __XEN__
+ /* misc */
+ FILE *log;
+@@ -91,33 +94,32 @@
+ #define elf_lsb(elf) (ELFDATA2LSB == (elf)->data)
+ #define elf_swap(elf) (NATIVE_ELFDATA != (elf)->data)
+
+-#define elf_uval(elf, str, elem) \
+- ((ELFCLASS64 == (elf)->class) \
+- ? elf_access_unsigned((elf), (str), \
+- offsetof(typeof(*(str)),e64.elem), \
+- sizeof((str)->e64.elem)) \
+- : elf_access_unsigned((elf), (str), \
+- offsetof(typeof(*(str)),e32.elem), \
+- sizeof((str)->e32.elem)))
+-
+-#define elf_sval(elf, str, elem) \
+- ((ELFCLASS64 == (elf)->class) \
+- ? elf_access_signed((elf), (str), \
+- offsetof(typeof(*(str)),e64.elem), \
+- sizeof((str)->e64.elem)) \
+- : elf_access_signed((elf), (str), \
+- offsetof(typeof(*(str)),e32.elem), \
+- sizeof((str)->e32.elem)))
+-
+-#define elf_size(elf, str) \
+- ((ELFCLASS64 == (elf)->class) \
+- ? sizeof((str)->e64) \
+- : sizeof((str)->e32))
++#define elf_uval(elf, str, elem) \
++ ((ELFCLASS64 == (elf)->class) \
++ ? elf_access_unsigned((elf), (str), \
++ offsetof(typeof(*(str)),e64.elem), \
++ sizeof((str)->e64.elem)) \
++ : elf_access_unsigned((elf), (str), \
++ offsetof(typeof(*(str)),e32.elem), \
++ sizeof((str)->e32.elem)))
++
++#define elf_sval(elf, str, elem) \
++ ((ELFCLASS64 == (elf)->class) \
++ ? elf_access_signed((elf), (str), \
++ offsetof(typeof(*(str)),e64.elem), \
++ sizeof((str)->e64.elem)) \
++ : elf_access_signed((elf), (str), \
++ offsetof(typeof(*(str)),e32.elem), \
++ sizeof((str)->e32.elem)))
++
++#define elf_size(elf, str) \
++ ((ELFCLASS64 == (elf)->class) \
++ ? sizeof((str)->e64) : sizeof((str)->e32))
+
+ uint64_t elf_access_unsigned(struct elf_binary *elf, const void *ptr,
+- uint64_t offset, size_t size);
++ uint64_t offset, size_t size);
+ int64_t elf_access_signed(struct elf_binary *elf, const void *ptr,
+- uint64_t offset, size_t size);
++ uint64_t offset, size_t size);
+
+ uint64_t elf_round_up(struct elf_binary *elf, uint64_t addr);
+
+@@ -165,6 +167,8 @@
+ void *elf_get_ptr(struct elf_binary *elf, unsigned long addr);
+ uint64_t elf_lookup_addr(struct elf_binary *elf, const char *symbol);
+
++void elf_parse_bsdsyms(struct elf_binary *elf, uint64_t pstart); /* private */
++
+ /* ------------------------------------------------------------------------ */
+ /* xc_libelf_relocate.c */
+
+@@ -185,8 +189,8 @@
+ enum xen_elfnote_type type;
+ const char *name;
+ union {
+- const char *str;
+- uint64_t num;
++ const char *str;
++ uint64_t num;
+ } data;
+ };
+
+@@ -228,14 +232,14 @@
+ }
+
+ int elf_xen_parse_features(const char *features,
+- uint32_t *supported,
+- uint32_t *required);
++ uint32_t *supported,
++ uint32_t *required);
+ int elf_xen_parse_note(struct elf_binary *elf,
+- struct elf_dom_parms *parms,
+- const elf_note *note);
++ struct elf_dom_parms *parms,
++ const elf_note *note);
+ int elf_xen_parse_guest_info(struct elf_binary *elf,
+- struct elf_dom_parms *parms);
++ struct elf_dom_parms *parms);
+ int elf_xen_parse(struct elf_binary *elf,
+- struct elf_dom_parms *parms);
++ struct elf_dom_parms *parms);
+
+ #endif /* __XC_LIBELF__ */