$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__ */
