[patch] darwin full x86_64 and i?86 libjava support

Andreas Tobler andreast-list@fgznet.ch
Fri Dec 7 19:39:00 GMT 2007


Andrew Haley wrote:
> Andreas Tobler writes:
>  > 
>  > 
>  > Thanks for review and feedback,
> 
> Your formatting is FUBAR in a few places:

:(

> This is kinda horrible:

Tried to make it better, see below.

>  > +#if defined (__LP64__)
>  > +  fde = getsectdatafromheader_64(
>  > +#else
>  > +  fde = getsectdatafromheader(
>  > +#endif
>  > +			      mh, "__DATA", "jcr", &sz);
> 
> Remember spaces between function names and arg lists.

Fixed.

> Otherwise OK.

Thanks!

Is the below a better approach? I'm not sure how much I can modify 
existing code when it only belongs to formatting.

Andreas

Index: darwin.cc
===================================================================
--- darwin.cc   (revision 130692)
+++ darwin.cc   (working copy)
@@ -1,6 +1,6 @@
  /* darwin.cc - class loader stuff for Darwin.  */

-/* Copyright (C) 2004  Free Software Foundation
+/* Copyright (C) 2004, 2007  Free Software Foundation

     This file is part of libgcj.

@@ -21,26 +21,44 @@
     ourself.  */

  #include <stdint.h>
-struct mach_header;
-extern "C" void _dyld_register_func_for_add_image
-  (void (*func)(const struct mach_header *mh, intptr_t vmaddr_slide));
-extern "C" void _dyld_register_func_for_remove_image
-  (void (*func)(const struct mach_header *mh, intptr_t vmaddr_slide));
-extern "C" char *getsectdatafromheader
-(const struct mach_header *mhp, const char *segname, const char *sectname,
- uint32_t *size);
+#if !defined (__LP64__)
+  struct mach_header;
+# define JAVA_MACH_HEADER mach_header
+# define  mh_size_t uint32_t
+  extern "C" void _dyld_register_func_for_add_image
+    (void (*func)(const struct mach_header *mh, intptr_t vmaddr_slide));
+  extern "C" void _dyld_register_func_for_remove_image
+    (void (*func)(const struct mach_header *mh, intptr_t vmaddr_slide));
+  extern "C" char *getsectdatafromheader
+    (const struct mach_header *mhp, const char *segname, const char 
*sectname,
+     uint32_t *size);
+# define GETDATA getsectdatafromheader
+#else
+  struct mach_header_64;
+# define JAVA_MACH_HEADER mach_header_64
+# define mh_size_t uint64_t
+  extern "C" void _dyld_register_func_for_add_image
+    (void (*func)(const struct mach_header_64 *mh, intptr_t vmaddr_slide));
+  extern "C" void _dyld_register_func_for_remove_image
+    (void (*func)(const struct mach_header_64 *mh, intptr_t vmaddr_slide));
+  extern "C" char *getsectdatafromheader_64
+    (const struct mach_header_64 *mhp, const char *segname,
+     const char *sectname, uint64_t *size);
+# define GETDATA getsectdatafromheader_64
+#endif

  /* When a new image is loaded, look to see if it has a jcr section
     and if so register the classes listed in it.  */

  static void
-darwin_java_register_dyld_add_image_hook (const struct mach_header *mh,
+darwin_java_register_dyld_add_image_hook (const struct JAVA_MACH_HEADER 
*mh,
                                           intptr_t slide)
  {
    char *fde;
-  uint32_t sz;
-
-  fde = getsectdatafromheader (mh, "__DATA", "jcr", &sz);
+  mh_size_t sz;
+
+  fde = GETDATA (mh, "__DATA", "jcr", &sz);
+
    if (! fde)
      return;



More information about the Java-patches mailing list