I did some search, and you are correct that different platforms may behave a bit different. Below are some info extracted from various platforms' mmap() man page:
Linux -- has both MAP_ANON and MAP_ANONYMOUS. The latter is preferred. http://linux.die.net/man/2/mmap FreeBSD -- has both MAP_ANON and MAP_ANONYMOUS. The latter is an alias of the former. http://www.freebsd.org/cgi/man.cgi?query=mmap&sektion=2 OpenBSD -- only has MAP_ANON http://www.openbsd.org/cgi-bin/man.cgi?query=mmap&apropos=0&sektion=0&manpath=OpenBSD+Current&arch=amd64&format=html DragonFly -- only has MAP_ANON http://leaf.dragonflybsd.org/cgi/web-man?command=mmap§ion=2 Mac OS X -- only has MAP_ANON https://developer.apple.com/library/ios/documentation/system/conceptual/manpages_iphoneos/man2/mmap.2.html Mingw -- no support for mmap() http://www.mingw.org/node/21 Based on the info collected above, it seems that mmap() with MAP_ANON has the widest support across various Linux and *BSD platforms. On another side, because using mmap() is under "--with-selinux" option, I am wondering if focusing on Linux platform solely is good enough for now? Thanks, Keren On Fri, Jan 10, 2014 at 12:37 AM, Christian JULLIEN <[email protected]>wrote: > If I recall correctly, MAP_ANONYMOUS is not true POSIX but an extension > most un*x system implement yet it is sometime call MAP_ANON. > To be portable, you must detect in ./configure if mmap supports either > MAP_ANONYMOUS or MAP_ANON and fallback to /tmp/xxx if none is supported. > > Christian > > > ----- Message d'origine ----- > *De :* "Thomas Preud'homme" <[email protected]> > *Date *ven. 10/01/2014 07:33 (GMT +01:00) > *À : *"[email protected]" <[email protected]> > *Cc : *"Keren Tan" <[email protected]> > *Objet :* Re: [Tinycc-devel] Use an anonymous file to back mmap > > > Le jeudi 9 janvier 2014, 14:21:59 Keren Tan a écrit : > > Hi All, > > > > I just submitted a tentative patch to the mob branch about mmap. When > > selinux is enabled, tccrun.c uses mmap to hold the dynamically generated > > code/data. It is backed by a randomly named file under /tmp directory. My > > patch is to use an anonymous file in mmap instead, so that the generated > > code/data only resides in memory, and tcc does not depend on a writable > > /tmp anymore. > > > > tcc is fantastic! I am new to this community. Your comments are very > > welcome! > > Here is my comment: you removed the line s1->mem_size = ret; which is used > to > unmap these memory regions in libtcc.c > > > > > > http://repo.or.cz/w/tinycc.git/commit/935d8169b8e3570f1a5e726c5295be2f460c15 > > 40 > > > > Best, > > Keren Tan > > Thanks for your patch. > > Best regards, > > Thomas > > _______________________________________________ > Tinycc-devel mailing list > [email protected] > https://lists.nongnu.org/mailman/listinfo/tinycc-devel > >
_______________________________________________ Tinycc-devel mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/tinycc-devel
