[PATCH][Compiler-rt] Windows implementation of mmap functionality in clear_cache_test and enable_execute_stack_test

Hi,

Attached is a patch for compiler-rt to allow it to compile with MinGW-w64 on Windows. Results aren’t that bad.

x86 GCC and Clang do everything right, all tests pass.

x86_64 GCC fails a lot of tests. This is 99% sure a codegen issue.

38 - fixunssfti_test (Failed)
74 - fixunsdfti_test (Failed)

x86_64 Clang fails these tests:

2 - udivmodti4_test (SEGFAULT)
6 - fixdfti_test (Failed)
8 - negti2_test (SEGFAULT)
9 - cmpti2_test (SEGFAULT)
10 - mulvti3_test (SEGFAULT)
12 - fixunsxfti_test (Failed)
14 - negvti2_test (SEGFAULT)
16 - ucmpti2_test (SEGFAULT)
19 - popcountti2_test (SEGFAULT)
23 - shlti3_test (SEGFAULT)
29 - floatuntisf_test (SEGFAULT)
31 - powixf2_test (SEGFAULT)
34 - floattisf_test (SEGFAULT)
38 - fixunssfti_test (Failed)
39 - parityti2_test (SEGFAULT)
45 - multi3_test (SEGFAULT)
47 - clzti2_test (SEGFAULT)
53 - ffsti2_test (SEGFAULT)
55 - fixsfti_test (Failed)
56 - absvti2_test (SEGFAULT)
57 - ashrti3_test (SEGFAULT)
62 - addvti3_test (SEGFAULT)
64 - floatuntidf_test (SEGFAULT)
65 - umodti3_test (SEGFAULT)
66 - ctzti2_test (SEGFAULT)
67 - floatuntixf_test (SEGFAULT)
69 - floattidf_test (SEGFAULT)
70 - modti3_test (SEGFAULT)
73 - floattixf_test (SEGFAULT)
74 - fixunsdfti_test (Failed)
75 - subvti3_test (SEGFAULT)
80 - lshrti3_test (SEGFAULT)
83 - udivti3_test (SEGFAULT)
86 - fixxfti_test (Failed)
88 - divti3_test (SEGFAULT)

I’ll be happy to provide any helpful info (as in, correctly generated object files or something)

Everything passes on x86.

Please apply at your leisure! Thanks!

Ruben

mingw.patch.txt (2.91 KB)

Hello Ruben

Please apply at your leisure! Thanks!

Will you please fix the code to use the same coding style as
everything else around?

Thanks!

2012/1/7 Anton Korobeynikov <anton@korobeynikov.info>

Hello Ruben

Please apply at your leisure! Thanks!

Will you please fix the code to use the same coding style as
everything else around?

I see I missed some curly braces. I also modified spacing a tiny bit. If you mean anything else, I cannot see what’s out of style.

Thanks for the prompt response,

Ruben

mingw.patch.txt (2.58 KB)

Hi Ruben,

I see I missed some curly braces. I also modified spacing a tiny bit.

Doesn't seem so. E.g. you have:

+ if ( !VirtualQuery(addr, &b, sizeof(b)) )
+ exit(1);
+ if( !VirtualProtect(b.BaseAddress, b.RegionSize,
PAGE_EXECUTE_READWRITE, &b.Protect) )
Add space after "if". Do not put spaces after "(" and before ")". Same
for other places in the file.

2012/1/7 Anton Korobeynikov <anton@korobeynikov.info>

Hi Ruben,

I see I missed some curly braces. I also modified spacing a tiny bit.

Doesn’t seem so. E.g. you have:

  • if ( !VirtualQuery(addr, &b, sizeof(b)) )
  • exit(1);
  • if( !VirtualProtect(b.BaseAddress, b.RegionSize,
    PAGE_EXECUTE_READWRITE, &b.Protect) )
    Add space after “if”. Do not put spaces after “(” and before “)”. Same
    for other places in the file.

OK, I followed the rules you set forth here. But the files followed different ones, hence my confusion. I modified the rest of the file to follow these spacing guidelines (code which was wrongly formatted to begin with).

Thanks for having patience :),

Ruben

mingw.patch.txt (3.76 KB)

Hi Ruben,

Thanks for having patience :),

Looks ok. Do you need me to commit this for you? Or you have the commit access?

Hi Ruben,

Thanks for having patience :),
Looks ok. Do you need me to commit this for you? Or you have the commit access?

Please commit this for me. I don’t have commit access.

Thanks!

Ruben

> Thanks for having patience :),
Looks ok. Do you need me to commit this for you? Or you have the commit
access?

Please commit this for me. I don't have commit access.

Committed in r148048. Thanks!