Page MenuHomePhabricator

[builtins][test] Avoid unportable mmap call in clear_cache_test.c
ClosedPublic

Authored by ro on Oct 4 2019, 3:53 AM.

Details

Summary

Within the last two weeks, the Builtins-*-sunos :: clear_cache_test.c started to FAIL
on Solaris. Running it under truss shows

mmap(0x00000000, 128, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, 0, 0) Err#22 EINVAL
_exit(1)

While there are several possible reasons mmap can return EINVAL on Solaris, it turns
out it's this one (from mmap(2)):

MAP_ANON  was  specified,  but the file descriptor was not
 -1.

And indeed even the Linux mmap(2) documents this as unportable:

MAP_ANONYMOUS
        The mapping is not backed by any file; its contents are initial‐
        ized to zero.  The fd argument is ignored; however, some  imple‐
        mentations require fd to be -1 if MAP_ANONYMOUS (or MAP_ANON) is
        specified, and portable applications should  ensure  this.   The

This patch follows this advise. Tested on x86_64-pc-linux-gnu, amd64-pc-solaris2.11
and sparcv9-sun-solaris2.11. Ok for trunk?

Diff Detail

Event Timeline

ro created this revision.Oct 4 2019, 3:53 AM
Herald added projects: Restricted Project, Restricted Project. · View Herald TranscriptOct 4 2019, 3:53 AM
Herald added subscribers: Restricted Project, fedor.sergeev, jyknight. · View Herald Transcript
This revision is now accepted and ready to land.Oct 17 2019, 11:01 AM
This revision was automatically updated to reflect the committed changes.