[Mono-dev] Status of non-full AOT on x86 mac

Andreas Färber andreas.faerber at web.de
Sun Oct 31 08:44:45 EDT 2010


Hi,

Am 31.10.2010 um 04:15 schrieb Brian Luczkiewicz:

> diff --git a/mono/mini/aot-compiler.c b/mono/mini/aot-compiler.c
> index 5088324..70ff8c0 100644
> --- a/mono/mini/aot-compiler.c
> +++ b/mono/mini/aot-compiler.c
> @@ -82,6 +82,8 @@
>  #define SHARED_EXT ".dll"
>  #elif defined(__ppc__) && defined(__MACH__)
>  #define SHARED_EXT ".dylib"
> +#elif defined(__APPLE__) && defined(TARGET_X86) && ! 
> defined(__native_client_codegen__)
> +#define SHARED_EXT ".dylib"
>  #else
>  #define SHARED_EXT ".so"
>  #endif

I would suggest to fold this into the preexisting section. Does Darwin/ 
x86 not define __MACH__?

And are you sure that __native_client_codegen__ on OSX should  
influence the file name extension for shared libraries?

> @@ -6055,6 +6057,8 @@ compile_asm (MonoAotCompile *acfg)
>  #define LD_OPTIONS "-m elf64ppc"
>  #elif defined(sparc) && SIZEOF_VOID_P == 8
>  #define AS_OPTIONS "-xarch=v9"
> +#elif defined(TARGET_X86) && defined(__APPLE__) && ! 
> defined(__native_client_codegen__)
> +#define AS_OPTIONS "-arch i386 -W"

What warnings are you suppressing there? The surrounding archs don't  
appear to.

>  #else
>  #define AS_OPTIONS ""
>  #endif

> diff --git a/mono/mini/aot-runtime.c b/mono/mini/aot-runtime.c
> index 4bae87b..d27d44c 100644
> --- a/mono/mini/aot-runtime.c
> +++ b/mono/mini/aot-runtime.c
> @@ -65,6 +65,8 @@
>  #define SHARED_EXT ".dll"
>  #elif ((defined(__ppc__) || defined(__powerpc__) ||  
> defined(__ppc64__)) || defined(__MACH__)) && !defined(__linux__)
>  #define SHARED_EXT ".dylib"
> +#elif defined(__APPLE__) && defined(TARGET_X86) && ! 
> defined(__native_client_codegen__)
> +#define SHARED_EXT ".dylib"
>  #else
>  #define SHARED_EXT ".so"
>  #endif

Same thoughts wrt the extension here.

> diff --git a/mono/mini/image-writer.c b/mono/mini/image-writer.c
> index ff7e3d8..4a3cf02 100644
> --- a/mono/mini/image-writer.c
> +++ b/mono/mini/image-writer.c

> @@ -1612,7 +1612,13 @@ static void
>  asm_writer_emit_label (MonoImageWriter *acfg, const char *name)
>  {
>  	asm_writer_emit_unset_mode (acfg);
> -#if defined(HOST_WIN32) && (defined(TARGET_X86) ||  
> defined(TARGET_AMD64))
> +#if (defined(TARGET_X86) && defined(TARGET_ASM_APPLE))
> +        name = get_label(name);
> +        fprintf (acfg->fp, "%s:\n", name);
> +        if (name[0] != 'L')
> +            fprintf (acfg->fp, "_%s:\n", name);
> +
> +#elif (defined(HOST_WIN32) && (defined(TARGET_X86) ||  
> defined(TARGET_AMD64))) || (defined(TARGET_X86) &&  
> defined(TARGET_ASM_APPLE))

Is that a typo? The latter part of the #elif would never be true since  
it is handled in your #if already.

Regards,
Andreas


More information about the Mono-devel-list mailing list