<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/110124>110124</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[libc] add linux mman extension `process_mrelease`
</td>
</tr>
<tr>
<th>Labels</th>
<td>
libc
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
SchrodingerZhu
</td>
</tr>
</table>
<pre>
We need to create a `process_mrelease` wrapper for linux targets, see https://lwn.net/Articles/865341/. This is already inside glibc.
This requires:
- add syscall number into `libc/include/sys/syscall.h.def`
- implement the entrypoint header similar to `libc/src/sys/mman/mmap.h`
- modify `libc/src/sys/mman/CMakeLists.txt` accordingly
- implement the entrypoint similar to `libc/src/sys/mman/linux/mmap.cpp`
- modify `libc/src/sys/mman/linux/CMakeLists.txt` accordingly
- add the header spec
- modify `functions` section in `libc/newhdrgen/yaml/sys/mman.yaml`
- modify `SysMMan` section in `libc/spec/linux.td`
- add test
- similar to `libc/test/src/sys/mman/linux/mmap_test.cpp`
- modify `libc/test/src/sys/mman/linux/CMakeLists.txt` accordingly
-----------------------------------------------------
Misc:
- How to build libc for dev: https://libc.llvm.org/full_host_build.html
- Code style and dev guide: https://libc.llvm.org/dev/index.html
If you use vscode, [sample settings](https://code.visualstudio.com/docs/getstarted/settings#_settings-json-file) are as the following (optional settings are useful in speeding up the compilation):
```
{
"cmake.sourceDirectory": "${workspaceFolder}/runtimes",
"cmake.configureSettings": {
"CMAKE_EXPORT_COMPILE_COMMANDS": true,
"LLVM_ENABLE_RUNTIMES": [
"libc",
"compiler-rt"
],
"LLVM_LIBC_FULL_BUILD": true,
"LLVM_USE_LINKER": "lld", // optional: requires installing lld
"CMAKE_CXX_COMPILER_LAUNCHER": "sccache", // optional: requires installing sccache first
"CMAKE_C_COMPILER_LAUNCHER": "sccache", // optional: requires installing sccache first
"CMAKE_CXX_COMPILER": "/usr/bin/clang++",
"CMAKE_C_COMPILER": "/usr/bin/clang",
"LLVM_LIBC_INCLUDE_SCUDO": true,
"COMPILER_RT_BUILD_SCUDO_STANDALONE_WITH_LLVM_LIBC": true,
"COMPILER_RT_BUILD_GWP_ASAN": false,
"COMPILER_RT_SCUDO_STANDALONE_BUILD_SHARED": false,
"LIBC_USE_NEW_HEADER_GEN": true
},
"cmake.generator": "Ninja", // optional: requires installing Ninja
"editor.formatOnSave": true,
"files.insertFinalNewline": true,
"clangd.arguments": [
"--header-insertion=never"
]
}
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8V81y4jgQfhpxUeEy4i85cABsJtQAmQrJZmovLiG1bc3IkleSk_D2W7LBkAyZZPawFGUD7v7661811FqRKYAJGs7QMOrQyuXaTLYsN5oLlYH5O686O833k0fACoBjpzEzQB1gitEoLI1mYG1SGJBALaBRiJ8NLUswONUGS6GqF-yoycBZRObYAuDcudKi_hSRBSIL-awCBQ6RxdQ4wSRYRBZXo2F_0ENkEeD7XFgsLKbSAOV7LJQVHHAmxY4FKIxQOG2utaCBfyphoIY_e9bFlHNs95ZRKbGqih0YLJTT3gmPhMhCKCYrDogs7N42Vy8d5AGHFI3CI5IoSgkFKIddDhiUM_tSC-VwDpSDwVYUQlKDX4Fbw1rgoqCquZVB3gJjjLu40Fyk-9_rzdf0J6yEdTZwL85HnDKmjU-Y3H9I8rPs6swdWbKy_HOeR4RP8fXp8UyPMSyBHc2dW0srxZzQynoYC_VnLNQZEQXPOTcZeAZ7WshXrIL6l5Mn59DbvV2vqXoXuKZ08Cpw_Kwgau5g3Qn1YpBrkQ9jnXixNwG_EO-PwT4R9oMD_-XVqK6FZW2ndfGNfvYu7yohOfZE6xnA4Qn1p2-73nevlE9FoE2GyCKtpExybV1Sawe5K-QRdq45YOv2EjBV3OPhrBIcPkb1pn1jc3g5Q2yuyxTvdYUrC_jJMu0bf47RcGapbx1swTmhMouGESJXr8146eBJ2IpK6youdMB04c1p5hPhZ52jxgH3uTnikH5y_Nz9YbXqpkICIteYGsDU1tWfain1s1AZRuRKl74IqWyp1JKVhbSSvjRtCeCziauyVma6KIWkXgmR69MAHIWHd_N1PGv7GCNCWEF_QmB1ZRhEwgBz2uwRIT64_kYGaDx71uanLSmDhZYcDBpHiCxMpZwo_LgmiMwvgDKtUpFVBrZtDBrYlgIiZL6efo2T-Pu327v7ZH67_rZcxf6-nm6i7UHBmQpOJhAhq9Vf6yTeTGerOLl72Nwv1_FR1h9lLZXjCxHS9A15BdNEDEzXOP_olVqd9_mb3w6WV8vZPFk8rFbJ7GG5in7L8mEbJ6vl5mt8dwqqlLyhgpt6wsdU--fHE8wfdI5K6TPsFd5EbP79-zFcd8lq-rCZ35ybsIxRlsOfmTko4VSY0zRrXT_Y_V-sXnTzvCoXlTWILHbCjzwmqcoQmdXv1yl-S_ojDPJrButsLzfz1UMUJ9v5Q3T7XsLbyNzdN5XRiCfb--kmmq5uN3HyuLy_SVrYzwN9efyWTLfTzUEjpdK-r_KL1QOZm-ldHL2LUPvpy3UTPyY38TSK75Iv8eac46nHx9Hlns9AgaFOm1OgN0L9oH9WEo1Kywy4cNoEqTYFdbdqS5_gYuQaIn6u2kAoC8YthKJyA89SqMsqnrjPPA-oySq_MNn3BgkipNtt9pNug-4nbT9S8ATmND_84DhM2ujNBO7wSZ9f969pBya9MRn3h9fhcNzJJ0MGfJCm6ZiNxoNBeNULd3TAr3oh7Y_7LOx1xISEZBBek1GvPxz3x8GoR9Ld9WhI0x0dDwlHgxAKKmR7-nWEtRVMer2wRwYdSXcgbb3nn0bhMOqYiZfv7qrMokEo622hRXDCyfq_Qa0wjOpFp9no_a6B4cWBsn5RuvxPoFMZOXl9cmbC5dXucFx6Q4dbtzT6BzC_0tS8_TF6oP40If8GAAD__7p8z8c">