├── .gitignore ├── LICENSE ├── Makefile ├── README.md ├── big_alloc.c ├── linker ├── README ├── big_alloc.trace ├── big_alloc_linker.trace ├── big_alloc_linker_maps_after ├── big_alloc_linker_maps_before ├── big_alloc_maps_after ├── big_alloc_maps_before ├── default.lst ├── hack.lst └── verbose ├── lxc-my.conf ├── memrestrict.c ├── ptrace-restrict.c └── vg-wrap.sh /.gitignore: -------------------------------------------------------------------------------- 1 | big_alloc 2 | *.o 3 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2014 Alex Dzyoba 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: big_alloc 2 | 3 | big_alloc: big_alloc.c 4 | gcc -g $^ -o $@ 5 | 6 | container: big_alloc 7 | sudo lxc-execute -n restricted -f ./lxc-my.conf /bin/sh 8 | 9 | linker: 10 | gcc big_alloc.c -o big_alloc -Wl,-verbose > default.lst 11 | 12 | big_alloc_linker: big_alloc.c 13 | gcc -g $^ -o $@ -Wl,-T hack.lst 14 | 15 | libmemrestrict: memrestrict.c 16 | gcc -g -shared -fPIC -ldl memrestrict.c -o libmemrestrict.so 17 | 18 | ptrace-restrict: ptrace-restrict.c 19 | gcc -g $^ -o $@ 20 | 21 | clean: 22 | rm -f *.o big_alloc big_alloc_linker libmemrestrict.so ptrace-restrict 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Collection of configs, scripts and programs were involved in writing 2 | ["Restricting program memory"][restrict-memory]. 3 | 4 | * big_alloc.c - simple program that allocates ~100 MiB of memory 5 | * lxc-my.conf - config for LXC 6 | * linker - Linker related stuff 7 | * Makefile - you guess. 8 | * memrestrict.c - intercept malloc/free calls to acount heap usage 9 | * vg-wrap.sh - LD_PRELOAD wrapper for valgrind 10 | 11 | 12 | [restrict-memory]: http://avd.reduct.ru/programming/restrict-memory.html 13 | -------------------------------------------------------------------------------- /big_alloc.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | 6 | // 1000 allocation per 100 KiB = 100 000 KiB = 100 MiB 7 | #define NALLOCS 1000 8 | #define ALLOC_SIZE 1024*100 // 100 KiB 9 | 10 | int main(int argc, const char *argv[]) 11 | { 12 | int i = 0; 13 | int **pp; 14 | bool failed = false; 15 | 16 | pp = malloc(NALLOCS * sizeof(int *)); 17 | for(i = 0; i < NALLOCS; i++) 18 | { 19 | pp[i] = malloc(ALLOC_SIZE); 20 | if (!pp[i]) 21 | { 22 | perror("malloc"); 23 | printf("Failed after %d allocations\n", i); 24 | failed = true; 25 | break; 26 | } 27 | // Touch some bytes in memory to trick copy-on-write. 28 | memset(pp[i], 0xA, 100); 29 | printf("pp[%d] = %p\n", i, pp[i]); 30 | } 31 | 32 | if (!failed) 33 | printf("Successfully allocated %d bytes\n", NALLOCS * ALLOC_SIZE); 34 | 35 | for(i = 0; i < NALLOCS; i++) 36 | { 37 | if (pp[i]) 38 | free(pp[i]); 39 | } 40 | free(pp); 41 | 42 | return 0; 43 | } 44 | -------------------------------------------------------------------------------- /linker/README: -------------------------------------------------------------------------------- 1 | 2 | This directory contains linker related stuff gathered while I was researching 3 | linker hacks. Refer to . 4 | 5 | 6 | -> Default and modified (shifted `.data` section) scripts: 7 | 8 | - default.lst 9 | - hack.lst 10 | 11 | -> Process maps (/proc//maps) before and after allocations of normal 12 | binary `big_alloc` and modified `big_alloc`: 13 | 14 | - big_alloc_maps_before 15 | - big_alloc_maps_after 16 | - big_alloc_linker_maps_before 17 | - big_alloc_linker_maps_after 18 | 19 | 20 | -> Trace of memory accesses (`strace -e trace=memory`) of normal and modified 21 | binaries: 22 | 23 | - big_alloc.trace 24 | - big_alloc_linker.trace 25 | 26 | -> Exact command to build program (invocation of `cc1`, `as` and `collect2`): 27 | 28 | - verbose 29 | -------------------------------------------------------------------------------- /linker/big_alloc.trace: -------------------------------------------------------------------------------- 1 | brk(0) = 0x8135000 2 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77df000 3 | mmap2(NULL, 95800, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb77c7000 4 | mmap2(0x4226d000, 1825436, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4226d000 5 | mmap2(0x42425000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b8000) = 0x42425000 6 | mmap2(0x42428000, 10908, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x42428000 7 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77c6000 8 | mprotect(0x42425000, 8192, PROT_READ) = 0 9 | mprotect(0x8049000, 4096, PROT_READ) = 0 10 | mprotect(0x42269000, 4096, PROT_READ) = 0 11 | munmap(0xb77c7000, 95800) = 0 12 | brk(0) = 0x8135000 13 | brk(0x8156000) = 0x8156000 14 | brk(0) = 0x8156000 15 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb77de000 16 | brk(0) = 0x8156000 17 | brk(0x8188000) = 0x8188000 18 | brk(0) = 0x8188000 19 | brk(0x81ba000) = 0x81ba000 20 | brk(0) = 0x81ba000 21 | brk(0x81ec000) = 0x81ec000 22 | brk(0) = 0x81ec000 23 | brk(0x821e000) = 0x821e000 24 | brk(0) = 0x821e000 25 | brk(0x8251000) = 0x8251000 26 | brk(0) = 0x8251000 27 | brk(0x8283000) = 0x8283000 28 | brk(0) = 0x8283000 29 | brk(0x82b5000) = 0x82b5000 30 | brk(0) = 0x82b5000 31 | brk(0x82e7000) = 0x82e7000 32 | brk(0) = 0x82e7000 33 | brk(0x8319000) = 0x8319000 34 | brk(0) = 0x8319000 35 | brk(0x834b000) = 0x834b000 36 | brk(0) = 0x834b000 37 | brk(0x837d000) = 0x837d000 38 | brk(0) = 0x837d000 39 | brk(0x83af000) = 0x83af000 40 | brk(0) = 0x83af000 41 | brk(0x83e1000) = 0x83e1000 42 | brk(0) = 0x83e1000 43 | brk(0x8413000) = 0x8413000 44 | brk(0) = 0x8413000 45 | brk(0x8445000) = 0x8445000 46 | brk(0) = 0x8445000 47 | brk(0x8477000) = 0x8477000 48 | brk(0) = 0x8477000 49 | brk(0x84a9000) = 0x84a9000 50 | brk(0) = 0x84a9000 51 | brk(0x84db000) = 0x84db000 52 | brk(0) = 0x84db000 53 | brk(0x850d000) = 0x850d000 54 | brk(0) = 0x850d000 55 | brk(0x853f000) = 0x853f000 56 | brk(0) = 0x853f000 57 | brk(0x8571000) = 0x8571000 58 | brk(0) = 0x8571000 59 | brk(0x85a3000) = 0x85a3000 60 | brk(0) = 0x85a3000 61 | brk(0x85d5000) = 0x85d5000 62 | brk(0) = 0x85d5000 63 | brk(0x8607000) = 0x8607000 64 | brk(0) = 0x8607000 65 | brk(0x8639000) = 0x8639000 66 | brk(0) = 0x8639000 67 | brk(0x866b000) = 0x866b000 68 | brk(0) = 0x866b000 69 | brk(0x869d000) = 0x869d000 70 | brk(0) = 0x869d000 71 | brk(0x86cf000) = 0x86cf000 72 | brk(0) = 0x86cf000 73 | brk(0x8701000) = 0x8701000 74 | brk(0) = 0x8701000 75 | brk(0x8733000) = 0x8733000 76 | brk(0) = 0x8733000 77 | brk(0x8765000) = 0x8765000 78 | brk(0) = 0x8765000 79 | brk(0x8797000) = 0x8797000 80 | brk(0) = 0x8797000 81 | brk(0x87c9000) = 0x87c9000 82 | brk(0) = 0x87c9000 83 | brk(0x87fb000) = 0x87fb000 84 | brk(0) = 0x87fb000 85 | brk(0x882d000) = 0x882d000 86 | brk(0) = 0x882d000 87 | brk(0x885f000) = 0x885f000 88 | brk(0) = 0x885f000 89 | brk(0x8891000) = 0x8891000 90 | brk(0) = 0x8891000 91 | brk(0x88c3000) = 0x88c3000 92 | brk(0) = 0x88c3000 93 | brk(0x88f5000) = 0x88f5000 94 | brk(0) = 0x88f5000 95 | brk(0x8927000) = 0x8927000 96 | brk(0) = 0x8927000 97 | brk(0x8959000) = 0x8959000 98 | brk(0) = 0x8959000 99 | brk(0x898b000) = 0x898b000 100 | brk(0) = 0x898b000 101 | brk(0x89bd000) = 0x89bd000 102 | brk(0) = 0x89bd000 103 | brk(0x89ef000) = 0x89ef000 104 | brk(0) = 0x89ef000 105 | brk(0x8a21000) = 0x8a21000 106 | brk(0) = 0x8a21000 107 | brk(0x8a53000) = 0x8a53000 108 | brk(0) = 0x8a53000 109 | brk(0x8a85000) = 0x8a85000 110 | brk(0) = 0x8a85000 111 | brk(0x8ab7000) = 0x8ab7000 112 | brk(0) = 0x8ab7000 113 | brk(0x8ae9000) = 0x8ae9000 114 | brk(0) = 0x8ae9000 115 | brk(0x8b1b000) = 0x8b1b000 116 | brk(0) = 0x8b1b000 117 | brk(0x8b4d000) = 0x8b4d000 118 | brk(0) = 0x8b4d000 119 | brk(0x8b7f000) = 0x8b7f000 120 | brk(0) = 0x8b7f000 121 | brk(0x8bb1000) = 0x8bb1000 122 | brk(0) = 0x8bb1000 123 | brk(0x8be3000) = 0x8be3000 124 | brk(0) = 0x8be3000 125 | brk(0x8c15000) = 0x8c15000 126 | brk(0) = 0x8c15000 127 | brk(0x8c47000) = 0x8c47000 128 | brk(0) = 0x8c47000 129 | brk(0x8c79000) = 0x8c79000 130 | brk(0) = 0x8c79000 131 | brk(0x8cab000) = 0x8cab000 132 | brk(0) = 0x8cab000 133 | brk(0x8cdd000) = 0x8cdd000 134 | brk(0) = 0x8cdd000 135 | brk(0x8d0f000) = 0x8d0f000 136 | brk(0) = 0x8d0f000 137 | brk(0x8d41000) = 0x8d41000 138 | brk(0) = 0x8d41000 139 | brk(0x8d73000) = 0x8d73000 140 | brk(0) = 0x8d73000 141 | brk(0x8da5000) = 0x8da5000 142 | brk(0) = 0x8da5000 143 | brk(0x8dd7000) = 0x8dd7000 144 | brk(0) = 0x8dd7000 145 | brk(0x8e09000) = 0x8e09000 146 | brk(0) = 0x8e09000 147 | brk(0x8e3b000) = 0x8e3b000 148 | brk(0) = 0x8e3b000 149 | brk(0x8e6d000) = 0x8e6d000 150 | brk(0) = 0x8e6d000 151 | brk(0x8e9f000) = 0x8e9f000 152 | brk(0) = 0x8e9f000 153 | brk(0x8ed1000) = 0x8ed1000 154 | brk(0) = 0x8ed1000 155 | brk(0x8f03000) = 0x8f03000 156 | brk(0) = 0x8f03000 157 | brk(0x8f35000) = 0x8f35000 158 | brk(0) = 0x8f35000 159 | brk(0x8f67000) = 0x8f67000 160 | brk(0) = 0x8f67000 161 | brk(0x8f99000) = 0x8f99000 162 | brk(0) = 0x8f99000 163 | brk(0x8fcb000) = 0x8fcb000 164 | brk(0) = 0x8fcb000 165 | brk(0x8ffd000) = 0x8ffd000 166 | brk(0) = 0x8ffd000 167 | brk(0x902f000) = 0x902f000 168 | brk(0) = 0x902f000 169 | brk(0x9061000) = 0x9061000 170 | brk(0) = 0x9061000 171 | brk(0x9093000) = 0x9093000 172 | brk(0) = 0x9093000 173 | brk(0x90c5000) = 0x90c5000 174 | brk(0) = 0x90c5000 175 | brk(0x90f7000) = 0x90f7000 176 | brk(0) = 0x90f7000 177 | brk(0x9129000) = 0x9129000 178 | brk(0) = 0x9129000 179 | brk(0x915b000) = 0x915b000 180 | brk(0) = 0x915b000 181 | brk(0x918d000) = 0x918d000 182 | brk(0) = 0x918d000 183 | brk(0x91bf000) = 0x91bf000 184 | brk(0) = 0x91bf000 185 | brk(0x91f1000) = 0x91f1000 186 | brk(0) = 0x91f1000 187 | brk(0x9223000) = 0x9223000 188 | brk(0) = 0x9223000 189 | brk(0x9255000) = 0x9255000 190 | brk(0) = 0x9255000 191 | brk(0x9287000) = 0x9287000 192 | brk(0) = 0x9287000 193 | brk(0x92b9000) = 0x92b9000 194 | brk(0) = 0x92b9000 195 | brk(0x92eb000) = 0x92eb000 196 | brk(0) = 0x92eb000 197 | brk(0x931d000) = 0x931d000 198 | brk(0) = 0x931d000 199 | brk(0x934f000) = 0x934f000 200 | brk(0) = 0x934f000 201 | brk(0x9381000) = 0x9381000 202 | brk(0) = 0x9381000 203 | brk(0x93b3000) = 0x93b3000 204 | brk(0) = 0x93b3000 205 | brk(0x93e5000) = 0x93e5000 206 | brk(0) = 0x93e5000 207 | brk(0x9417000) = 0x9417000 208 | brk(0) = 0x9417000 209 | brk(0x9449000) = 0x9449000 210 | brk(0) = 0x9449000 211 | brk(0x947b000) = 0x947b000 212 | brk(0) = 0x947b000 213 | brk(0x94ad000) = 0x94ad000 214 | brk(0) = 0x94ad000 215 | brk(0x94df000) = 0x94df000 216 | brk(0) = 0x94df000 217 | brk(0x9511000) = 0x9511000 218 | brk(0) = 0x9511000 219 | brk(0x9543000) = 0x9543000 220 | brk(0) = 0x9543000 221 | brk(0x9575000) = 0x9575000 222 | brk(0) = 0x9575000 223 | brk(0x95a7000) = 0x95a7000 224 | brk(0) = 0x95a7000 225 | brk(0x95d9000) = 0x95d9000 226 | brk(0) = 0x95d9000 227 | brk(0x960b000) = 0x960b000 228 | brk(0) = 0x960b000 229 | brk(0x963d000) = 0x963d000 230 | brk(0) = 0x963d000 231 | brk(0x966f000) = 0x966f000 232 | brk(0) = 0x966f000 233 | brk(0x96a1000) = 0x96a1000 234 | brk(0) = 0x96a1000 235 | brk(0x96d3000) = 0x96d3000 236 | brk(0) = 0x96d3000 237 | brk(0x9705000) = 0x9705000 238 | brk(0) = 0x9705000 239 | brk(0x9737000) = 0x9737000 240 | brk(0) = 0x9737000 241 | brk(0x9769000) = 0x9769000 242 | brk(0) = 0x9769000 243 | brk(0x979b000) = 0x979b000 244 | brk(0) = 0x979b000 245 | brk(0x97cd000) = 0x97cd000 246 | brk(0) = 0x97cd000 247 | brk(0x97ff000) = 0x97ff000 248 | brk(0) = 0x97ff000 249 | brk(0x9831000) = 0x9831000 250 | brk(0) = 0x9831000 251 | brk(0x9863000) = 0x9863000 252 | brk(0) = 0x9863000 253 | brk(0x9895000) = 0x9895000 254 | brk(0) = 0x9895000 255 | brk(0x98c7000) = 0x98c7000 256 | brk(0) = 0x98c7000 257 | brk(0x98f9000) = 0x98f9000 258 | brk(0) = 0x98f9000 259 | brk(0x992b000) = 0x992b000 260 | brk(0) = 0x992b000 261 | brk(0x995d000) = 0x995d000 262 | brk(0) = 0x995d000 263 | brk(0x998f000) = 0x998f000 264 | brk(0) = 0x998f000 265 | brk(0x99c1000) = 0x99c1000 266 | brk(0) = 0x99c1000 267 | brk(0x99f3000) = 0x99f3000 268 | brk(0) = 0x99f3000 269 | brk(0x9a25000) = 0x9a25000 270 | brk(0) = 0x9a25000 271 | brk(0x9a57000) = 0x9a57000 272 | brk(0) = 0x9a57000 273 | brk(0x9a89000) = 0x9a89000 274 | brk(0) = 0x9a89000 275 | brk(0x9abb000) = 0x9abb000 276 | brk(0) = 0x9abb000 277 | brk(0x9aed000) = 0x9aed000 278 | brk(0) = 0x9aed000 279 | brk(0x9b1f000) = 0x9b1f000 280 | brk(0) = 0x9b1f000 281 | brk(0x9b51000) = 0x9b51000 282 | brk(0) = 0x9b51000 283 | brk(0x9b83000) = 0x9b83000 284 | brk(0) = 0x9b83000 285 | brk(0x9bb5000) = 0x9bb5000 286 | brk(0) = 0x9bb5000 287 | brk(0x9be7000) = 0x9be7000 288 | brk(0) = 0x9be7000 289 | brk(0x9c19000) = 0x9c19000 290 | brk(0) = 0x9c19000 291 | brk(0x9c4b000) = 0x9c4b000 292 | brk(0) = 0x9c4b000 293 | brk(0x9c7d000) = 0x9c7d000 294 | brk(0) = 0x9c7d000 295 | brk(0x9caf000) = 0x9caf000 296 | brk(0) = 0x9caf000 297 | brk(0x9ce1000) = 0x9ce1000 298 | brk(0) = 0x9ce1000 299 | brk(0x9d13000) = 0x9d13000 300 | brk(0) = 0x9d13000 301 | brk(0x9d45000) = 0x9d45000 302 | brk(0) = 0x9d45000 303 | brk(0x9d77000) = 0x9d77000 304 | brk(0) = 0x9d77000 305 | brk(0x9da9000) = 0x9da9000 306 | brk(0) = 0x9da9000 307 | brk(0x9ddb000) = 0x9ddb000 308 | brk(0) = 0x9ddb000 309 | brk(0x9e0d000) = 0x9e0d000 310 | brk(0) = 0x9e0d000 311 | brk(0x9e3f000) = 0x9e3f000 312 | brk(0) = 0x9e3f000 313 | brk(0x9e71000) = 0x9e71000 314 | brk(0) = 0x9e71000 315 | brk(0x9ea3000) = 0x9ea3000 316 | brk(0) = 0x9ea3000 317 | brk(0x9ed5000) = 0x9ed5000 318 | brk(0) = 0x9ed5000 319 | brk(0x9f07000) = 0x9f07000 320 | brk(0) = 0x9f07000 321 | brk(0x9f39000) = 0x9f39000 322 | brk(0) = 0x9f39000 323 | brk(0x9f6b000) = 0x9f6b000 324 | brk(0) = 0x9f6b000 325 | brk(0x9f9d000) = 0x9f9d000 326 | brk(0) = 0x9f9d000 327 | brk(0x9fcf000) = 0x9fcf000 328 | brk(0) = 0x9fcf000 329 | brk(0xa001000) = 0xa001000 330 | brk(0) = 0xa001000 331 | brk(0xa033000) = 0xa033000 332 | brk(0) = 0xa033000 333 | brk(0xa065000) = 0xa065000 334 | brk(0) = 0xa065000 335 | brk(0xa097000) = 0xa097000 336 | brk(0) = 0xa097000 337 | brk(0xa0c9000) = 0xa0c9000 338 | brk(0) = 0xa0c9000 339 | brk(0xa0fb000) = 0xa0fb000 340 | brk(0) = 0xa0fb000 341 | brk(0xa12d000) = 0xa12d000 342 | brk(0) = 0xa12d000 343 | brk(0xa15f000) = 0xa15f000 344 | brk(0) = 0xa15f000 345 | brk(0xa191000) = 0xa191000 346 | brk(0) = 0xa191000 347 | brk(0xa1c3000) = 0xa1c3000 348 | brk(0) = 0xa1c3000 349 | brk(0xa1f5000) = 0xa1f5000 350 | brk(0) = 0xa1f5000 351 | brk(0xa227000) = 0xa227000 352 | brk(0) = 0xa227000 353 | brk(0xa259000) = 0xa259000 354 | brk(0) = 0xa259000 355 | brk(0xa28b000) = 0xa28b000 356 | brk(0) = 0xa28b000 357 | brk(0xa2bd000) = 0xa2bd000 358 | brk(0) = 0xa2bd000 359 | brk(0xa2ef000) = 0xa2ef000 360 | brk(0) = 0xa2ef000 361 | brk(0xa321000) = 0xa321000 362 | brk(0) = 0xa321000 363 | brk(0xa353000) = 0xa353000 364 | brk(0) = 0xa353000 365 | brk(0xa385000) = 0xa385000 366 | brk(0) = 0xa385000 367 | brk(0xa3b7000) = 0xa3b7000 368 | brk(0) = 0xa3b7000 369 | brk(0xa3e9000) = 0xa3e9000 370 | brk(0) = 0xa3e9000 371 | brk(0xa41b000) = 0xa41b000 372 | brk(0) = 0xa41b000 373 | brk(0xa44d000) = 0xa44d000 374 | brk(0) = 0xa44d000 375 | brk(0xa47f000) = 0xa47f000 376 | brk(0) = 0xa47f000 377 | brk(0xa4b1000) = 0xa4b1000 378 | brk(0) = 0xa4b1000 379 | brk(0xa4e3000) = 0xa4e3000 380 | brk(0) = 0xa4e3000 381 | brk(0xa515000) = 0xa515000 382 | brk(0) = 0xa515000 383 | brk(0xa547000) = 0xa547000 384 | brk(0) = 0xa547000 385 | brk(0xa579000) = 0xa579000 386 | brk(0) = 0xa579000 387 | brk(0xa5ab000) = 0xa5ab000 388 | brk(0) = 0xa5ab000 389 | brk(0xa5dd000) = 0xa5dd000 390 | brk(0) = 0xa5dd000 391 | brk(0xa60f000) = 0xa60f000 392 | brk(0) = 0xa60f000 393 | brk(0xa641000) = 0xa641000 394 | brk(0) = 0xa641000 395 | brk(0xa673000) = 0xa673000 396 | brk(0) = 0xa673000 397 | brk(0xa6a5000) = 0xa6a5000 398 | brk(0) = 0xa6a5000 399 | brk(0xa6d7000) = 0xa6d7000 400 | brk(0) = 0xa6d7000 401 | brk(0xa709000) = 0xa709000 402 | brk(0) = 0xa709000 403 | brk(0xa73b000) = 0xa73b000 404 | brk(0) = 0xa73b000 405 | brk(0xa76d000) = 0xa76d000 406 | brk(0) = 0xa76d000 407 | brk(0xa79f000) = 0xa79f000 408 | brk(0) = 0xa79f000 409 | brk(0xa7d1000) = 0xa7d1000 410 | brk(0) = 0xa7d1000 411 | brk(0xa803000) = 0xa803000 412 | brk(0) = 0xa803000 413 | brk(0xa835000) = 0xa835000 414 | brk(0) = 0xa835000 415 | brk(0xa867000) = 0xa867000 416 | brk(0) = 0xa867000 417 | brk(0xa899000) = 0xa899000 418 | brk(0) = 0xa899000 419 | brk(0xa8cb000) = 0xa8cb000 420 | brk(0) = 0xa8cb000 421 | brk(0xa8fd000) = 0xa8fd000 422 | brk(0) = 0xa8fd000 423 | brk(0xa92f000) = 0xa92f000 424 | brk(0) = 0xa92f000 425 | brk(0xa961000) = 0xa961000 426 | brk(0) = 0xa961000 427 | brk(0xa993000) = 0xa993000 428 | brk(0) = 0xa993000 429 | brk(0xa9c5000) = 0xa9c5000 430 | brk(0) = 0xa9c5000 431 | brk(0xa9f7000) = 0xa9f7000 432 | brk(0) = 0xa9f7000 433 | brk(0xaa29000) = 0xaa29000 434 | brk(0) = 0xaa29000 435 | brk(0xaa5b000) = 0xaa5b000 436 | brk(0) = 0xaa5b000 437 | brk(0xaa8d000) = 0xaa8d000 438 | brk(0) = 0xaa8d000 439 | brk(0xaabf000) = 0xaabf000 440 | brk(0) = 0xaabf000 441 | brk(0xaaf1000) = 0xaaf1000 442 | brk(0) = 0xaaf1000 443 | brk(0xab23000) = 0xab23000 444 | brk(0) = 0xab23000 445 | brk(0xab55000) = 0xab55000 446 | brk(0) = 0xab55000 447 | brk(0xab87000) = 0xab87000 448 | brk(0) = 0xab87000 449 | brk(0xabb9000) = 0xabb9000 450 | brk(0) = 0xabb9000 451 | brk(0xabeb000) = 0xabeb000 452 | brk(0) = 0xabeb000 453 | brk(0xac1d000) = 0xac1d000 454 | brk(0) = 0xac1d000 455 | brk(0xac4f000) = 0xac4f000 456 | brk(0) = 0xac4f000 457 | brk(0xac81000) = 0xac81000 458 | brk(0) = 0xac81000 459 | brk(0xacb3000) = 0xacb3000 460 | brk(0) = 0xacb3000 461 | brk(0xace5000) = 0xace5000 462 | brk(0) = 0xace5000 463 | brk(0xad17000) = 0xad17000 464 | brk(0) = 0xad17000 465 | brk(0xad49000) = 0xad49000 466 | brk(0) = 0xad49000 467 | brk(0xad7b000) = 0xad7b000 468 | brk(0) = 0xad7b000 469 | brk(0xadad000) = 0xadad000 470 | brk(0) = 0xadad000 471 | brk(0xaddf000) = 0xaddf000 472 | brk(0) = 0xaddf000 473 | brk(0xae11000) = 0xae11000 474 | brk(0) = 0xae11000 475 | brk(0xae43000) = 0xae43000 476 | brk(0) = 0xae43000 477 | brk(0xae75000) = 0xae75000 478 | brk(0) = 0xae75000 479 | brk(0xaea7000) = 0xaea7000 480 | brk(0) = 0xaea7000 481 | brk(0xaed9000) = 0xaed9000 482 | brk(0) = 0xaed9000 483 | brk(0xaf0b000) = 0xaf0b000 484 | brk(0) = 0xaf0b000 485 | brk(0xaf3d000) = 0xaf3d000 486 | brk(0) = 0xaf3d000 487 | brk(0xaf6f000) = 0xaf6f000 488 | brk(0) = 0xaf6f000 489 | brk(0xafa1000) = 0xafa1000 490 | brk(0) = 0xafa1000 491 | brk(0xafd3000) = 0xafd3000 492 | brk(0) = 0xafd3000 493 | brk(0xb005000) = 0xb005000 494 | brk(0) = 0xb005000 495 | brk(0xb037000) = 0xb037000 496 | brk(0) = 0xb037000 497 | brk(0xb069000) = 0xb069000 498 | brk(0) = 0xb069000 499 | brk(0xb09b000) = 0xb09b000 500 | brk(0) = 0xb09b000 501 | brk(0xb0cd000) = 0xb0cd000 502 | brk(0) = 0xb0cd000 503 | brk(0xb0ff000) = 0xb0ff000 504 | brk(0) = 0xb0ff000 505 | brk(0xb131000) = 0xb131000 506 | brk(0) = 0xb131000 507 | brk(0xb163000) = 0xb163000 508 | brk(0) = 0xb163000 509 | brk(0xb195000) = 0xb195000 510 | brk(0) = 0xb195000 511 | brk(0xb1c7000) = 0xb1c7000 512 | brk(0) = 0xb1c7000 513 | brk(0xb1f9000) = 0xb1f9000 514 | brk(0) = 0xb1f9000 515 | brk(0xb22b000) = 0xb22b000 516 | brk(0) = 0xb22b000 517 | brk(0xb25d000) = 0xb25d000 518 | brk(0) = 0xb25d000 519 | brk(0xb28f000) = 0xb28f000 520 | brk(0) = 0xb28f000 521 | brk(0xb2c1000) = 0xb2c1000 522 | brk(0) = 0xb2c1000 523 | brk(0xb2f3000) = 0xb2f3000 524 | brk(0) = 0xb2f3000 525 | brk(0xb325000) = 0xb325000 526 | brk(0) = 0xb325000 527 | brk(0xb357000) = 0xb357000 528 | brk(0) = 0xb357000 529 | brk(0xb389000) = 0xb389000 530 | brk(0) = 0xb389000 531 | brk(0xb3bb000) = 0xb3bb000 532 | brk(0) = 0xb3bb000 533 | brk(0xb3ed000) = 0xb3ed000 534 | brk(0) = 0xb3ed000 535 | brk(0xb41f000) = 0xb41f000 536 | brk(0) = 0xb41f000 537 | brk(0xb452000) = 0xb452000 538 | brk(0) = 0xb452000 539 | brk(0xb484000) = 0xb484000 540 | brk(0) = 0xb484000 541 | brk(0xb4b6000) = 0xb4b6000 542 | brk(0) = 0xb4b6000 543 | brk(0xb4e8000) = 0xb4e8000 544 | brk(0) = 0xb4e8000 545 | brk(0xb51a000) = 0xb51a000 546 | brk(0) = 0xb51a000 547 | brk(0xb54c000) = 0xb54c000 548 | brk(0) = 0xb54c000 549 | brk(0xb57e000) = 0xb57e000 550 | brk(0) = 0xb57e000 551 | brk(0xb5b0000) = 0xb5b0000 552 | brk(0) = 0xb5b0000 553 | brk(0xb5e2000) = 0xb5e2000 554 | brk(0) = 0xb5e2000 555 | brk(0xb614000) = 0xb614000 556 | brk(0) = 0xb614000 557 | brk(0xb646000) = 0xb646000 558 | brk(0) = 0xb646000 559 | brk(0xb678000) = 0xb678000 560 | brk(0) = 0xb678000 561 | brk(0xb6aa000) = 0xb6aa000 562 | brk(0) = 0xb6aa000 563 | brk(0xb6dc000) = 0xb6dc000 564 | brk(0) = 0xb6dc000 565 | brk(0xb70e000) = 0xb70e000 566 | brk(0) = 0xb70e000 567 | brk(0xb740000) = 0xb740000 568 | brk(0) = 0xb740000 569 | brk(0xb772000) = 0xb772000 570 | brk(0) = 0xb772000 571 | brk(0xb7a4000) = 0xb7a4000 572 | brk(0) = 0xb7a4000 573 | brk(0xb7d6000) = 0xb7d6000 574 | brk(0) = 0xb7d6000 575 | brk(0xb808000) = 0xb808000 576 | brk(0) = 0xb808000 577 | brk(0xb83a000) = 0xb83a000 578 | brk(0) = 0xb83a000 579 | brk(0xb86c000) = 0xb86c000 580 | brk(0) = 0xb86c000 581 | brk(0xb89e000) = 0xb89e000 582 | brk(0) = 0xb89e000 583 | brk(0xb8d0000) = 0xb8d0000 584 | brk(0) = 0xb8d0000 585 | brk(0xb902000) = 0xb902000 586 | brk(0) = 0xb902000 587 | brk(0xb934000) = 0xb934000 588 | brk(0) = 0xb934000 589 | brk(0xb966000) = 0xb966000 590 | brk(0) = 0xb966000 591 | brk(0xb998000) = 0xb998000 592 | brk(0) = 0xb998000 593 | brk(0xb9ca000) = 0xb9ca000 594 | brk(0) = 0xb9ca000 595 | brk(0xb9fc000) = 0xb9fc000 596 | brk(0) = 0xb9fc000 597 | brk(0xba2e000) = 0xba2e000 598 | brk(0) = 0xba2e000 599 | brk(0xba60000) = 0xba60000 600 | brk(0) = 0xba60000 601 | brk(0xba92000) = 0xba92000 602 | brk(0) = 0xba92000 603 | brk(0xbac4000) = 0xbac4000 604 | brk(0) = 0xbac4000 605 | brk(0xbaf6000) = 0xbaf6000 606 | brk(0) = 0xbaf6000 607 | brk(0xbb28000) = 0xbb28000 608 | brk(0) = 0xbb28000 609 | brk(0xbb5a000) = 0xbb5a000 610 | brk(0) = 0xbb5a000 611 | brk(0xbb8c000) = 0xbb8c000 612 | brk(0) = 0xbb8c000 613 | brk(0xbbbe000) = 0xbbbe000 614 | brk(0) = 0xbbbe000 615 | brk(0xbbf0000) = 0xbbf0000 616 | brk(0) = 0xbbf0000 617 | brk(0xbc22000) = 0xbc22000 618 | brk(0) = 0xbc22000 619 | brk(0xbc54000) = 0xbc54000 620 | brk(0) = 0xbc54000 621 | brk(0xbc86000) = 0xbc86000 622 | brk(0) = 0xbc86000 623 | brk(0xbcb8000) = 0xbcb8000 624 | brk(0) = 0xbcb8000 625 | brk(0xbcea000) = 0xbcea000 626 | brk(0) = 0xbcea000 627 | brk(0xbd1c000) = 0xbd1c000 628 | brk(0) = 0xbd1c000 629 | brk(0xbd4e000) = 0xbd4e000 630 | brk(0) = 0xbd4e000 631 | brk(0xbd80000) = 0xbd80000 632 | brk(0) = 0xbd80000 633 | brk(0xbdb2000) = 0xbdb2000 634 | brk(0) = 0xbdb2000 635 | brk(0xbde4000) = 0xbde4000 636 | brk(0) = 0xbde4000 637 | brk(0xbe16000) = 0xbe16000 638 | brk(0) = 0xbe16000 639 | brk(0xbe48000) = 0xbe48000 640 | brk(0) = 0xbe48000 641 | brk(0xbe7a000) = 0xbe7a000 642 | brk(0) = 0xbe7a000 643 | brk(0xbeac000) = 0xbeac000 644 | brk(0) = 0xbeac000 645 | brk(0xbede000) = 0xbede000 646 | brk(0) = 0xbede000 647 | brk(0xbf10000) = 0xbf10000 648 | brk(0) = 0xbf10000 649 | brk(0xbf42000) = 0xbf42000 650 | brk(0) = 0xbf42000 651 | brk(0xbf74000) = 0xbf74000 652 | brk(0) = 0xbf74000 653 | brk(0xbfa6000) = 0xbfa6000 654 | brk(0) = 0xbfa6000 655 | brk(0xbfd8000) = 0xbfd8000 656 | brk(0) = 0xbfd8000 657 | brk(0xc00a000) = 0xc00a000 658 | brk(0) = 0xc00a000 659 | brk(0xc03c000) = 0xc03c000 660 | brk(0) = 0xc03c000 661 | brk(0xc06e000) = 0xc06e000 662 | brk(0) = 0xc06e000 663 | brk(0xc0a0000) = 0xc0a0000 664 | brk(0) = 0xc0a0000 665 | brk(0xc0d2000) = 0xc0d2000 666 | brk(0) = 0xc0d2000 667 | brk(0xc104000) = 0xc104000 668 | brk(0) = 0xc104000 669 | brk(0xc136000) = 0xc136000 670 | brk(0) = 0xc136000 671 | brk(0xc168000) = 0xc168000 672 | brk(0) = 0xc168000 673 | brk(0xc19a000) = 0xc19a000 674 | brk(0) = 0xc19a000 675 | brk(0xc1cc000) = 0xc1cc000 676 | brk(0) = 0xc1cc000 677 | brk(0xc1fe000) = 0xc1fe000 678 | brk(0) = 0xc1fe000 679 | brk(0xc230000) = 0xc230000 680 | brk(0) = 0xc230000 681 | brk(0xc262000) = 0xc262000 682 | brk(0) = 0xc262000 683 | brk(0xc294000) = 0xc294000 684 | brk(0) = 0xc294000 685 | brk(0xc2c6000) = 0xc2c6000 686 | brk(0) = 0xc2c6000 687 | brk(0xc2f8000) = 0xc2f8000 688 | brk(0) = 0xc2f8000 689 | brk(0xc32a000) = 0xc32a000 690 | brk(0) = 0xc32a000 691 | brk(0xc35c000) = 0xc35c000 692 | brk(0) = 0xc35c000 693 | brk(0xc38e000) = 0xc38e000 694 | brk(0) = 0xc38e000 695 | brk(0xc3c0000) = 0xc3c0000 696 | brk(0) = 0xc3c0000 697 | brk(0xc3f2000) = 0xc3f2000 698 | brk(0) = 0xc3f2000 699 | brk(0xc424000) = 0xc424000 700 | brk(0) = 0xc424000 701 | brk(0xc456000) = 0xc456000 702 | brk(0) = 0xc456000 703 | brk(0xc488000) = 0xc488000 704 | brk(0) = 0xc488000 705 | brk(0xc4ba000) = 0xc4ba000 706 | brk(0) = 0xc4ba000 707 | brk(0xc4ec000) = 0xc4ec000 708 | brk(0) = 0xc4ec000 709 | brk(0xc51e000) = 0xc51e000 710 | brk(0) = 0xc51e000 711 | brk(0xc550000) = 0xc550000 712 | brk(0) = 0xc550000 713 | brk(0xc582000) = 0xc582000 714 | brk(0) = 0xc582000 715 | brk(0xc5b4000) = 0xc5b4000 716 | brk(0) = 0xc5b4000 717 | brk(0xc5e6000) = 0xc5e6000 718 | brk(0) = 0xc5e6000 719 | brk(0xc618000) = 0xc618000 720 | brk(0) = 0xc618000 721 | brk(0xc64a000) = 0xc64a000 722 | brk(0) = 0xc64a000 723 | brk(0xc67c000) = 0xc67c000 724 | brk(0) = 0xc67c000 725 | brk(0xc6ae000) = 0xc6ae000 726 | brk(0) = 0xc6ae000 727 | brk(0xc6e0000) = 0xc6e0000 728 | brk(0) = 0xc6e0000 729 | brk(0xc712000) = 0xc712000 730 | brk(0) = 0xc712000 731 | brk(0xc744000) = 0xc744000 732 | brk(0) = 0xc744000 733 | brk(0xc776000) = 0xc776000 734 | brk(0) = 0xc776000 735 | brk(0xc7a8000) = 0xc7a8000 736 | brk(0) = 0xc7a8000 737 | brk(0xc7da000) = 0xc7da000 738 | brk(0) = 0xc7da000 739 | brk(0xc80c000) = 0xc80c000 740 | brk(0) = 0xc80c000 741 | brk(0xc83e000) = 0xc83e000 742 | brk(0) = 0xc83e000 743 | brk(0xc870000) = 0xc870000 744 | brk(0) = 0xc870000 745 | brk(0xc8a2000) = 0xc8a2000 746 | brk(0) = 0xc8a2000 747 | brk(0xc8d4000) = 0xc8d4000 748 | brk(0) = 0xc8d4000 749 | brk(0xc906000) = 0xc906000 750 | brk(0) = 0xc906000 751 | brk(0xc938000) = 0xc938000 752 | brk(0) = 0xc938000 753 | brk(0xc96a000) = 0xc96a000 754 | brk(0) = 0xc96a000 755 | brk(0xc99c000) = 0xc99c000 756 | brk(0) = 0xc99c000 757 | brk(0xc9ce000) = 0xc9ce000 758 | brk(0) = 0xc9ce000 759 | brk(0xca00000) = 0xca00000 760 | brk(0) = 0xca00000 761 | brk(0xca32000) = 0xca32000 762 | brk(0) = 0xca32000 763 | brk(0xca64000) = 0xca64000 764 | brk(0) = 0xca64000 765 | brk(0xca96000) = 0xca96000 766 | brk(0) = 0xca96000 767 | brk(0xcac8000) = 0xcac8000 768 | brk(0) = 0xcac8000 769 | brk(0xcafa000) = 0xcafa000 770 | brk(0) = 0xcafa000 771 | brk(0xcb2c000) = 0xcb2c000 772 | brk(0) = 0xcb2c000 773 | brk(0xcb5e000) = 0xcb5e000 774 | brk(0) = 0xcb5e000 775 | brk(0xcb90000) = 0xcb90000 776 | brk(0) = 0xcb90000 777 | brk(0xcbc2000) = 0xcbc2000 778 | brk(0) = 0xcbc2000 779 | brk(0xcbf4000) = 0xcbf4000 780 | brk(0) = 0xcbf4000 781 | brk(0xcc26000) = 0xcc26000 782 | brk(0) = 0xcc26000 783 | brk(0xcc58000) = 0xcc58000 784 | brk(0) = 0xcc58000 785 | brk(0xcc8a000) = 0xcc8a000 786 | brk(0) = 0xcc8a000 787 | brk(0xccbc000) = 0xccbc000 788 | brk(0) = 0xccbc000 789 | brk(0xccee000) = 0xccee000 790 | brk(0) = 0xccee000 791 | brk(0xcd20000) = 0xcd20000 792 | brk(0) = 0xcd20000 793 | brk(0xcd52000) = 0xcd52000 794 | brk(0) = 0xcd52000 795 | brk(0xcd84000) = 0xcd84000 796 | brk(0) = 0xcd84000 797 | brk(0xcdb6000) = 0xcdb6000 798 | brk(0) = 0xcdb6000 799 | brk(0xcde8000) = 0xcde8000 800 | brk(0) = 0xcde8000 801 | brk(0xce1a000) = 0xce1a000 802 | brk(0) = 0xce1a000 803 | brk(0xce4c000) = 0xce4c000 804 | brk(0) = 0xce4c000 805 | brk(0xce7e000) = 0xce7e000 806 | brk(0) = 0xce7e000 807 | brk(0xceb0000) = 0xceb0000 808 | brk(0) = 0xceb0000 809 | brk(0xcee2000) = 0xcee2000 810 | brk(0) = 0xcee2000 811 | brk(0xcf14000) = 0xcf14000 812 | brk(0) = 0xcf14000 813 | brk(0xcf46000) = 0xcf46000 814 | brk(0) = 0xcf46000 815 | brk(0xcf78000) = 0xcf78000 816 | brk(0) = 0xcf78000 817 | brk(0xcfaa000) = 0xcfaa000 818 | brk(0) = 0xcfaa000 819 | brk(0xcfdc000) = 0xcfdc000 820 | brk(0) = 0xcfdc000 821 | brk(0xd00e000) = 0xd00e000 822 | brk(0) = 0xd00e000 823 | brk(0xd040000) = 0xd040000 824 | brk(0) = 0xd040000 825 | brk(0xd072000) = 0xd072000 826 | brk(0) = 0xd072000 827 | brk(0xd0a4000) = 0xd0a4000 828 | brk(0) = 0xd0a4000 829 | brk(0xd0d6000) = 0xd0d6000 830 | brk(0) = 0xd0d6000 831 | brk(0xd108000) = 0xd108000 832 | brk(0) = 0xd108000 833 | brk(0xd13a000) = 0xd13a000 834 | brk(0) = 0xd13a000 835 | brk(0xd16c000) = 0xd16c000 836 | brk(0) = 0xd16c000 837 | brk(0xd19e000) = 0xd19e000 838 | brk(0) = 0xd19e000 839 | brk(0xd1d0000) = 0xd1d0000 840 | brk(0) = 0xd1d0000 841 | brk(0xd202000) = 0xd202000 842 | brk(0) = 0xd202000 843 | brk(0xd234000) = 0xd234000 844 | brk(0) = 0xd234000 845 | brk(0xd266000) = 0xd266000 846 | brk(0) = 0xd266000 847 | brk(0xd298000) = 0xd298000 848 | brk(0) = 0xd298000 849 | brk(0xd2ca000) = 0xd2ca000 850 | brk(0) = 0xd2ca000 851 | brk(0xd2fc000) = 0xd2fc000 852 | brk(0) = 0xd2fc000 853 | brk(0xd32e000) = 0xd32e000 854 | brk(0) = 0xd32e000 855 | brk(0xd360000) = 0xd360000 856 | brk(0) = 0xd360000 857 | brk(0xd392000) = 0xd392000 858 | brk(0) = 0xd392000 859 | brk(0xd3c4000) = 0xd3c4000 860 | brk(0) = 0xd3c4000 861 | brk(0xd3f6000) = 0xd3f6000 862 | brk(0) = 0xd3f6000 863 | brk(0xd428000) = 0xd428000 864 | brk(0) = 0xd428000 865 | brk(0xd45a000) = 0xd45a000 866 | brk(0) = 0xd45a000 867 | brk(0xd48c000) = 0xd48c000 868 | brk(0) = 0xd48c000 869 | brk(0xd4be000) = 0xd4be000 870 | brk(0) = 0xd4be000 871 | brk(0xd4f0000) = 0xd4f0000 872 | brk(0) = 0xd4f0000 873 | brk(0xd522000) = 0xd522000 874 | brk(0) = 0xd522000 875 | brk(0xd554000) = 0xd554000 876 | brk(0) = 0xd554000 877 | brk(0xd586000) = 0xd586000 878 | brk(0) = 0xd586000 879 | brk(0xd5b8000) = 0xd5b8000 880 | brk(0) = 0xd5b8000 881 | brk(0xd5ea000) = 0xd5ea000 882 | brk(0) = 0xd5ea000 883 | brk(0xd61c000) = 0xd61c000 884 | brk(0) = 0xd61c000 885 | brk(0xd64e000) = 0xd64e000 886 | brk(0) = 0xd64e000 887 | brk(0xd680000) = 0xd680000 888 | brk(0) = 0xd680000 889 | brk(0xd6b2000) = 0xd6b2000 890 | brk(0) = 0xd6b2000 891 | brk(0xd6e4000) = 0xd6e4000 892 | brk(0) = 0xd6e4000 893 | brk(0xd716000) = 0xd716000 894 | brk(0) = 0xd716000 895 | brk(0xd748000) = 0xd748000 896 | brk(0) = 0xd748000 897 | brk(0xd77a000) = 0xd77a000 898 | brk(0) = 0xd77a000 899 | brk(0xd7ac000) = 0xd7ac000 900 | brk(0) = 0xd7ac000 901 | brk(0xd7de000) = 0xd7de000 902 | brk(0) = 0xd7de000 903 | brk(0xd810000) = 0xd810000 904 | brk(0) = 0xd810000 905 | brk(0xd842000) = 0xd842000 906 | brk(0) = 0xd842000 907 | brk(0xd874000) = 0xd874000 908 | brk(0) = 0xd874000 909 | brk(0xd8a6000) = 0xd8a6000 910 | brk(0) = 0xd8a6000 911 | brk(0xd8d8000) = 0xd8d8000 912 | brk(0) = 0xd8d8000 913 | brk(0xd90a000) = 0xd90a000 914 | brk(0) = 0xd90a000 915 | brk(0xd93c000) = 0xd93c000 916 | brk(0) = 0xd93c000 917 | brk(0xd96e000) = 0xd96e000 918 | brk(0) = 0xd96e000 919 | brk(0xd9a0000) = 0xd9a0000 920 | brk(0) = 0xd9a0000 921 | brk(0xd9d2000) = 0xd9d2000 922 | brk(0) = 0xd9d2000 923 | brk(0xda04000) = 0xda04000 924 | brk(0) = 0xda04000 925 | brk(0xda36000) = 0xda36000 926 | brk(0) = 0xda36000 927 | brk(0xda68000) = 0xda68000 928 | brk(0) = 0xda68000 929 | brk(0xda9a000) = 0xda9a000 930 | brk(0) = 0xda9a000 931 | brk(0xdacc000) = 0xdacc000 932 | brk(0) = 0xdacc000 933 | brk(0xdafe000) = 0xdafe000 934 | brk(0) = 0xdafe000 935 | brk(0xdb30000) = 0xdb30000 936 | brk(0) = 0xdb30000 937 | brk(0xdb62000) = 0xdb62000 938 | brk(0) = 0xdb62000 939 | brk(0xdb94000) = 0xdb94000 940 | brk(0) = 0xdb94000 941 | brk(0xdbc6000) = 0xdbc6000 942 | brk(0) = 0xdbc6000 943 | brk(0xdbf8000) = 0xdbf8000 944 | brk(0) = 0xdbf8000 945 | brk(0xdc2a000) = 0xdc2a000 946 | brk(0) = 0xdc2a000 947 | brk(0xdc5c000) = 0xdc5c000 948 | brk(0) = 0xdc5c000 949 | brk(0xdc8e000) = 0xdc8e000 950 | brk(0) = 0xdc8e000 951 | brk(0xdcc0000) = 0xdcc0000 952 | brk(0) = 0xdcc0000 953 | brk(0xdcf2000) = 0xdcf2000 954 | brk(0) = 0xdcf2000 955 | brk(0xdd24000) = 0xdd24000 956 | brk(0) = 0xdd24000 957 | brk(0xdd56000) = 0xdd56000 958 | brk(0) = 0xdd56000 959 | brk(0xdd88000) = 0xdd88000 960 | brk(0) = 0xdd88000 961 | brk(0xddba000) = 0xddba000 962 | brk(0) = 0xddba000 963 | brk(0xddec000) = 0xddec000 964 | brk(0) = 0xddec000 965 | brk(0xde1e000) = 0xde1e000 966 | brk(0) = 0xde1e000 967 | brk(0xde50000) = 0xde50000 968 | brk(0) = 0xde50000 969 | brk(0xde82000) = 0xde82000 970 | brk(0) = 0xde82000 971 | brk(0xdeb4000) = 0xdeb4000 972 | brk(0) = 0xdeb4000 973 | brk(0xdee6000) = 0xdee6000 974 | brk(0) = 0xdee6000 975 | brk(0xdf18000) = 0xdf18000 976 | brk(0) = 0xdf18000 977 | brk(0xdf4a000) = 0xdf4a000 978 | brk(0) = 0xdf4a000 979 | brk(0xdf7c000) = 0xdf7c000 980 | brk(0) = 0xdf7c000 981 | brk(0xdfae000) = 0xdfae000 982 | brk(0) = 0xdfae000 983 | brk(0xdfe0000) = 0xdfe0000 984 | brk(0) = 0xdfe0000 985 | brk(0xe012000) = 0xe012000 986 | brk(0) = 0xe012000 987 | brk(0xe044000) = 0xe044000 988 | brk(0) = 0xe044000 989 | brk(0xe076000) = 0xe076000 990 | brk(0) = 0xe076000 991 | brk(0xe0a8000) = 0xe0a8000 992 | brk(0) = 0xe0a8000 993 | brk(0xe0da000) = 0xe0da000 994 | brk(0) = 0xe0da000 995 | brk(0xe10c000) = 0xe10c000 996 | brk(0) = 0xe10c000 997 | brk(0xe13e000) = 0xe13e000 998 | brk(0) = 0xe13e000 999 | brk(0xe170000) = 0xe170000 1000 | brk(0) = 0xe170000 1001 | brk(0xe1a2000) = 0xe1a2000 1002 | brk(0) = 0xe1a2000 1003 | brk(0xe1d4000) = 0xe1d4000 1004 | brk(0) = 0xe1d4000 1005 | brk(0xe206000) = 0xe206000 1006 | brk(0) = 0xe206000 1007 | brk(0xe238000) = 0xe238000 1008 | brk(0) = 0xe238000 1009 | brk(0xe26a000) = 0xe26a000 1010 | brk(0) = 0xe26a000 1011 | brk(0xe29c000) = 0xe29c000 1012 | brk(0) = 0xe29c000 1013 | brk(0xe2ce000) = 0xe2ce000 1014 | brk(0) = 0xe2ce000 1015 | brk(0xe300000) = 0xe300000 1016 | brk(0) = 0xe300000 1017 | brk(0) = 0xe300000 1018 | brk(0x8156000) = 0x8156000 1019 | brk(0) = 0x8156000 1020 | +++ exited with 0 +++ 1021 | -------------------------------------------------------------------------------- /linker/big_alloc_linker.trace: -------------------------------------------------------------------------------- 1 | brk(0) = 0xbf896000 2 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb778f000 3 | mmap2(NULL, 95800, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7777000 4 | mmap2(0x4226d000, 1825436, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x4226d000 5 | mmap2(0x42425000, 12288, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b8000) = 0x42425000 6 | mmap2(0x42428000, 10908, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x42428000 7 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7776000 8 | mprotect(0x42425000, 8192, PROT_READ) = 0 9 | mprotect(0x8049000, 4096, PROT_READ) = 0 10 | mprotect(0x42269000, 4096, PROT_READ) = 0 11 | munmap(0xb7777000, 95800) = 0 12 | brk(0) = 0xbf896000 13 | brk(0xbf8b7000) = 0xbf8b7000 14 | brk(0) = 0xbf8b7000 15 | mmap2(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb778e000 16 | brk(0) = 0xbf8b7000 17 | brk(0xbf8e9000) = 0xbf8e9000 18 | brk(0) = 0xbf8e9000 19 | brk(0xbf91b000) = 0xbf91b000 20 | brk(0) = 0xbf91b000 21 | brk(0xbf94d000) = 0xbf94d000 22 | brk(0) = 0xbf94d000 23 | brk(0xbf97f000) = 0xbf97f000 24 | brk(0) = 0xbf97f000 25 | brk(0xbf9b2000) = 0xbf9b2000 26 | brk(0) = 0xbf9b2000 27 | brk(0xbf9e4000) = 0xbf9e4000 28 | brk(0) = 0xbf9e4000 29 | brk(0xbfa16000) = 0xbfa16000 30 | brk(0) = 0xbfa16000 31 | brk(0xbfa48000) = 0xbfa48000 32 | brk(0) = 0xbfa48000 33 | brk(0xbfa7a000) = 0xbfa7a000 34 | brk(0) = 0xbfa7a000 35 | brk(0xbfaac000) = 0xbfaac000 36 | brk(0) = 0xbfaac000 37 | brk(0xbfade000) = 0xbfade000 38 | brk(0) = 0xbfade000 39 | brk(0xbfb10000) = 0xbfb10000 40 | brk(0) = 0xbfb10000 41 | brk(0xbfb42000) = 0xbfb42000 42 | brk(0) = 0xbfb42000 43 | brk(0xbfb74000) = 0xbfb74000 44 | brk(0) = 0xbfb74000 45 | brk(0xbfba6000) = 0xbfba6000 46 | brk(0) = 0xbfba6000 47 | brk(0xbfbd8000) = 0xbfbd8000 48 | brk(0) = 0xbfbd8000 49 | brk(0xbfc0a000) = 0xbfc0a000 50 | brk(0) = 0xbfc0a000 51 | brk(0xbfc3c000) = 0xbfc3c000 52 | brk(0) = 0xbfc3c000 53 | brk(0xbfc6e000) = 0xbfc6e000 54 | brk(0) = 0xbfc6e000 55 | brk(0xbfca0000) = 0xbfca0000 56 | brk(0) = 0xbfca0000 57 | brk(0xbfcd2000) = 0xbfcd2000 58 | brk(0) = 0xbfcd2000 59 | brk(0xbfd04000) = 0xbfd04000 60 | brk(0) = 0xbfd04000 61 | brk(0xbfd36000) = 0xbfd36000 62 | brk(0) = 0xbfd36000 63 | brk(0xbfd68000) = 0xbfd68000 64 | brk(0) = 0xbfd68000 65 | brk(0xbfd9a000) = 0xbfd9a000 66 | brk(0) = 0xbfd9a000 67 | brk(0xbfdcc000) = 0xbfdcc000 68 | brk(0) = 0xbfdcc000 69 | brk(0xbfdfe000) = 0xbfdfe000 70 | brk(0) = 0xbfdfe000 71 | brk(0xbfe30000) = 0xbfe30000 72 | brk(0) = 0xbfe30000 73 | brk(0xbfe62000) = 0xbfe62000 74 | brk(0) = 0xbfe62000 75 | brk(0xbfe94000) = 0xbfe94000 76 | brk(0) = 0xbfe94000 77 | brk(0xbfec6000) = 0xbfec6000 78 | brk(0) = 0xbfec6000 79 | brk(0xbfef8000) = 0xbfef8000 80 | brk(0) = 0xbfef8000 81 | brk(0xbff2a000) = 0xbff2a000 82 | brk(0) = 0xbff2a000 83 | brk(0xbff5c000) = 0xbff5c000 84 | brk(0) = 0xbff5c000 85 | brk(0xbff8e000) = 0xbff8e000 86 | brk(0) = 0xbff8e000 87 | brk(0xbffc0000) = 0xbffc0000 88 | brk(0) = 0xbffc0000 89 | brk(0xbfff2000) = 0xbffc0000 90 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7676000 91 | brk(0) = 0xbffc0000 92 | brk(0xbfffa000) = 0xbffc0000 93 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7576000 94 | brk(0) = 0xbffc0000 95 | brk(0xbfffa000) = 0xbffc0000 96 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7476000 97 | brk(0) = 0xbffc0000 98 | brk(0xbfffa000) = 0xbffc0000 99 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7376000 100 | brk(0) = 0xbffc0000 101 | brk(0xbfffa000) = 0xbffc0000 102 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7276000 103 | brk(0) = 0xbffc0000 104 | brk(0xbfffa000) = 0xbffc0000 105 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7176000 106 | brk(0) = 0xbffc0000 107 | brk(0xbfffa000) = 0xbffc0000 108 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb7076000 109 | brk(0) = 0xbffc0000 110 | brk(0xbfffa000) = 0xbffc0000 111 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6f76000 112 | brk(0) = 0xbffc0000 113 | brk(0xbfffa000) = 0xbffc0000 114 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6e76000 115 | brk(0) = 0xbffc0000 116 | brk(0xbfffa000) = 0xbffc0000 117 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6d76000 118 | brk(0) = 0xbffc0000 119 | brk(0xbfffa000) = 0xbffc0000 120 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6c76000 121 | brk(0) = 0xbffc0000 122 | brk(0xbfffa000) = 0xbffc0000 123 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6b76000 124 | brk(0) = 0xbffc0000 125 | brk(0xbfffa000) = 0xbffc0000 126 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6a76000 127 | brk(0) = 0xbffc0000 128 | brk(0xbfffa000) = 0xbffc0000 129 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6976000 130 | brk(0) = 0xbffc0000 131 | brk(0xbfffa000) = 0xbffc0000 132 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6876000 133 | brk(0) = 0xbffc0000 134 | brk(0xbfffa000) = 0xbffc0000 135 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6776000 136 | brk(0) = 0xbffc0000 137 | brk(0xbfffa000) = 0xbffc0000 138 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6676000 139 | brk(0) = 0xbffc0000 140 | brk(0xbfffa000) = 0xbffc0000 141 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6576000 142 | brk(0) = 0xbffc0000 143 | brk(0xbfffa000) = 0xbffc0000 144 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6476000 145 | brk(0) = 0xbffc0000 146 | brk(0xbfffa000) = 0xbffc0000 147 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6376000 148 | brk(0) = 0xbffc0000 149 | brk(0xbfffa000) = 0xbffc0000 150 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6276000 151 | brk(0) = 0xbffc0000 152 | brk(0xbfffa000) = 0xbffc0000 153 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6176000 154 | brk(0) = 0xbffc0000 155 | brk(0xbfffa000) = 0xbffc0000 156 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb6076000 157 | brk(0) = 0xbffc0000 158 | brk(0xbfffa000) = 0xbffc0000 159 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5f76000 160 | brk(0) = 0xbffc0000 161 | brk(0xbfffa000) = 0xbffc0000 162 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5e76000 163 | brk(0) = 0xbffc0000 164 | brk(0xbfffa000) = 0xbffc0000 165 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5d76000 166 | brk(0) = 0xbffc0000 167 | brk(0xbfffa000) = 0xbffc0000 168 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5c76000 169 | brk(0) = 0xbffc0000 170 | brk(0xbfffa000) = 0xbffc0000 171 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5b76000 172 | brk(0) = 0xbffc0000 173 | brk(0xbfffa000) = 0xbffc0000 174 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5a76000 175 | brk(0) = 0xbffc0000 176 | brk(0xbfffa000) = 0xbffc0000 177 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5976000 178 | brk(0) = 0xbffc0000 179 | brk(0xbfffa000) = 0xbffc0000 180 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5876000 181 | brk(0) = 0xbffc0000 182 | brk(0xbfffa000) = 0xbffc0000 183 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5776000 184 | brk(0) = 0xbffc0000 185 | brk(0xbfffa000) = 0xbffc0000 186 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5676000 187 | brk(0) = 0xbffc0000 188 | brk(0xbfffa000) = 0xbffc0000 189 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5576000 190 | brk(0) = 0xbffc0000 191 | brk(0xbfffa000) = 0xbffc0000 192 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5476000 193 | brk(0) = 0xbffc0000 194 | brk(0xbfffa000) = 0xbffc0000 195 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5376000 196 | brk(0) = 0xbffc0000 197 | brk(0xbfffa000) = 0xbffc0000 198 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5276000 199 | brk(0) = 0xbffc0000 200 | brk(0xbfffa000) = 0xbffc0000 201 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5176000 202 | brk(0) = 0xbffc0000 203 | brk(0xbfffa000) = 0xbffc0000 204 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb5076000 205 | brk(0) = 0xbffc0000 206 | brk(0xbfffa000) = 0xbffc0000 207 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4f76000 208 | brk(0) = 0xbffc0000 209 | brk(0xbfffa000) = 0xbffc0000 210 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4e76000 211 | brk(0) = 0xbffc0000 212 | brk(0xbfffa000) = 0xbffc0000 213 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4d76000 214 | brk(0) = 0xbffc0000 215 | brk(0xbfffa000) = 0xbffc0000 216 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4c76000 217 | brk(0) = 0xbffc0000 218 | brk(0xbfffa000) = 0xbffc0000 219 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4b76000 220 | brk(0) = 0xbffc0000 221 | brk(0xbfffa000) = 0xbffc0000 222 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4a76000 223 | brk(0) = 0xbffc0000 224 | brk(0xbfffa000) = 0xbffc0000 225 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4976000 226 | brk(0) = 0xbffc0000 227 | brk(0xbfffa000) = 0xbffc0000 228 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4876000 229 | brk(0) = 0xbffc0000 230 | brk(0xbfffa000) = 0xbffc0000 231 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4776000 232 | brk(0) = 0xbffc0000 233 | brk(0xbfffa000) = 0xbffc0000 234 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4676000 235 | brk(0) = 0xbffc0000 236 | brk(0xbfffa000) = 0xbffc0000 237 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4576000 238 | brk(0) = 0xbffc0000 239 | brk(0xbfffa000) = 0xbffc0000 240 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4476000 241 | brk(0) = 0xbffc0000 242 | brk(0xbfffa000) = 0xbffc0000 243 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4376000 244 | brk(0) = 0xbffc0000 245 | brk(0xbfffa000) = 0xbffc0000 246 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4276000 247 | brk(0) = 0xbffc0000 248 | brk(0xbfffa000) = 0xbffc0000 249 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4176000 250 | brk(0) = 0xbffc0000 251 | brk(0xbfffa000) = 0xbffc0000 252 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb4076000 253 | brk(0) = 0xbffc0000 254 | brk(0xbfffa000) = 0xbffc0000 255 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3f76000 256 | brk(0) = 0xbffc0000 257 | brk(0xbfffa000) = 0xbffc0000 258 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3e76000 259 | brk(0) = 0xbffc0000 260 | brk(0xbfffa000) = 0xbffc0000 261 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3d76000 262 | brk(0) = 0xbffc0000 263 | brk(0xbfffa000) = 0xbffc0000 264 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3c76000 265 | brk(0) = 0xbffc0000 266 | brk(0xbfffa000) = 0xbffc0000 267 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3b76000 268 | brk(0) = 0xbffc0000 269 | brk(0xbfffa000) = 0xbffc0000 270 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3a76000 271 | brk(0) = 0xbffc0000 272 | brk(0xbfffa000) = 0xbffc0000 273 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3976000 274 | brk(0) = 0xbffc0000 275 | brk(0xbfffa000) = 0xbffc0000 276 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3876000 277 | brk(0) = 0xbffc0000 278 | brk(0xbfffa000) = 0xbffc0000 279 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3776000 280 | brk(0) = 0xbffc0000 281 | brk(0xbfffa000) = 0xbffc0000 282 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3676000 283 | brk(0) = 0xbffc0000 284 | brk(0xbfffa000) = 0xbffc0000 285 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3576000 286 | brk(0) = 0xbffc0000 287 | brk(0xbfffa000) = 0xbffc0000 288 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3476000 289 | brk(0) = 0xbffc0000 290 | brk(0xbfffa000) = 0xbffc0000 291 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3376000 292 | brk(0) = 0xbffc0000 293 | brk(0xbfffa000) = 0xbffc0000 294 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3276000 295 | brk(0) = 0xbffc0000 296 | brk(0xbfffa000) = 0xbffc0000 297 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3176000 298 | brk(0) = 0xbffc0000 299 | brk(0xbfffa000) = 0xbffc0000 300 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb3076000 301 | brk(0) = 0xbffc0000 302 | brk(0xbfffa000) = 0xbffc0000 303 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2f76000 304 | brk(0) = 0xbffc0000 305 | brk(0xbfffa000) = 0xbffc0000 306 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2e76000 307 | brk(0) = 0xbffc0000 308 | brk(0xbfffa000) = 0xbffc0000 309 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2d76000 310 | brk(0) = 0xbffc0000 311 | brk(0xbfffa000) = 0xbffc0000 312 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2c76000 313 | brk(0) = 0xbffc0000 314 | brk(0xbfffa000) = 0xbffc0000 315 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2b76000 316 | brk(0) = 0xbffc0000 317 | brk(0xbfffa000) = 0xbffc0000 318 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2a76000 319 | brk(0) = 0xbffc0000 320 | brk(0xbfffa000) = 0xbffc0000 321 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2976000 322 | brk(0) = 0xbffc0000 323 | brk(0xbfffa000) = 0xbffc0000 324 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2876000 325 | brk(0) = 0xbffc0000 326 | brk(0xbfffa000) = 0xbffc0000 327 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2776000 328 | brk(0) = 0xbffc0000 329 | brk(0xbfffa000) = 0xbffc0000 330 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2676000 331 | brk(0) = 0xbffc0000 332 | brk(0xbfffa000) = 0xbffc0000 333 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2576000 334 | brk(0) = 0xbffc0000 335 | brk(0xbfffa000) = 0xbffc0000 336 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2476000 337 | brk(0) = 0xbffc0000 338 | brk(0xbfffa000) = 0xbffc0000 339 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2376000 340 | brk(0) = 0xbffc0000 341 | brk(0xbfffa000) = 0xbffc0000 342 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2276000 343 | brk(0) = 0xbffc0000 344 | brk(0xbfffa000) = 0xbffc0000 345 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2176000 346 | brk(0) = 0xbffc0000 347 | brk(0xbfffa000) = 0xbffc0000 348 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb2076000 349 | brk(0) = 0xbffc0000 350 | brk(0xbfffa000) = 0xbffc0000 351 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1f76000 352 | brk(0) = 0xbffc0000 353 | brk(0xbfffa000) = 0xbffc0000 354 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1e76000 355 | brk(0) = 0xbffc0000 356 | brk(0xbfffa000) = 0xbffc0000 357 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1d76000 358 | brk(0) = 0xbffc0000 359 | brk(0xbfffa000) = 0xbffc0000 360 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1c76000 361 | brk(0) = 0xbffc0000 362 | brk(0xbfffa000) = 0xbffc0000 363 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1b76000 364 | brk(0) = 0xbffc0000 365 | brk(0xbfffa000) = 0xbffc0000 366 | mmap2(NULL, 1048576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0xb1a76000 367 | brk(0) = 0xbffc0000 368 | brk(0) = 0xbffc0000 369 | brk(0) = 0xbffc0000 370 | brk(0) = 0xbffc0000 371 | brk(0) = 0xbffc0000 372 | brk(0) = 0xbffc0000 373 | brk(0) = 0xbffc0000 374 | brk(0) = 0xbffc0000 375 | brk(0) = 0xbffc0000 376 | brk(0) = 0xbffc0000 377 | brk(0) = 0xbffc0000 378 | brk(0) = 0xbffc0000 379 | brk(0) = 0xbffc0000 380 | brk(0) = 0xbffc0000 381 | brk(0) = 0xbffc0000 382 | brk(0) = 0xbffc0000 383 | brk(0) = 0xbffc0000 384 | brk(0) = 0xbffc0000 385 | brk(0) = 0xbffc0000 386 | brk(0) = 0xbffc0000 387 | brk(0) = 0xbffc0000 388 | brk(0) = 0xbffc0000 389 | brk(0) = 0xbffc0000 390 | brk(0) = 0xbffc0000 391 | brk(0) = 0xbffc0000 392 | brk(0) = 0xbffc0000 393 | brk(0) = 0xbffc0000 394 | brk(0) = 0xbffc0000 395 | brk(0) = 0xbffc0000 396 | brk(0) = 0xbffc0000 397 | brk(0) = 0xbffc0000 398 | brk(0) = 0xbffc0000 399 | brk(0) = 0xbffc0000 400 | brk(0) = 0xbffc0000 401 | brk(0) = 0xbffc0000 402 | brk(0) = 0xbffc0000 403 | brk(0) = 0xbffc0000 404 | brk(0) = 0xbffc0000 405 | brk(0) = 0xbffc0000 406 | brk(0) = 0xbffc0000 407 | brk(0) = 0xbffc0000 408 | brk(0) = 0xbffc0000 409 | brk(0) = 0xbffc0000 410 | brk(0) = 0xbffc0000 411 | brk(0) = 0xbffc0000 412 | brk(0) = 0xbffc0000 413 | brk(0) = 0xbffc0000 414 | brk(0) = 0xbffc0000 415 | brk(0) = 0xbffc0000 416 | brk(0) = 0xbffc0000 417 | brk(0) = 0xbffc0000 418 | brk(0) = 0xbffc0000 419 | brk(0) = 0xbffc0000 420 | brk(0) = 0xbffc0000 421 | brk(0) = 0xbffc0000 422 | brk(0) = 0xbffc0000 423 | brk(0) = 0xbffc0000 424 | brk(0) = 0xbffc0000 425 | brk(0) = 0xbffc0000 426 | brk(0) = 0xbffc0000 427 | brk(0) = 0xbffc0000 428 | brk(0) = 0xbffc0000 429 | brk(0) = 0xbffc0000 430 | brk(0) = 0xbffc0000 431 | brk(0) = 0xbffc0000 432 | brk(0) = 0xbffc0000 433 | brk(0) = 0xbffc0000 434 | brk(0) = 0xbffc0000 435 | brk(0) = 0xbffc0000 436 | brk(0) = 0xbffc0000 437 | brk(0) = 0xbffc0000 438 | brk(0) = 0xbffc0000 439 | brk(0) = 0xbffc0000 440 | brk(0) = 0xbffc0000 441 | brk(0) = 0xbffc0000 442 | brk(0) = 0xbffc0000 443 | brk(0) = 0xbffc0000 444 | brk(0) = 0xbffc0000 445 | brk(0) = 0xbffc0000 446 | brk(0) = 0xbffc0000 447 | brk(0) = 0xbffc0000 448 | brk(0) = 0xbffc0000 449 | brk(0) = 0xbffc0000 450 | brk(0) = 0xbffc0000 451 | brk(0) = 0xbffc0000 452 | brk(0) = 0xbffc0000 453 | brk(0) = 0xbffc0000 454 | brk(0) = 0xbffc0000 455 | brk(0) = 0xbffc0000 456 | brk(0) = 0xbffc0000 457 | brk(0) = 0xbffc0000 458 | brk(0) = 0xbffc0000 459 | brk(0) = 0xbffc0000 460 | brk(0) = 0xbffc0000 461 | brk(0) = 0xbffc0000 462 | brk(0) = 0xbffc0000 463 | brk(0) = 0xbffc0000 464 | brk(0) = 0xbffc0000 465 | brk(0) = 0xbffc0000 466 | brk(0) = 0xbffc0000 467 | brk(0) = 0xbffc0000 468 | brk(0) = 0xbffc0000 469 | brk(0) = 0xbffc0000 470 | brk(0) = 0xbffc0000 471 | brk(0) = 0xbffc0000 472 | brk(0) = 0xbffc0000 473 | brk(0) = 0xbffc0000 474 | brk(0) = 0xbffc0000 475 | brk(0) = 0xbffc0000 476 | brk(0) = 0xbffc0000 477 | brk(0) = 0xbffc0000 478 | brk(0) = 0xbffc0000 479 | brk(0) = 0xbffc0000 480 | brk(0) = 0xbffc0000 481 | brk(0) = 0xbffc0000 482 | brk(0) = 0xbffc0000 483 | brk(0) = 0xbffc0000 484 | brk(0) = 0xbffc0000 485 | brk(0) = 0xbffc0000 486 | brk(0) = 0xbffc0000 487 | brk(0) = 0xbffc0000 488 | brk(0) = 0xbffc0000 489 | brk(0) = 0xbffc0000 490 | brk(0) = 0xbffc0000 491 | brk(0) = 0xbffc0000 492 | brk(0) = 0xbffc0000 493 | brk(0) = 0xbffc0000 494 | brk(0) = 0xbffc0000 495 | brk(0) = 0xbffc0000 496 | brk(0) = 0xbffc0000 497 | brk(0) = 0xbffc0000 498 | brk(0) = 0xbffc0000 499 | brk(0) = 0xbffc0000 500 | brk(0) = 0xbffc0000 501 | brk(0) = 0xbffc0000 502 | brk(0) = 0xbffc0000 503 | brk(0) = 0xbffc0000 504 | brk(0) = 0xbffc0000 505 | brk(0) = 0xbffc0000 506 | brk(0) = 0xbffc0000 507 | brk(0) = 0xbffc0000 508 | brk(0) = 0xbffc0000 509 | brk(0) = 0xbffc0000 510 | brk(0) = 0xbffc0000 511 | brk(0) = 0xbffc0000 512 | brk(0) = 0xbffc0000 513 | brk(0) = 0xbffc0000 514 | brk(0) = 0xbffc0000 515 | brk(0) = 0xbffc0000 516 | brk(0) = 0xbffc0000 517 | brk(0) = 0xbffc0000 518 | brk(0) = 0xbffc0000 519 | brk(0) = 0xbffc0000 520 | brk(0) = 0xbffc0000 521 | brk(0) = 0xbffc0000 522 | brk(0) = 0xbffc0000 523 | brk(0) = 0xbffc0000 524 | brk(0) = 0xbffc0000 525 | brk(0) = 0xbffc0000 526 | brk(0) = 0xbffc0000 527 | brk(0) = 0xbffc0000 528 | brk(0) = 0xbffc0000 529 | brk(0) = 0xbffc0000 530 | brk(0) = 0xbffc0000 531 | brk(0) = 0xbffc0000 532 | brk(0) = 0xbffc0000 533 | brk(0) = 0xbffc0000 534 | brk(0) = 0xbffc0000 535 | brk(0) = 0xbffc0000 536 | brk(0) = 0xbffc0000 537 | brk(0) = 0xbffc0000 538 | brk(0) = 0xbffc0000 539 | brk(0) = 0xbffc0000 540 | brk(0) = 0xbffc0000 541 | brk(0) = 0xbffc0000 542 | brk(0) = 0xbffc0000 543 | brk(0) = 0xbffc0000 544 | brk(0) = 0xbffc0000 545 | brk(0) = 0xbffc0000 546 | brk(0) = 0xbffc0000 547 | brk(0) = 0xbffc0000 548 | brk(0) = 0xbffc0000 549 | brk(0) = 0xbffc0000 550 | brk(0) = 0xbffc0000 551 | brk(0) = 0xbffc0000 552 | brk(0) = 0xbffc0000 553 | brk(0) = 0xbffc0000 554 | brk(0) = 0xbffc0000 555 | brk(0) = 0xbffc0000 556 | brk(0) = 0xbffc0000 557 | brk(0) = 0xbffc0000 558 | brk(0) = 0xbffc0000 559 | brk(0) = 0xbffc0000 560 | brk(0) = 0xbffc0000 561 | brk(0) = 0xbffc0000 562 | brk(0) = 0xbffc0000 563 | brk(0) = 0xbffc0000 564 | brk(0) = 0xbffc0000 565 | brk(0) = 0xbffc0000 566 | brk(0) = 0xbffc0000 567 | brk(0) = 0xbffc0000 568 | brk(0) = 0xbffc0000 569 | brk(0) = 0xbffc0000 570 | brk(0) = 0xbffc0000 571 | brk(0) = 0xbffc0000 572 | brk(0) = 0xbffc0000 573 | brk(0) = 0xbffc0000 574 | brk(0) = 0xbffc0000 575 | brk(0) = 0xbffc0000 576 | brk(0) = 0xbffc0000 577 | brk(0) = 0xbffc0000 578 | brk(0) = 0xbffc0000 579 | brk(0) = 0xbffc0000 580 | brk(0) = 0xbffc0000 581 | brk(0) = 0xbffc0000 582 | brk(0) = 0xbffc0000 583 | brk(0) = 0xbffc0000 584 | brk(0) = 0xbffc0000 585 | brk(0) = 0xbffc0000 586 | brk(0) = 0xbffc0000 587 | brk(0) = 0xbffc0000 588 | brk(0) = 0xbffc0000 589 | brk(0) = 0xbffc0000 590 | brk(0) = 0xbffc0000 591 | brk(0) = 0xbffc0000 592 | brk(0) = 0xbffc0000 593 | brk(0) = 0xbffc0000 594 | brk(0) = 0xbffc0000 595 | brk(0) = 0xbffc0000 596 | brk(0) = 0xbffc0000 597 | brk(0) = 0xbffc0000 598 | brk(0) = 0xbffc0000 599 | brk(0) = 0xbffc0000 600 | brk(0) = 0xbffc0000 601 | brk(0) = 0xbffc0000 602 | brk(0) = 0xbffc0000 603 | brk(0) = 0xbffc0000 604 | brk(0) = 0xbffc0000 605 | brk(0) = 0xbffc0000 606 | brk(0) = 0xbffc0000 607 | brk(0) = 0xbffc0000 608 | brk(0) = 0xbffc0000 609 | brk(0) = 0xbffc0000 610 | brk(0) = 0xbffc0000 611 | brk(0) = 0xbffc0000 612 | brk(0) = 0xbffc0000 613 | brk(0) = 0xbffc0000 614 | brk(0) = 0xbffc0000 615 | brk(0) = 0xbffc0000 616 | brk(0) = 0xbffc0000 617 | brk(0) = 0xbffc0000 618 | brk(0) = 0xbffc0000 619 | brk(0) = 0xbffc0000 620 | brk(0) = 0xbffc0000 621 | brk(0) = 0xbffc0000 622 | brk(0) = 0xbffc0000 623 | brk(0) = 0xbffc0000 624 | brk(0) = 0xbffc0000 625 | brk(0) = 0xbffc0000 626 | brk(0) = 0xbffc0000 627 | brk(0) = 0xbffc0000 628 | brk(0) = 0xbffc0000 629 | brk(0) = 0xbffc0000 630 | brk(0) = 0xbffc0000 631 | brk(0) = 0xbffc0000 632 | brk(0) = 0xbffc0000 633 | brk(0) = 0xbffc0000 634 | brk(0) = 0xbffc0000 635 | brk(0) = 0xbffc0000 636 | brk(0) = 0xbffc0000 637 | brk(0) = 0xbffc0000 638 | brk(0) = 0xbffc0000 639 | brk(0) = 0xbffc0000 640 | brk(0) = 0xbffc0000 641 | brk(0) = 0xbffc0000 642 | brk(0) = 0xbffc0000 643 | brk(0) = 0xbffc0000 644 | brk(0) = 0xbffc0000 645 | brk(0) = 0xbffc0000 646 | brk(0) = 0xbffc0000 647 | brk(0) = 0xbffc0000 648 | brk(0) = 0xbffc0000 649 | brk(0) = 0xbffc0000 650 | brk(0) = 0xbffc0000 651 | brk(0) = 0xbffc0000 652 | brk(0) = 0xbffc0000 653 | brk(0) = 0xbffc0000 654 | brk(0) = 0xbffc0000 655 | brk(0) = 0xbffc0000 656 | brk(0) = 0xbffc0000 657 | brk(0) = 0xbffc0000 658 | brk(0) = 0xbffc0000 659 | brk(0) = 0xbffc0000 660 | brk(0) = 0xbffc0000 661 | brk(0) = 0xbffc0000 662 | brk(0) = 0xbffc0000 663 | brk(0) = 0xbffc0000 664 | brk(0) = 0xbffc0000 665 | brk(0) = 0xbffc0000 666 | brk(0) = 0xbffc0000 667 | brk(0) = 0xbffc0000 668 | brk(0) = 0xbffc0000 669 | brk(0) = 0xbffc0000 670 | brk(0) = 0xbffc0000 671 | brk(0) = 0xbffc0000 672 | brk(0) = 0xbffc0000 673 | brk(0) = 0xbffc0000 674 | brk(0) = 0xbffc0000 675 | brk(0) = 0xbffc0000 676 | brk(0) = 0xbffc0000 677 | brk(0) = 0xbffc0000 678 | brk(0) = 0xbffc0000 679 | brk(0) = 0xbffc0000 680 | brk(0) = 0xbffc0000 681 | brk(0) = 0xbffc0000 682 | brk(0) = 0xbffc0000 683 | brk(0) = 0xbffc0000 684 | brk(0) = 0xbffc0000 685 | brk(0) = 0xbffc0000 686 | brk(0) = 0xbffc0000 687 | brk(0) = 0xbffc0000 688 | brk(0) = 0xbffc0000 689 | brk(0) = 0xbffc0000 690 | brk(0) = 0xbffc0000 691 | brk(0) = 0xbffc0000 692 | brk(0) = 0xbffc0000 693 | brk(0) = 0xbffc0000 694 | brk(0) = 0xbffc0000 695 | brk(0) = 0xbffc0000 696 | brk(0) = 0xbffc0000 697 | brk(0) = 0xbffc0000 698 | brk(0) = 0xbffc0000 699 | brk(0) = 0xbffc0000 700 | brk(0) = 0xbffc0000 701 | brk(0) = 0xbffc0000 702 | brk(0) = 0xbffc0000 703 | brk(0) = 0xbffc0000 704 | brk(0) = 0xbffc0000 705 | brk(0) = 0xbffc0000 706 | brk(0) = 0xbffc0000 707 | brk(0) = 0xbffc0000 708 | brk(0) = 0xbffc0000 709 | brk(0) = 0xbffc0000 710 | brk(0) = 0xbffc0000 711 | brk(0) = 0xbffc0000 712 | brk(0) = 0xbffc0000 713 | brk(0) = 0xbffc0000 714 | brk(0) = 0xbffc0000 715 | brk(0) = 0xbffc0000 716 | brk(0) = 0xbffc0000 717 | brk(0) = 0xbffc0000 718 | brk(0) = 0xbffc0000 719 | brk(0) = 0xbffc0000 720 | brk(0) = 0xbffc0000 721 | brk(0) = 0xbffc0000 722 | brk(0) = 0xbffc0000 723 | brk(0) = 0xbffc0000 724 | brk(0) = 0xbffc0000 725 | brk(0) = 0xbffc0000 726 | brk(0) = 0xbffc0000 727 | brk(0) = 0xbffc0000 728 | brk(0) = 0xbffc0000 729 | brk(0) = 0xbffc0000 730 | brk(0) = 0xbffc0000 731 | brk(0) = 0xbffc0000 732 | brk(0) = 0xbffc0000 733 | brk(0) = 0xbffc0000 734 | brk(0) = 0xbffc0000 735 | brk(0) = 0xbffc0000 736 | brk(0) = 0xbffc0000 737 | brk(0) = 0xbffc0000 738 | brk(0) = 0xbffc0000 739 | brk(0) = 0xbffc0000 740 | brk(0) = 0xbffc0000 741 | brk(0) = 0xbffc0000 742 | brk(0) = 0xbffc0000 743 | brk(0) = 0xbffc0000 744 | brk(0) = 0xbffc0000 745 | brk(0) = 0xbffc0000 746 | brk(0) = 0xbffc0000 747 | brk(0) = 0xbffc0000 748 | brk(0) = 0xbffc0000 749 | brk(0) = 0xbffc0000 750 | brk(0) = 0xbffc0000 751 | brk(0) = 0xbffc0000 752 | brk(0) = 0xbffc0000 753 | brk(0) = 0xbffc0000 754 | brk(0) = 0xbffc0000 755 | brk(0) = 0xbffc0000 756 | brk(0) = 0xbffc0000 757 | brk(0) = 0xbffc0000 758 | brk(0) = 0xbffc0000 759 | brk(0) = 0xbffc0000 760 | brk(0) = 0xbffc0000 761 | brk(0) = 0xbffc0000 762 | brk(0) = 0xbffc0000 763 | brk(0) = 0xbffc0000 764 | brk(0) = 0xbffc0000 765 | brk(0) = 0xbffc0000 766 | brk(0) = 0xbffc0000 767 | brk(0) = 0xbffc0000 768 | brk(0) = 0xbffc0000 769 | brk(0) = 0xbffc0000 770 | brk(0) = 0xbffc0000 771 | brk(0) = 0xbffc0000 772 | brk(0) = 0xbffc0000 773 | brk(0) = 0xbffc0000 774 | brk(0) = 0xbffc0000 775 | brk(0) = 0xbffc0000 776 | brk(0) = 0xbffc0000 777 | brk(0) = 0xbffc0000 778 | brk(0) = 0xbffc0000 779 | brk(0) = 0xbffc0000 780 | brk(0) = 0xbffc0000 781 | brk(0) = 0xbffc0000 782 | brk(0) = 0xbffc0000 783 | brk(0) = 0xbffc0000 784 | brk(0) = 0xbffc0000 785 | brk(0) = 0xbffc0000 786 | brk(0) = 0xbffc0000 787 | brk(0) = 0xbffc0000 788 | brk(0) = 0xbffc0000 789 | brk(0) = 0xbffc0000 790 | brk(0) = 0xbffc0000 791 | brk(0) = 0xbffc0000 792 | brk(0) = 0xbffc0000 793 | brk(0) = 0xbffc0000 794 | brk(0) = 0xbffc0000 795 | brk(0) = 0xbffc0000 796 | brk(0) = 0xbffc0000 797 | brk(0) = 0xbffc0000 798 | brk(0) = 0xbffc0000 799 | brk(0) = 0xbffc0000 800 | brk(0) = 0xbffc0000 801 | brk(0) = 0xbffc0000 802 | brk(0) = 0xbffc0000 803 | brk(0) = 0xbffc0000 804 | brk(0) = 0xbffc0000 805 | brk(0) = 0xbffc0000 806 | brk(0) = 0xbffc0000 807 | brk(0) = 0xbffc0000 808 | brk(0) = 0xbffc0000 809 | brk(0) = 0xbffc0000 810 | brk(0) = 0xbffc0000 811 | brk(0) = 0xbffc0000 812 | brk(0) = 0xbffc0000 813 | brk(0) = 0xbffc0000 814 | brk(0) = 0xbffc0000 815 | brk(0) = 0xbffc0000 816 | brk(0) = 0xbffc0000 817 | brk(0) = 0xbffc0000 818 | brk(0) = 0xbffc0000 819 | brk(0) = 0xbffc0000 820 | brk(0) = 0xbffc0000 821 | brk(0) = 0xbffc0000 822 | brk(0) = 0xbffc0000 823 | brk(0) = 0xbffc0000 824 | brk(0) = 0xbffc0000 825 | brk(0) = 0xbffc0000 826 | brk(0) = 0xbffc0000 827 | brk(0) = 0xbffc0000 828 | brk(0) = 0xbffc0000 829 | brk(0) = 0xbffc0000 830 | brk(0) = 0xbffc0000 831 | brk(0) = 0xbffc0000 832 | brk(0) = 0xbffc0000 833 | brk(0) = 0xbffc0000 834 | brk(0) = 0xbffc0000 835 | brk(0) = 0xbffc0000 836 | brk(0) = 0xbffc0000 837 | brk(0) = 0xbffc0000 838 | brk(0) = 0xbffc0000 839 | brk(0) = 0xbffc0000 840 | brk(0) = 0xbffc0000 841 | brk(0) = 0xbffc0000 842 | brk(0) = 0xbffc0000 843 | brk(0) = 0xbffc0000 844 | brk(0) = 0xbffc0000 845 | brk(0) = 0xbffc0000 846 | brk(0) = 0xbffc0000 847 | brk(0) = 0xbffc0000 848 | brk(0) = 0xbffc0000 849 | brk(0) = 0xbffc0000 850 | brk(0) = 0xbffc0000 851 | brk(0) = 0xbffc0000 852 | brk(0) = 0xbffc0000 853 | brk(0) = 0xbffc0000 854 | brk(0) = 0xbffc0000 855 | brk(0) = 0xbffc0000 856 | brk(0) = 0xbffc0000 857 | brk(0) = 0xbffc0000 858 | brk(0) = 0xbffc0000 859 | brk(0) = 0xbffc0000 860 | brk(0) = 0xbffc0000 861 | brk(0) = 0xbffc0000 862 | brk(0) = 0xbffc0000 863 | brk(0) = 0xbffc0000 864 | brk(0) = 0xbffc0000 865 | brk(0) = 0xbffc0000 866 | brk(0) = 0xbffc0000 867 | brk(0) = 0xbffc0000 868 | brk(0) = 0xbffc0000 869 | brk(0) = 0xbffc0000 870 | brk(0) = 0xbffc0000 871 | brk(0) = 0xbffc0000 872 | brk(0) = 0xbffc0000 873 | brk(0) = 0xbffc0000 874 | brk(0) = 0xbffc0000 875 | brk(0) = 0xbffc0000 876 | brk(0) = 0xbffc0000 877 | brk(0) = 0xbffc0000 878 | brk(0) = 0xbffc0000 879 | brk(0) = 0xbffc0000 880 | brk(0) = 0xbffc0000 881 | brk(0) = 0xbffc0000 882 | brk(0) = 0xbffc0000 883 | brk(0) = 0xbffc0000 884 | brk(0) = 0xbffc0000 885 | brk(0) = 0xbffc0000 886 | brk(0) = 0xbffc0000 887 | brk(0) = 0xbffc0000 888 | brk(0) = 0xbffc0000 889 | brk(0) = 0xbffc0000 890 | brk(0) = 0xbffc0000 891 | brk(0) = 0xbffc0000 892 | brk(0) = 0xbffc0000 893 | brk(0) = 0xbffc0000 894 | brk(0) = 0xbffc0000 895 | brk(0) = 0xbffc0000 896 | brk(0) = 0xbffc0000 897 | brk(0) = 0xbffc0000 898 | brk(0) = 0xbffc0000 899 | brk(0) = 0xbffc0000 900 | brk(0) = 0xbffc0000 901 | brk(0) = 0xbffc0000 902 | brk(0) = 0xbffc0000 903 | brk(0) = 0xbffc0000 904 | brk(0) = 0xbffc0000 905 | brk(0) = 0xbffc0000 906 | brk(0) = 0xbffc0000 907 | brk(0) = 0xbffc0000 908 | brk(0) = 0xbffc0000 909 | brk(0) = 0xbffc0000 910 | brk(0) = 0xbffc0000 911 | brk(0) = 0xbffc0000 912 | brk(0) = 0xbffc0000 913 | brk(0) = 0xbffc0000 914 | brk(0) = 0xbffc0000 915 | brk(0) = 0xbffc0000 916 | brk(0) = 0xbffc0000 917 | brk(0) = 0xbffc0000 918 | brk(0) = 0xbffc0000 919 | brk(0) = 0xbffc0000 920 | brk(0) = 0xbffc0000 921 | brk(0) = 0xbffc0000 922 | brk(0) = 0xbffc0000 923 | brk(0) = 0xbffc0000 924 | brk(0) = 0xbffc0000 925 | brk(0) = 0xbffc0000 926 | brk(0) = 0xbffc0000 927 | brk(0) = 0xbffc0000 928 | brk(0) = 0xbffc0000 929 | brk(0) = 0xbffc0000 930 | brk(0) = 0xbffc0000 931 | brk(0) = 0xbffc0000 932 | brk(0) = 0xbffc0000 933 | brk(0) = 0xbffc0000 934 | brk(0) = 0xbffc0000 935 | brk(0) = 0xbffc0000 936 | brk(0) = 0xbffc0000 937 | brk(0) = 0xbffc0000 938 | brk(0) = 0xbffc0000 939 | brk(0) = 0xbffc0000 940 | brk(0) = 0xbffc0000 941 | brk(0) = 0xbffc0000 942 | brk(0) = 0xbffc0000 943 | brk(0) = 0xbffc0000 944 | brk(0) = 0xbffc0000 945 | brk(0) = 0xbffc0000 946 | brk(0) = 0xbffc0000 947 | brk(0) = 0xbffc0000 948 | brk(0) = 0xbffc0000 949 | brk(0) = 0xbffc0000 950 | brk(0) = 0xbffc0000 951 | brk(0) = 0xbffc0000 952 | brk(0) = 0xbffc0000 953 | brk(0) = 0xbffc0000 954 | brk(0) = 0xbffc0000 955 | brk(0) = 0xbffc0000 956 | brk(0) = 0xbffc0000 957 | brk(0) = 0xbffc0000 958 | brk(0) = 0xbffc0000 959 | brk(0) = 0xbffc0000 960 | brk(0) = 0xbffc0000 961 | brk(0) = 0xbffc0000 962 | brk(0) = 0xbffc0000 963 | brk(0) = 0xbffc0000 964 | brk(0) = 0xbffc0000 965 | brk(0) = 0xbffc0000 966 | brk(0) = 0xbffc0000 967 | brk(0) = 0xbffc0000 968 | brk(0) = 0xbffc0000 969 | brk(0) = 0xbffc0000 970 | brk(0) = 0xbffc0000 971 | brk(0) = 0xbffc0000 972 | brk(0) = 0xbffc0000 973 | brk(0) = 0xbffc0000 974 | brk(0) = 0xbffc0000 975 | brk(0) = 0xbffc0000 976 | brk(0) = 0xbffc0000 977 | brk(0) = 0xbffc0000 978 | brk(0) = 0xbffc0000 979 | brk(0) = 0xbffc0000 980 | brk(0) = 0xbffc0000 981 | brk(0) = 0xbffc0000 982 | brk(0) = 0xbffc0000 983 | brk(0) = 0xbffc0000 984 | brk(0) = 0xbffc0000 985 | brk(0) = 0xbffc0000 986 | brk(0) = 0xbffc0000 987 | brk(0) = 0xbffc0000 988 | brk(0) = 0xbffc0000 989 | brk(0) = 0xbffc0000 990 | brk(0) = 0xbffc0000 991 | brk(0) = 0xbffc0000 992 | brk(0) = 0xbffc0000 993 | brk(0) = 0xbffc0000 994 | brk(0) = 0xbffc0000 995 | brk(0) = 0xbffc0000 996 | brk(0) = 0xbffc0000 997 | brk(0) = 0xbffc0000 998 | brk(0) = 0xbffc0000 999 | brk(0) = 0xbffc0000 1000 | brk(0) = 0xbffc0000 1001 | brk(0) = 0xbffc0000 1002 | brk(0) = 0xbffc0000 1003 | brk(0) = 0xbffc0000 1004 | brk(0) = 0xbffc0000 1005 | brk(0) = 0xbffc0000 1006 | brk(0) = 0xbffc0000 1007 | brk(0) = 0xbffc0000 1008 | brk(0) = 0xbffc0000 1009 | brk(0) = 0xbffc0000 1010 | brk(0) = 0xbffc0000 1011 | brk(0) = 0xbffc0000 1012 | brk(0) = 0xbffc0000 1013 | brk(0) = 0xbffc0000 1014 | brk(0) = 0xbffc0000 1015 | brk(0) = 0xbffc0000 1016 | brk(0) = 0xbffc0000 1017 | brk(0) = 0xbffc0000 1018 | brk(0) = 0xbffc0000 1019 | brk(0) = 0xbffc0000 1020 | brk(0) = 0xbffc0000 1021 | brk(0) = 0xbffc0000 1022 | brk(0) = 0xbffc0000 1023 | brk(0) = 0xbffc0000 1024 | brk(0) = 0xbffc0000 1025 | brk(0) = 0xbffc0000 1026 | brk(0) = 0xbffc0000 1027 | brk(0) = 0xbffc0000 1028 | brk(0) = 0xbffc0000 1029 | brk(0) = 0xbffc0000 1030 | brk(0) = 0xbffc0000 1031 | brk(0) = 0xbffc0000 1032 | brk(0) = 0xbffc0000 1033 | brk(0) = 0xbffc0000 1034 | brk(0) = 0xbffc0000 1035 | brk(0) = 0xbffc0000 1036 | brk(0) = 0xbffc0000 1037 | brk(0) = 0xbffc0000 1038 | brk(0) = 0xbffc0000 1039 | brk(0) = 0xbffc0000 1040 | brk(0) = 0xbffc0000 1041 | brk(0) = 0xbffc0000 1042 | brk(0) = 0xbffc0000 1043 | brk(0) = 0xbffc0000 1044 | brk(0) = 0xbffc0000 1045 | brk(0) = 0xbffc0000 1046 | brk(0) = 0xbffc0000 1047 | brk(0) = 0xbffc0000 1048 | brk(0) = 0xbffc0000 1049 | brk(0) = 0xbffc0000 1050 | brk(0) = 0xbffc0000 1051 | brk(0) = 0xbffc0000 1052 | brk(0) = 0xbffc0000 1053 | brk(0) = 0xbffc0000 1054 | brk(0) = 0xbffc0000 1055 | brk(0) = 0xbffc0000 1056 | brk(0) = 0xbffc0000 1057 | brk(0) = 0xbffc0000 1058 | brk(0) = 0xbffc0000 1059 | brk(0) = 0xbffc0000 1060 | brk(0) = 0xbffc0000 1061 | brk(0) = 0xbffc0000 1062 | brk(0) = 0xbffc0000 1063 | brk(0) = 0xbffc0000 1064 | brk(0) = 0xbffc0000 1065 | brk(0) = 0xbffc0000 1066 | brk(0) = 0xbffc0000 1067 | brk(0) = 0xbffc0000 1068 | brk(0) = 0xbffc0000 1069 | brk(0) = 0xbffc0000 1070 | brk(0) = 0xbffc0000 1071 | brk(0) = 0xbffc0000 1072 | brk(0) = 0xbffc0000 1073 | brk(0) = 0xbffc0000 1074 | brk(0) = 0xbffc0000 1075 | brk(0) = 0xbffc0000 1076 | brk(0) = 0xbffc0000 1077 | brk(0) = 0xbffc0000 1078 | brk(0) = 0xbffc0000 1079 | brk(0) = 0xbffc0000 1080 | brk(0) = 0xbffc0000 1081 | brk(0) = 0xbffc0000 1082 | brk(0) = 0xbffc0000 1083 | brk(0) = 0xbffc0000 1084 | brk(0) = 0xbffc0000 1085 | brk(0) = 0xbffc0000 1086 | brk(0) = 0xbffc0000 1087 | brk(0) = 0xbffc0000 1088 | brk(0) = 0xbffc0000 1089 | brk(0) = 0xbffc0000 1090 | brk(0) = 0xbffc0000 1091 | brk(0) = 0xbffc0000 1092 | brk(0) = 0xbffc0000 1093 | brk(0) = 0xbffc0000 1094 | brk(0) = 0xbffc0000 1095 | brk(0) = 0xbffc0000 1096 | brk(0) = 0xbffc0000 1097 | brk(0) = 0xbffc0000 1098 | brk(0) = 0xbffc0000 1099 | brk(0) = 0xbffc0000 1100 | brk(0) = 0xbffc0000 1101 | brk(0) = 0xbffc0000 1102 | brk(0) = 0xbffc0000 1103 | brk(0) = 0xbffc0000 1104 | brk(0) = 0xbffc0000 1105 | brk(0) = 0xbffc0000 1106 | brk(0) = 0xbffc0000 1107 | brk(0) = 0xbffc0000 1108 | brk(0) = 0xbffc0000 1109 | brk(0) = 0xbffc0000 1110 | brk(0) = 0xbffc0000 1111 | brk(0) = 0xbffc0000 1112 | brk(0) = 0xbffc0000 1113 | brk(0) = 0xbffc0000 1114 | brk(0) = 0xbffc0000 1115 | brk(0) = 0xbffc0000 1116 | brk(0) = 0xbffc0000 1117 | brk(0) = 0xbffc0000 1118 | brk(0) = 0xbffc0000 1119 | brk(0) = 0xbffc0000 1120 | brk(0) = 0xbffc0000 1121 | brk(0) = 0xbffc0000 1122 | brk(0) = 0xbffc0000 1123 | brk(0) = 0xbffc0000 1124 | brk(0) = 0xbffc0000 1125 | brk(0) = 0xbffc0000 1126 | brk(0) = 0xbffc0000 1127 | brk(0) = 0xbffc0000 1128 | brk(0) = 0xbffc0000 1129 | brk(0) = 0xbffc0000 1130 | brk(0) = 0xbffc0000 1131 | brk(0) = 0xbffc0000 1132 | brk(0) = 0xbffc0000 1133 | brk(0) = 0xbffc0000 1134 | brk(0) = 0xbffc0000 1135 | brk(0) = 0xbffc0000 1136 | brk(0) = 0xbffc0000 1137 | brk(0) = 0xbffc0000 1138 | brk(0) = 0xbffc0000 1139 | brk(0) = 0xbffc0000 1140 | brk(0) = 0xbffc0000 1141 | brk(0) = 0xbffc0000 1142 | brk(0) = 0xbffc0000 1143 | brk(0) = 0xbffc0000 1144 | brk(0) = 0xbffc0000 1145 | brk(0) = 0xbffc0000 1146 | brk(0) = 0xbffc0000 1147 | brk(0) = 0xbffc0000 1148 | brk(0) = 0xbffc0000 1149 | brk(0) = 0xbffc0000 1150 | brk(0) = 0xbffc0000 1151 | brk(0) = 0xbffc0000 1152 | brk(0) = 0xbffc0000 1153 | brk(0) = 0xbffc0000 1154 | brk(0) = 0xbffc0000 1155 | brk(0) = 0xbffc0000 1156 | brk(0) = 0xbffc0000 1157 | brk(0) = 0xbffc0000 1158 | brk(0) = 0xbffc0000 1159 | brk(0) = 0xbffc0000 1160 | brk(0) = 0xbffc0000 1161 | brk(0) = 0xbffc0000 1162 | brk(0) = 0xbffc0000 1163 | brk(0) = 0xbffc0000 1164 | brk(0) = 0xbffc0000 1165 | brk(0) = 0xbffc0000 1166 | brk(0) = 0xbffc0000 1167 | brk(0) = 0xbffc0000 1168 | brk(0) = 0xbffc0000 1169 | brk(0) = 0xbffc0000 1170 | brk(0) = 0xbffc0000 1171 | brk(0) = 0xbffc0000 1172 | brk(0) = 0xbffc0000 1173 | brk(0) = 0xbffc0000 1174 | brk(0) = 0xbffc0000 1175 | brk(0) = 0xbffc0000 1176 | brk(0) = 0xbffc0000 1177 | brk(0) = 0xbffc0000 1178 | brk(0) = 0xbffc0000 1179 | brk(0) = 0xbffc0000 1180 | brk(0) = 0xbffc0000 1181 | brk(0) = 0xbffc0000 1182 | brk(0) = 0xbffc0000 1183 | brk(0) = 0xbffc0000 1184 | brk(0) = 0xbffc0000 1185 | brk(0) = 0xbffc0000 1186 | brk(0) = 0xbffc0000 1187 | brk(0) = 0xbffc0000 1188 | brk(0) = 0xbffc0000 1189 | brk(0) = 0xbffc0000 1190 | brk(0) = 0xbffc0000 1191 | brk(0) = 0xbffc0000 1192 | brk(0) = 0xbffc0000 1193 | brk(0) = 0xbffc0000 1194 | brk(0) = 0xbffc0000 1195 | brk(0) = 0xbffc0000 1196 | brk(0) = 0xbffc0000 1197 | brk(0) = 0xbffc0000 1198 | brk(0) = 0xbffc0000 1199 | brk(0) = 0xbffc0000 1200 | brk(0) = 0xbffc0000 1201 | brk(0) = 0xbffc0000 1202 | brk(0) = 0xbffc0000 1203 | brk(0) = 0xbffc0000 1204 | brk(0) = 0xbffc0000 1205 | brk(0) = 0xbffc0000 1206 | brk(0) = 0xbffc0000 1207 | brk(0) = 0xbffc0000 1208 | brk(0) = 0xbffc0000 1209 | brk(0) = 0xbffc0000 1210 | brk(0) = 0xbffc0000 1211 | brk(0) = 0xbffc0000 1212 | brk(0) = 0xbffc0000 1213 | brk(0) = 0xbffc0000 1214 | brk(0) = 0xbffc0000 1215 | brk(0) = 0xbffc0000 1216 | brk(0) = 0xbffc0000 1217 | brk(0) = 0xbffc0000 1218 | brk(0) = 0xbffc0000 1219 | brk(0) = 0xbffc0000 1220 | brk(0) = 0xbffc0000 1221 | brk(0) = 0xbffc0000 1222 | brk(0) = 0xbffc0000 1223 | brk(0) = 0xbffc0000 1224 | brk(0) = 0xbffc0000 1225 | brk(0) = 0xbffc0000 1226 | brk(0) = 0xbffc0000 1227 | brk(0) = 0xbffc0000 1228 | brk(0) = 0xbffc0000 1229 | brk(0) = 0xbffc0000 1230 | brk(0) = 0xbffc0000 1231 | brk(0) = 0xbffc0000 1232 | brk(0) = 0xbffc0000 1233 | brk(0) = 0xbffc0000 1234 | brk(0) = 0xbffc0000 1235 | brk(0) = 0xbffc0000 1236 | brk(0) = 0xbffc0000 1237 | brk(0) = 0xbffc0000 1238 | brk(0) = 0xbffc0000 1239 | brk(0) = 0xbffc0000 1240 | brk(0) = 0xbffc0000 1241 | brk(0) = 0xbffc0000 1242 | brk(0) = 0xbffc0000 1243 | brk(0) = 0xbffc0000 1244 | brk(0) = 0xbffc0000 1245 | brk(0) = 0xbffc0000 1246 | brk(0) = 0xbffc0000 1247 | brk(0) = 0xbffc0000 1248 | brk(0) = 0xbffc0000 1249 | brk(0) = 0xbffc0000 1250 | brk(0) = 0xbffc0000 1251 | brk(0) = 0xbffc0000 1252 | brk(0) = 0xbffc0000 1253 | brk(0) = 0xbffc0000 1254 | brk(0) = 0xbffc0000 1255 | brk(0) = 0xbffc0000 1256 | brk(0) = 0xbffc0000 1257 | brk(0) = 0xbffc0000 1258 | brk(0) = 0xbffc0000 1259 | brk(0) = 0xbffc0000 1260 | brk(0) = 0xbffc0000 1261 | brk(0) = 0xbffc0000 1262 | brk(0) = 0xbffc0000 1263 | brk(0) = 0xbffc0000 1264 | brk(0) = 0xbffc0000 1265 | brk(0) = 0xbffc0000 1266 | brk(0) = 0xbffc0000 1267 | brk(0) = 0xbffc0000 1268 | brk(0) = 0xbffc0000 1269 | brk(0) = 0xbffc0000 1270 | brk(0) = 0xbffc0000 1271 | brk(0) = 0xbffc0000 1272 | brk(0) = 0xbffc0000 1273 | brk(0) = 0xbffc0000 1274 | brk(0) = 0xbffc0000 1275 | brk(0) = 0xbffc0000 1276 | brk(0) = 0xbffc0000 1277 | brk(0) = 0xbffc0000 1278 | brk(0) = 0xbffc0000 1279 | brk(0) = 0xbffc0000 1280 | brk(0) = 0xbffc0000 1281 | brk(0) = 0xbffc0000 1282 | brk(0) = 0xbffc0000 1283 | brk(0) = 0xbffc0000 1284 | brk(0) = 0xbffc0000 1285 | brk(0) = 0xbffc0000 1286 | brk(0) = 0xbffc0000 1287 | brk(0) = 0xbffc0000 1288 | brk(0) = 0xbffc0000 1289 | brk(0) = 0xbffc0000 1290 | brk(0) = 0xbffc0000 1291 | brk(0) = 0xbffc0000 1292 | brk(0) = 0xbffc0000 1293 | brk(0) = 0xbffc0000 1294 | brk(0) = 0xbffc0000 1295 | brk(0) = 0xbffc0000 1296 | brk(0) = 0xbffc0000 1297 | brk(0) = 0xbffc0000 1298 | brk(0) = 0xbffc0000 1299 | brk(0) = 0xbffc0000 1300 | brk(0) = 0xbffc0000 1301 | brk(0) = 0xbffc0000 1302 | brk(0) = 0xbffc0000 1303 | brk(0) = 0xbffc0000 1304 | brk(0) = 0xbffc0000 1305 | brk(0) = 0xbffc0000 1306 | brk(0) = 0xbffc0000 1307 | brk(0) = 0xbffc0000 1308 | brk(0) = 0xbffc0000 1309 | brk(0) = 0xbffc0000 1310 | brk(0) = 0xbffc0000 1311 | brk(0) = 0xbffc0000 1312 | brk(0) = 0xbffc0000 1313 | brk(0) = 0xbffc0000 1314 | brk(0) = 0xbffc0000 1315 | brk(0) = 0xbffc0000 1316 | brk(0) = 0xbffc0000 1317 | brk(0) = 0xbffc0000 1318 | brk(0) = 0xbffc0000 1319 | brk(0) = 0xbffc0000 1320 | brk(0) = 0xbffc0000 1321 | brk(0) = 0xbffc0000 1322 | brk(0) = 0xbffc0000 1323 | brk(0) = 0xbffc0000 1324 | brk(0) = 0xbffc0000 1325 | brk(0) = 0xbffc0000 1326 | brk(0) = 0xbffc0000 1327 | brk(0) = 0xbffc0000 1328 | brk(0) = 0xbffc0000 1329 | brk(0) = 0xbffc0000 1330 | brk(0) = 0xbffc0000 1331 | brk(0) = 0xbffc0000 1332 | brk(0) = 0xbffc0000 1333 | brk(0) = 0xbffc0000 1334 | brk(0) = 0xbffc0000 1335 | brk(0) = 0xbffc0000 1336 | brk(0) = 0xbffc0000 1337 | brk(0) = 0xbffc0000 1338 | brk(0) = 0xbffc0000 1339 | brk(0) = 0xbffc0000 1340 | brk(0) = 0xbffc0000 1341 | brk(0) = 0xbffc0000 1342 | brk(0) = 0xbffc0000 1343 | brk(0) = 0xbffc0000 1344 | brk(0) = 0xbffc0000 1345 | brk(0) = 0xbffc0000 1346 | brk(0) = 0xbffc0000 1347 | brk(0) = 0xbffc0000 1348 | brk(0) = 0xbffc0000 1349 | brk(0) = 0xbffc0000 1350 | brk(0) = 0xbffc0000 1351 | brk(0) = 0xbffc0000 1352 | brk(0) = 0xbffc0000 1353 | brk(0) = 0xbffc0000 1354 | brk(0) = 0xbffc0000 1355 | brk(0) = 0xbffc0000 1356 | brk(0) = 0xbffc0000 1357 | brk(0) = 0xbffc0000 1358 | brk(0) = 0xbffc0000 1359 | brk(0) = 0xbffc0000 1360 | brk(0) = 0xbffc0000 1361 | brk(0) = 0xbffc0000 1362 | brk(0) = 0xbffc0000 1363 | brk(0) = 0xbffc0000 1364 | brk(0) = 0xbffc0000 1365 | brk(0) = 0xbffc0000 1366 | brk(0) = 0xbffc0000 1367 | brk(0) = 0xbffc0000 1368 | +++ exited with 0 +++ 1369 | -------------------------------------------------------------------------------- /linker/big_alloc_linker_maps_after: -------------------------------------------------------------------------------- 1 | 08048000-08049000 r-xp 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 2 | 08049000-0804a000 r--p 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 3 | 0804a000-0804b000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 4 | 4224a000-42269000 r-xp 00000000 fd:01 521870 /usr/lib/ld-2.18.so 5 | 42269000-4226a000 r--p 0001e000 fd:01 521870 /usr/lib/ld-2.18.so 6 | 4226a000-4226b000 rw-p 0001f000 fd:01 521870 /usr/lib/ld-2.18.so 7 | 4226d000-42425000 r-xp 00000000 fd:01 521871 /usr/lib/libc-2.18.so 8 | 42425000-42427000 r--p 001b8000 fd:01 521871 /usr/lib/libc-2.18.so 9 | 42427000-42428000 rw-p 001ba000 fd:01 521871 /usr/lib/libc-2.18.so 10 | 42428000-4242b000 rw-p 00000000 00:00 0 11 | b1687000-b7788000 rw-p 00000000 00:00 0 12 | b779e000-b77a0000 rw-p 00000000 00:00 0 13 | b77a0000-b77a1000 r-xp 00000000 00:00 0 [vdso] 14 | b77a1000-b77a3000 r--p 00000000 00:00 0 [vvar] 15 | bf5ff000-bf600000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 16 | bfb14000-bfeec000 rw-p 00000000 00:00 0 [heap] 17 | bfefa000-bff1b000 rw-p 00000000 00:00 0 [stack] 18 | 19 | 20 | 21 | pp[0] = 0xbfb14fb0 22 | pp[1] = 0xbfb2dfb8 23 | pp[2] = 0xbfb46fc0 24 | pp[3] = 0xbfb5ffc8 25 | pp[4] = 0xbfb78fd0 26 | pp[5] = 0xbfb91fd8 27 | pp[6] = 0xbfbaafe0 28 | ... 29 | pp[34] = 0xbfe670c0 30 | pp[35] = 0xbfe800c8 31 | pp[36] = 0xbfe990d0 32 | pp[37] = 0xbfeb20d8 33 | pp[38] = 0xbfecb0e0 34 | pp[39] = 0xb7687008 35 | pp[40] = 0xb76a0010 36 | pp[41] = 0xb76b9018 37 | pp[42] = 0xb76d2020 38 | pp[43] = 0xb76eb028 39 | pp[44] = 0xb7704030 40 | pp[45] = 0xb771d038 41 | pp[46] = 0xb7736040 42 | ... 43 | pp[992] = 0xb17d2020 44 | pp[993] = 0xb17eb028 45 | pp[994] = 0xb1804030 46 | pp[995] = 0xb181d038 47 | pp[996] = 0xb1836040 48 | pp[997] = 0xb184f048 49 | pp[998] = 0xb1868050 50 | pp[999] = 0xb1687008 51 | 52 | -------------------------------------------------------------------------------- /linker/big_alloc_linker_maps_before: -------------------------------------------------------------------------------- 1 | 08048000-08049000 r-xp 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 2 | 08049000-0804a000 r--p 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 3 | 0804a000-0804b000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 4 | 4224a000-42269000 r-xp 00000000 fd:01 521870 /usr/lib/ld-2.18.so 5 | 42269000-4226a000 r--p 0001e000 fd:01 521870 /usr/lib/ld-2.18.so 6 | 4226a000-4226b000 rw-p 0001f000 fd:01 521870 /usr/lib/ld-2.18.so 7 | 4226d000-42425000 r-xp 00000000 fd:01 521871 /usr/lib/libc-2.18.so 8 | 42425000-42427000 r--p 001b8000 fd:01 521871 /usr/lib/libc-2.18.so 9 | 42427000-42428000 rw-p 001ba000 fd:01 521871 /usr/lib/libc-2.18.so 10 | 42428000-4242b000 rw-p 00000000 00:00 0 11 | b7787000-b7788000 rw-p 00000000 00:00 0 12 | b779f000-b77a0000 rw-p 00000000 00:00 0 13 | b77a0000-b77a1000 r-xp 00000000 00:00 0 [vdso] 14 | b77a1000-b77a3000 r--p 00000000 00:00 0 [vvar] 15 | bf5ff000-bf600000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 16 | bfefa000-bff1b000 rw-p 00000000 00:00 0 [stack] 17 | -------------------------------------------------------------------------------- /linker/big_alloc_maps_after: -------------------------------------------------------------------------------- 1 | 08048000-08049000 r-xp 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 2 | 08049000-0804a000 r--p 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 3 | 0804a000-0804b000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 4 | 08cfc000-0eec7000 rw-p 00000000 00:00 0 [heap] 5 | 4224a000-42269000 r-xp 00000000 fd:01 521870 /usr/lib/ld-2.18.so 6 | 42269000-4226a000 r--p 0001e000 fd:01 521870 /usr/lib/ld-2.18.so 7 | 4226a000-4226b000 rw-p 0001f000 fd:01 521870 /usr/lib/ld-2.18.so 8 | 4226d000-42425000 r-xp 00000000 fd:01 521871 /usr/lib/libc-2.18.so 9 | 42425000-42427000 r--p 001b8000 fd:01 521871 /usr/lib/libc-2.18.so 10 | 42427000-42428000 rw-p 001ba000 fd:01 521871 /usr/lib/libc-2.18.so 11 | 42428000-4242b000 rw-p 00000000 00:00 0 12 | b7785000-b7786000 rw-p 00000000 00:00 0 13 | b779c000-b779e000 rw-p 00000000 00:00 0 14 | b779e000-b779f000 r-xp 00000000 00:00 0 [vdso] 15 | b779f000-b77a1000 r--p 00000000 00:00 0 [vvar] 16 | bfe26000-bfe47000 rw-p 00000000 00:00 0 [stack] 17 | 18 | 19 | pp[0] = 0x8cfcfb0 20 | pp[1] = 0x8d15fb8 21 | pp[2] = 0x8d2efc0 22 | pp[3] = 0x8d47fc8 23 | pp[4] = 0x8d60fd0 24 | pp[5] = 0x8d79fd8 25 | pp[6] = 0x8d92fe0 26 | pp[7] = 0x8dabfe8 27 | pp[8] = 0x8dc4ff0 28 | pp[9] = 0x8dddff8 29 | pp[10] = 0x8df7000 30 | pp[11] = 0x8e10008 31 | pp[12] = 0x8e29010 32 | ... 33 | pp[985] = 0xed2fe78 34 | pp[986] = 0xed48e80 35 | pp[987] = 0xed61e88 36 | pp[988] = 0xed7ae90 37 | pp[989] = 0xed93e98 38 | pp[990] = 0xedacea0 39 | pp[991] = 0xedc5ea8 40 | pp[992] = 0xeddeeb0 41 | pp[993] = 0xedf7eb8 42 | pp[994] = 0xee10ec0 43 | pp[995] = 0xee29ec8 44 | pp[996] = 0xee42ed0 45 | pp[997] = 0xee5bed8 46 | pp[998] = 0xee74ee0 47 | pp[999] = 0xee8dee8 48 | 49 | -------------------------------------------------------------------------------- /linker/big_alloc_maps_before: -------------------------------------------------------------------------------- 1 | 08048000-08049000 r-xp 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 2 | 08049000-0804a000 r--p 00000000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 3 | 0804a000-0804b000 rw-p 00001000 fd:02 1573131 /home/avd/dev/restrict-memory/big_alloc 4 | 4224a000-42269000 r-xp 00000000 fd:01 521870 /usr/lib/ld-2.18.so 5 | 42269000-4226a000 r--p 0001e000 fd:01 521870 /usr/lib/ld-2.18.so 6 | 4226a000-4226b000 rw-p 0001f000 fd:01 521870 /usr/lib/ld-2.18.so 7 | 4226d000-42425000 r-xp 00000000 fd:01 521871 /usr/lib/libc-2.18.so 8 | 42425000-42427000 r--p 001b8000 fd:01 521871 /usr/lib/libc-2.18.so 9 | 42427000-42428000 rw-p 001ba000 fd:01 521871 /usr/lib/libc-2.18.so 10 | 42428000-4242b000 rw-p 00000000 00:00 0 11 | b7785000-b7786000 rw-p 00000000 00:00 0 12 | b779d000-b779e000 rw-p 00000000 00:00 0 13 | b779e000-b779f000 r-xp 00000000 00:00 0 [vdso] 14 | b779f000-b77a1000 r--p 00000000 00:00 0 [vvar] 15 | bfe26000-bfe47000 rw-p 00000000 00:00 0 [stack] 16 | -------------------------------------------------------------------------------- /linker/default.lst: -------------------------------------------------------------------------------- 1 | /* Script for -z combreloc: combine and sort reloc sections */ 2 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", 3 | "elf32-i386") 4 | OUTPUT_ARCH(i386) 5 | ENTRY(_start) 6 | SEARCH_DIR("/usr/i686-redhat-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); 7 | SECTIONS 8 | { 9 | /* Read-only sections, merged into text segment: */ 10 | PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; 11 | .interp : { *(.interp) } 12 | .note.gnu.build-id : { *(.note.gnu.build-id) } 13 | .hash : { *(.hash) } 14 | .gnu.hash : { *(.gnu.hash) } 15 | .dynsym : { *(.dynsym) } 16 | .dynstr : { *(.dynstr) } 17 | .gnu.version : { *(.gnu.version) } 18 | .gnu.version_d : { *(.gnu.version_d) } 19 | .gnu.version_r : { *(.gnu.version_r) } 20 | .rel.dyn : 21 | { 22 | *(.rel.init) 23 | *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) 24 | *(.rel.fini) 25 | *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) 26 | *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) 27 | *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) 28 | *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) 29 | *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) 30 | *(.rel.ctors) 31 | *(.rel.dtors) 32 | *(.rel.got) 33 | *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) 34 | *(.rel.ifunc) 35 | } 36 | .rel.plt : 37 | { 38 | *(.rel.plt) 39 | PROVIDE_HIDDEN (__rel_iplt_start = .); 40 | *(.rel.iplt) 41 | PROVIDE_HIDDEN (__rel_iplt_end = .); 42 | } 43 | .init : 44 | { 45 | KEEP (*(SORT_NONE(.init))) 46 | } 47 | .plt : { *(.plt) *(.iplt) } 48 | .text : 49 | { 50 | *(.text.unlikely .text.*_unlikely) 51 | *(.text.exit .text.exit.*) 52 | *(.text.startup .text.startup.*) 53 | *(.text.hot .text.hot.*) 54 | *(.text .stub .text.* .gnu.linkonce.t.*) 55 | /* .gnu.warning sections are handled specially by elf32.em. */ 56 | *(.gnu.warning) 57 | } 58 | .fini : 59 | { 60 | KEEP (*(SORT_NONE(.fini))) 61 | } 62 | PROVIDE (__etext = .); 63 | PROVIDE (_etext = .); 64 | PROVIDE (etext = .); 65 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 66 | .rodata1 : { *(.rodata1) } 67 | .eh_frame_hdr : { *(.eh_frame_hdr) } 68 | .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } 69 | .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table 70 | .gcc_except_table.*) } 71 | /* These sections are generated by the Sun/Oracle C++ compiler. */ 72 | .exception_ranges : ONLY_IF_RO { *(.exception_ranges 73 | .exception_ranges*) } 74 | /* Adjust the address for the data segment. We want to adjust up to 75 | the same address within the page on the next page up. */ 76 | . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); 77 | /* Exception handling */ 78 | .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } 79 | .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } 80 | .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } 81 | /* Thread Local Storage sections */ 82 | .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } 83 | .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } 84 | .preinit_array : 85 | { 86 | PROVIDE_HIDDEN (__preinit_array_start = .); 87 | KEEP (*(.preinit_array)) 88 | PROVIDE_HIDDEN (__preinit_array_end = .); 89 | } 90 | .init_array : 91 | { 92 | PROVIDE_HIDDEN (__init_array_start = .); 93 | KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) 94 | KEEP (*(.init_array)) 95 | KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) 96 | PROVIDE_HIDDEN (__init_array_end = .); 97 | } 98 | .fini_array : 99 | { 100 | PROVIDE_HIDDEN (__fini_array_start = .); 101 | KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) 102 | KEEP (*(.fini_array)) 103 | KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 104 | PROVIDE_HIDDEN (__fini_array_end = .); 105 | } 106 | .ctors : 107 | { 108 | /* gcc uses crtbegin.o to find the start of 109 | the constructors, so we make sure it is 110 | first. Because this is a wildcard, it 111 | doesn't matter if the user does not 112 | actually link against crtbegin.o; the 113 | linker won't look for a file to match a 114 | wildcard. The wildcard also means that it 115 | doesn't matter which directory crtbegin.o 116 | is in. */ 117 | KEEP (*crtbegin.o(.ctors)) 118 | KEEP (*crtbegin?.o(.ctors)) 119 | /* We don't want to include the .ctor section from 120 | the crtend.o file until after the sorted ctors. 121 | The .ctor section from the crtend file contains the 122 | end of ctors marker and it must be last */ 123 | KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) 124 | KEEP (*(SORT(.ctors.*))) 125 | KEEP (*(.ctors)) 126 | } 127 | .dtors : 128 | { 129 | KEEP (*crtbegin.o(.dtors)) 130 | KEEP (*crtbegin?.o(.dtors)) 131 | KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) 132 | KEEP (*(SORT(.dtors.*))) 133 | KEEP (*(.dtors)) 134 | } 135 | .jcr : { KEEP (*(.jcr)) } 136 | .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } 137 | .dynamic : { *(.dynamic) } 138 | .got : { *(.got) *(.igot) } 139 | . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); 140 | .got.plt : { *(.got.plt) *(.igot.plt) } 141 | .data : 142 | { 143 | *(.data .data.* .gnu.linkonce.d.*) 144 | SORT(CONSTRUCTORS) 145 | } 146 | .data1 : { *(.data1) } 147 | _edata = .; PROVIDE (edata = .); 148 | . = .; 149 | __bss_start = .; 150 | .bss : 151 | { 152 | *(.dynbss) 153 | *(.bss .bss.* .gnu.linkonce.b.*) 154 | *(COMMON) 155 | /* Align here to ensure that the .bss section occupies space up to 156 | _end. Align after .bss to ensure correct alignment even if the 157 | .bss section disappears because there are no input sections. 158 | FIXME: Why do we need it? When there is no .bss section, we don't 159 | pad the .data section. */ 160 | . = ALIGN(. != 0 ? 32 / 8 : 1); 161 | } 162 | . = ALIGN(32 / 8); 163 | . = ALIGN(32 / 8); 164 | _end = .; PROVIDE (end = .); 165 | . = DATA_SEGMENT_END (.); 166 | /* Stabs debugging sections. */ 167 | .stab 0 : { *(.stab) } 168 | .stabstr 0 : { *(.stabstr) } 169 | .stab.excl 0 : { *(.stab.excl) } 170 | .stab.exclstr 0 : { *(.stab.exclstr) } 171 | .stab.index 0 : { *(.stab.index) } 172 | .stab.indexstr 0 : { *(.stab.indexstr) } 173 | .comment 0 : { *(.comment) } 174 | /* DWARF debug sections. 175 | Symbols in the DWARF debugging sections are relative to the beginning 176 | of the section so we begin them at 0. */ 177 | /* DWARF 1 */ 178 | .debug 0 : { *(.debug) } 179 | .line 0 : { *(.line) } 180 | /* GNU DWARF 1 extensions */ 181 | .debug_srcinfo 0 : { *(.debug_srcinfo) } 182 | .debug_sfnames 0 : { *(.debug_sfnames) } 183 | /* DWARF 1.1 and DWARF 2 */ 184 | .debug_aranges 0 : { *(.debug_aranges) } 185 | .debug_pubnames 0 : { *(.debug_pubnames) } 186 | /* DWARF 2 */ 187 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } 188 | .debug_abbrev 0 : { *(.debug_abbrev) } 189 | .debug_line 0 : { *(.debug_line) } 190 | .debug_frame 0 : { *(.debug_frame) } 191 | .debug_str 0 : { *(.debug_str) } 192 | .debug_loc 0 : { *(.debug_loc) } 193 | .debug_macinfo 0 : { *(.debug_macinfo) } 194 | /* SGI/MIPS DWARF 2 extensions */ 195 | .debug_weaknames 0 : { *(.debug_weaknames) } 196 | .debug_funcnames 0 : { *(.debug_funcnames) } 197 | .debug_typenames 0 : { *(.debug_typenames) } 198 | .debug_varnames 0 : { *(.debug_varnames) } 199 | /* DWARF 3 */ 200 | .debug_pubtypes 0 : { *(.debug_pubtypes) } 201 | .debug_ranges 0 : { *(.debug_ranges) } 202 | /* DWARF Extension. */ 203 | .debug_macro 0 : { *(.debug_macro) } 204 | .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } 205 | /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } 206 | } 207 | -------------------------------------------------------------------------------- /linker/hack.lst: -------------------------------------------------------------------------------- 1 | /* Script for -z combreloc: combine and sort reloc sections */ 2 | OUTPUT_FORMAT("elf32-i386", "elf32-i386", 3 | "elf32-i386") 4 | OUTPUT_ARCH(i386) 5 | ENTRY(_start) 6 | SEARCH_DIR("/usr/i686-redhat-linux/lib"); SEARCH_DIR("/usr/local/lib"); SEARCH_DIR("/lib"); SEARCH_DIR("/usr/lib"); 7 | SECTIONS 8 | { 9 | /* Read-only sections, merged into text segment: */ 10 | PROVIDE (__executable_start = SEGMENT_START("text-segment", 0x08048000)); . = SEGMENT_START("text-segment", 0x08048000) + SIZEOF_HEADERS; 11 | .interp : { *(.interp) } 12 | .note.gnu.build-id : { *(.note.gnu.build-id) } 13 | .hash : { *(.hash) } 14 | .gnu.hash : { *(.gnu.hash) } 15 | .dynsym : { *(.dynsym) } 16 | .dynstr : { *(.dynstr) } 17 | .gnu.version : { *(.gnu.version) } 18 | .gnu.version_d : { *(.gnu.version_d) } 19 | .gnu.version_r : { *(.gnu.version_r) } 20 | .rel.dyn : 21 | { 22 | *(.rel.init) 23 | *(.rel.text .rel.text.* .rel.gnu.linkonce.t.*) 24 | *(.rel.fini) 25 | *(.rel.rodata .rel.rodata.* .rel.gnu.linkonce.r.*) 26 | *(.rel.data.rel.ro .rel.data.rel.ro.* .rel.gnu.linkonce.d.rel.ro.*) 27 | *(.rel.data .rel.data.* .rel.gnu.linkonce.d.*) 28 | *(.rel.tdata .rel.tdata.* .rel.gnu.linkonce.td.*) 29 | *(.rel.tbss .rel.tbss.* .rel.gnu.linkonce.tb.*) 30 | *(.rel.ctors) 31 | *(.rel.dtors) 32 | *(.rel.got) 33 | *(.rel.bss .rel.bss.* .rel.gnu.linkonce.b.*) 34 | *(.rel.ifunc) 35 | } 36 | .rel.plt : 37 | { 38 | *(.rel.plt) 39 | PROVIDE_HIDDEN (__rel_iplt_start = .); 40 | *(.rel.iplt) 41 | PROVIDE_HIDDEN (__rel_iplt_end = .); 42 | } 43 | .init : 44 | { 45 | KEEP (*(SORT_NONE(.init))) 46 | } 47 | .plt : { *(.plt) *(.iplt) } 48 | .text : 49 | { 50 | *(.text.unlikely .text.*_unlikely) 51 | *(.text.exit .text.exit.*) 52 | *(.text.startup .text.startup.*) 53 | *(.text.hot .text.hot.*) 54 | *(.text .stub .text.* .gnu.linkonce.t.*) 55 | /* .gnu.warning sections are handled specially by elf32.em. */ 56 | *(.gnu.warning) 57 | } 58 | .fini : 59 | { 60 | KEEP (*(SORT_NONE(.fini))) 61 | } 62 | PROVIDE (__etext = .); 63 | PROVIDE (_etext = .); 64 | PROVIDE (etext = .); 65 | .rodata : { *(.rodata .rodata.* .gnu.linkonce.r.*) } 66 | .rodata1 : { *(.rodata1) } 67 | .eh_frame_hdr : { *(.eh_frame_hdr) } 68 | .eh_frame : ONLY_IF_RO { KEEP (*(.eh_frame)) } 69 | .gcc_except_table : ONLY_IF_RO { *(.gcc_except_table 70 | .gcc_except_table.*) } 71 | /* These sections are generated by the Sun/Oracle C++ compiler. */ 72 | .exception_ranges : ONLY_IF_RO { *(.exception_ranges 73 | .exception_ranges*) } 74 | /* Adjust the address for the data segment. We want to adjust up to 75 | the same address within the page on the next page up. */ 76 | . = ALIGN (CONSTANT (MAXPAGESIZE)) - ((CONSTANT (MAXPAGESIZE) - .) & (CONSTANT (MAXPAGESIZE) - 1)); . = DATA_SEGMENT_ALIGN (CONSTANT (MAXPAGESIZE), CONSTANT (COMMONPAGESIZE)); 77 | /* Exception handling */ 78 | .eh_frame : ONLY_IF_RW { KEEP (*(.eh_frame)) } 79 | .gcc_except_table : ONLY_IF_RW { *(.gcc_except_table .gcc_except_table.*) } 80 | .exception_ranges : ONLY_IF_RW { *(.exception_ranges .exception_ranges*) } 81 | /* Thread Local Storage sections */ 82 | .tdata : { *(.tdata .tdata.* .gnu.linkonce.td.*) } 83 | .tbss : { *(.tbss .tbss.* .gnu.linkonce.tb.*) *(.tcommon) } 84 | .preinit_array : 85 | { 86 | PROVIDE_HIDDEN (__preinit_array_start = .); 87 | KEEP (*(.preinit_array)) 88 | PROVIDE_HIDDEN (__preinit_array_end = .); 89 | } 90 | .init_array : 91 | { 92 | PROVIDE_HIDDEN (__init_array_start = .); 93 | KEEP (*(SORT_BY_INIT_PRIORITY(.init_array.*) SORT_BY_INIT_PRIORITY(.ctors.*))) 94 | KEEP (*(.init_array)) 95 | KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .ctors)) 96 | PROVIDE_HIDDEN (__init_array_end = .); 97 | } 98 | .fini_array : 99 | { 100 | PROVIDE_HIDDEN (__fini_array_start = .); 101 | KEEP (*(SORT_BY_INIT_PRIORITY(.fini_array.*) SORT_BY_INIT_PRIORITY(.dtors.*))) 102 | KEEP (*(.fini_array)) 103 | KEEP (*(EXCLUDE_FILE (*crtbegin.o *crtbegin?.o *crtend.o *crtend?.o ) .dtors)) 104 | PROVIDE_HIDDEN (__fini_array_end = .); 105 | } 106 | .ctors : 107 | { 108 | /* gcc uses crtbegin.o to find the start of 109 | the constructors, so we make sure it is 110 | first. Because this is a wildcard, it 111 | doesn't matter if the user does not 112 | actually link against crtbegin.o; the 113 | linker won't look for a file to match a 114 | wildcard. The wildcard also means that it 115 | doesn't matter which directory crtbegin.o 116 | is in. */ 117 | KEEP (*crtbegin.o(.ctors)) 118 | KEEP (*crtbegin?.o(.ctors)) 119 | /* We don't want to include the .ctor section from 120 | the crtend.o file until after the sorted ctors. 121 | The .ctor section from the crtend file contains the 122 | end of ctors marker and it must be last */ 123 | KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .ctors)) 124 | KEEP (*(SORT(.ctors.*))) 125 | KEEP (*(.ctors)) 126 | } 127 | .dtors : 128 | { 129 | KEEP (*crtbegin.o(.dtors)) 130 | KEEP (*crtbegin?.o(.dtors)) 131 | KEEP (*(EXCLUDE_FILE (*crtend.o *crtend?.o ) .dtors)) 132 | KEEP (*(SORT(.dtors.*))) 133 | KEEP (*(.dtors)) 134 | } 135 | .jcr : { KEEP (*(.jcr)) } 136 | .data.rel.ro : { *(.data.rel.ro.local* .gnu.linkonce.d.rel.ro.local.*) *(.data.rel.ro .data.rel.ro.* .gnu.linkonce.d.rel.ro.*) } 137 | .dynamic : { *(.dynamic) } 138 | .got : { *(.got) *(.igot) } 139 | . = DATA_SEGMENT_RELRO_END (SIZEOF (.got.plt) >= 12 ? 12 : 0, .); 140 | .got.plt : { *(.got.plt) *(.igot.plt) } 141 | 142 | . = 0xbf5ff0a0 ; 143 | .data : 144 | { 145 | *(.data .data.* .gnu.linkonce.d.*) 146 | SORT(CONSTRUCTORS) 147 | } 148 | .data1 : { *(.data1) } 149 | _edata = .; PROVIDE (edata = .); 150 | . = .; 151 | __bss_start = .; 152 | .bss : 153 | { 154 | *(.dynbss) 155 | *(.bss .bss.* .gnu.linkonce.b.*) 156 | *(COMMON) 157 | /* Align here to ensure that the .bss section occupies space up to 158 | _end. Align after .bss to ensure correct alignment even if the 159 | .bss section disappears because there are no input sections. 160 | FIXME: Why do we need it? When there is no .bss section, we don't 161 | pad the .data section. */ 162 | . = ALIGN(. != 0 ? 32 / 8 : 1); 163 | } 164 | . = ALIGN(32 / 8); 165 | . = ALIGN(32 / 8); 166 | _end = .; PROVIDE (end = .); 167 | . = DATA_SEGMENT_END (.); 168 | /* Stabs debugging sections. */ 169 | .stab 0 : { *(.stab) } 170 | .stabstr 0 : { *(.stabstr) } 171 | .stab.excl 0 : { *(.stab.excl) } 172 | .stab.exclstr 0 : { *(.stab.exclstr) } 173 | .stab.index 0 : { *(.stab.index) } 174 | .stab.indexstr 0 : { *(.stab.indexstr) } 175 | .comment 0 : { *(.comment) } 176 | /* DWARF debug sections. 177 | Symbols in the DWARF debugging sections are relative to the beginning 178 | of the section so we begin them at 0. */ 179 | /* DWARF 1 */ 180 | .debug 0 : { *(.debug) } 181 | .line 0 : { *(.line) } 182 | /* GNU DWARF 1 extensions */ 183 | .debug_srcinfo 0 : { *(.debug_srcinfo) } 184 | .debug_sfnames 0 : { *(.debug_sfnames) } 185 | /* DWARF 1.1 and DWARF 2 */ 186 | .debug_aranges 0 : { *(.debug_aranges) } 187 | .debug_pubnames 0 : { *(.debug_pubnames) } 188 | /* DWARF 2 */ 189 | .debug_info 0 : { *(.debug_info .gnu.linkonce.wi.*) } 190 | .debug_abbrev 0 : { *(.debug_abbrev) } 191 | .debug_line 0 : { *(.debug_line) } 192 | .debug_frame 0 : { *(.debug_frame) } 193 | .debug_str 0 : { *(.debug_str) } 194 | .debug_loc 0 : { *(.debug_loc) } 195 | .debug_macinfo 0 : { *(.debug_macinfo) } 196 | /* SGI/MIPS DWARF 2 extensions */ 197 | .debug_weaknames 0 : { *(.debug_weaknames) } 198 | .debug_funcnames 0 : { *(.debug_funcnames) } 199 | .debug_typenames 0 : { *(.debug_typenames) } 200 | .debug_varnames 0 : { *(.debug_varnames) } 201 | /* DWARF 3 */ 202 | .debug_pubtypes 0 : { *(.debug_pubtypes) } 203 | .debug_ranges 0 : { *(.debug_ranges) } 204 | /* DWARF Extension. */ 205 | .debug_macro 0 : { *(.debug_macro) } 206 | .gnu.attributes 0 : { KEEP (*(.gnu.attributes)) } 207 | /DISCARD/ : { *(.note.GNU-stack) *(.gnu_debuglink) *(.gnu.lto_*) *(.gnu_object_only) } 208 | } 209 | -------------------------------------------------------------------------------- /linker/verbose: -------------------------------------------------------------------------------- 1 | Using built-in specs. 2 | COLLECT_GCC=/usr/bin/gcc 3 | COLLECT_LTO_WRAPPER=/usr/libexec/gcc/i686-redhat-linux/4.8.3/lto-wrapper 4 | Target: i686-redhat-linux 5 | Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --enable-java-awt=gtk --disable-dssi --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre --enable-libgcj-multifile --enable-java-maintainer-mode --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --disable-libjava-multilib --with-isl=/builddir/build/BUILD/gcc-4.8.3-20140911/obj-i686-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.3-20140911/obj-i686-redhat-linux/cloog-install --with-tune=generic --with-arch=i686 --build=i686-redhat-linux 6 | Thread model: posix 7 | gcc version 4.8.3 20140911 (Red Hat 4.8.3-7) (GCC) 8 | COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686' 9 | /usr/libexec/gcc/i686-redhat-linux/4.8.3/cc1 -quiet -v simple.c -quiet -dumpbase simple.c -mtune=generic -march=i686 -auxbase simple -version -o /tmp/cc00y1hW.s 10 | GNU C (GCC) version 4.8.3 20140911 (Red Hat 4.8.3-7) (i686-redhat-linux) 11 | compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1 12 | GGC heuristics: --param ggc-min-expand=97 --param ggc-min-heapsize=127004 13 | ignoring nonexistent directory "/usr/lib/gcc/i686-redhat-linux/4.8.3/include-fixed" 14 | ignoring nonexistent directory "/usr/lib/gcc/i686-redhat-linux/4.8.3/../../../../i686-redhat-linux/include" 15 | #include "..." search starts here: 16 | #include <...> search starts here: 17 | /usr/lib/gcc/i686-redhat-linux/4.8.3/include 18 | /usr/local/include 19 | /usr/include 20 | End of search list. 21 | GNU C (GCC) version 4.8.3 20140911 (Red Hat 4.8.3-7) (i686-redhat-linux) 22 | compiled by GNU C version 4.8.3 20140911 (Red Hat 4.8.3-7), GMP version 5.1.2, MPFR version 3.1.2, MPC version 1.0.1 23 | GGC heuristics: --param ggc-min-expand=97 --param ggc-min-heapsize=127004 24 | Compiler executable checksum: 46bc6b8c33cb707f242c3649f1bd7272 25 | COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686' 26 | as -v --32 -o /tmp/ccEZwSgF.o /tmp/cc00y1hW.s 27 | GNU assembler version 2.23.2 (i686-redhat-linux) using BFD version version 2.23.2 28 | COMPILER_PATH=/usr/libexec/gcc/i686-redhat-linux/4.8.3/:/usr/libexec/gcc/i686-redhat-linux/4.8.3/:/usr/libexec/gcc/i686-redhat-linux/:/usr/lib/gcc/i686-redhat-linux/4.8.3/:/usr/lib/gcc/i686-redhat-linux/ 29 | LIBRARY_PATH=/usr/lib/gcc/i686-redhat-linux/4.8.3/:/usr/lib/gcc/i686-redhat-linux/4.8.3/../../../:/lib/:/usr/lib/ 30 | COLLECT_GCC_OPTIONS='-v' '-mtune=generic' '-march=i686' 31 | /usr/libexec/gcc/i686-redhat-linux/4.8.3/collect2 --build-id --no-add-needed --eh-frame-hdr --hash-style=gnu -m elf_i386 -dynamic-linker /lib/ld-linux.so.2 /usr/lib/gcc/i686-redhat-linux/4.8.3/../../../crt1.o /usr/lib/gcc/i686-redhat-linux/4.8.3/../../../crti.o /usr/lib/gcc/i686-redhat-linux/4.8.3/crtbegin.o -L/usr/lib/gcc/i686-redhat-linux/4.8.3 -L/usr/lib/gcc/i686-redhat-linux/4.8.3/../../.. /tmp/ccEZwSgF.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --no-as-needed /usr/lib/gcc/i686-redhat-linux/4.8.3/crtend.o /usr/lib/gcc/i686-redhat-linux/4.8.3/../../../crtn.o 32 | -------------------------------------------------------------------------------- /lxc-my.conf: -------------------------------------------------------------------------------- 1 | # Container with network virtualized using the macvlan device driver 2 | lxc.utsname = alpha 3 | lxc.network.type = macvlan 4 | lxc.network.flags = up 5 | lxc.network.link = p3p1 6 | lxc.network.hwaddr = 4a:49:43:49:79:bd 7 | lxc.network.ipv4 = 10.2.3.4/24 8 | lxc.network.ipv6 = 2003:db8:1:0:214:1234:fe0b:3596 9 | 10 | lxc.cgroup.memory.limit_in_bytes = 3M 11 | lxc.cgroup.memory.memsw.limit_in_bytes = 3M 12 | 13 | -------------------------------------------------------------------------------- /memrestrict.c: -------------------------------------------------------------------------------- 1 | #define _GNU_SOURCE // Needed for RTLD_NEXT 2 | 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include 11 | 12 | static void* (*libc_malloc) (size_t) = NULL; 13 | static void* (*libc_calloc) (size_t, size_t) = NULL; 14 | static void* (*libc_realloc)(void *, size_t) = NULL; 15 | static void (*libc_free) (void *) = NULL; 16 | static void* (*libc_mmap)(void *, size_t, int, int, int, off_t) = NULL; 17 | static void* (*libc_mmap2)(void *, size_t, int, int, int, off_t) = NULL; 18 | static void* (*libc_mremap)(void *, size_t, size_t, int, ...) = NULL; 19 | static int (*libc_brk)(void *) = NULL; 20 | static void* (*libc_sbrk)(intptr_t) = NULL; 21 | 22 | struct malloc_item 23 | { 24 | void *p; 25 | size_t size; 26 | UT_hash_handle hh; // makes this structure hashable 27 | }; 28 | 29 | // Hash table for accounting malloc/free 30 | struct malloc_item *HT = NULL; 31 | 32 | // Total memory allocated 33 | static unsigned long mem_allocated = 0; 34 | static unsigned long mem_threshold = 0; 35 | 36 | #define DEFAULT_MEM_THRESHOLD 2 * 1048576 // Default threshold is 2 MiB; 37 | 38 | // Thread-local var to prevent malloc/free recursion 39 | static __thread int no_hook; 40 | 41 | static int DEBUG = -1; 42 | #define log(M, ...) do {\ 43 | if (DEBUG) { fprintf(stderr, "MEMRESTRICT:%d " M "\n", __LINE__, ##__VA_ARGS__); }\ 44 | } while(0) 45 | 46 | // Wrapper to save original libc functions to global var 47 | #define SAVE_LIBC_FUNC(var, f) do { \ 48 | var = dlsym(RTLD_NEXT, f);\ 49 | if (NULL == var) \ 50 | perror("dlsym");\ 51 | } while(0) 52 | 53 | 54 | static void account_alloc(void *ptr, size_t size) 55 | { 56 | // Do not account itself 57 | no_hook = 1; 58 | 59 | // Allocating memory 60 | if (size != 0) { 61 | struct malloc_item *item, *out; 62 | 63 | item = malloc(sizeof(*item)); 64 | item->p = ptr; 65 | item->size = size; 66 | 67 | HASH_ADD_PTR(HT, p, item); 68 | 69 | mem_allocated += size; 70 | 71 | log("Alloc: %p -> %zu\n", ptr, size); 72 | } 73 | // Freeing memory 74 | else { 75 | struct malloc_item *found; 76 | 77 | HASH_FIND_PTR(HT, &ptr, found); 78 | if (found) { 79 | mem_allocated -= found->size; 80 | log("Free: %p -> %zu\n", found->p, found->size); 81 | HASH_DEL(HT, found); 82 | free(found); 83 | } else { 84 | log("Freeing unaccounted allocation %p\n", ptr); 85 | } 86 | } 87 | 88 | log(" [[[::: %d (%u) :::]]] \n", mem_allocated, HASH_COUNT(HT)); 89 | 90 | no_hook = 0; 91 | } 92 | 93 | 94 | static void account_realloc(void *p, void *ptr, size_t size) 95 | { 96 | // Do not account itself 97 | no_hook = 1; 98 | 99 | // ptr == NULL is equivalent to malloc(size) 100 | if (ptr == NULL) { 101 | account_alloc(p, size); 102 | } 103 | // size == 0 is equivalent to free(ptr), 104 | // and p will be NULL 105 | else if (size == 0) { 106 | account_alloc(ptr, size); 107 | } 108 | // Now the real realloc 109 | else { 110 | log("Realloc: %p -> %d\n", ptr, size); 111 | 112 | // if ptr was moved previous area will be freed 113 | if (p != ptr) { 114 | log("Realloc: Replacing pointer %p to %p\n", ptr, p); 115 | account_alloc(ptr, 0); 116 | account_alloc(p, size); 117 | } else { 118 | struct malloc_item *found; 119 | int alloc_diff; 120 | 121 | HASH_FIND_PTR(HT, &ptr, found); 122 | if (found) { 123 | // alloc_diff may be negative when shrinking memory 124 | alloc_diff = size - found->size; 125 | 126 | mem_allocated += alloc_diff; 127 | found->size += alloc_diff; 128 | log("Realloc: diff %p -> %d\n", ptr, alloc_diff); 129 | } else { 130 | log("Reallocating unaccounted pointer %p\n", ptr); 131 | } 132 | } 133 | } 134 | 135 | log(" [[[::: %d (%u) :::]]] \n", mem_allocated, HASH_COUNT(HT)); 136 | 137 | no_hook = 0; 138 | } 139 | 140 | 141 | // Initialize library parameters from environment. 142 | // We don't have main(), so we have to call it in every callback. 143 | static inline void init_env() 144 | { 145 | char *t; 146 | 147 | if (mem_threshold == 0) { 148 | t = secure_getenv("MR_THRESHOLD"); 149 | if (t) 150 | mem_threshold = strtol(t, NULL, 0); 151 | else 152 | mem_threshold = DEFAULT_MEM_THRESHOLD; 153 | } 154 | 155 | if (DEBUG == -1) { 156 | t = secure_getenv("MR_DEBUG"); 157 | if (t) 158 | DEBUG = strtol(t, NULL, 0); 159 | else 160 | DEBUG = 0; 161 | } 162 | } 163 | 164 | 165 | void *malloc(size_t size) 166 | { 167 | void *p = NULL; 168 | 169 | if (libc_malloc == NULL) 170 | SAVE_LIBC_FUNC(libc_malloc, "malloc"); 171 | 172 | init_env(); 173 | 174 | if (mem_allocated + size <= mem_threshold) { 175 | p = libc_malloc(size); 176 | } else { 177 | log("Restricting malloc of %zu bytes\n", size); 178 | errno = ENOMEM; 179 | return NULL; 180 | } 181 | 182 | if (!no_hook) 183 | account_alloc(p, size); 184 | 185 | return p; 186 | } 187 | 188 | 189 | void *calloc(size_t nmemb, size_t size) 190 | { 191 | void *p = NULL; 192 | 193 | if (libc_calloc == NULL) 194 | SAVE_LIBC_FUNC(libc_calloc, "calloc"); 195 | 196 | init_env(); 197 | 198 | if (mem_allocated + nmemb * size <= mem_threshold) { 199 | p = libc_calloc(nmemb, size); 200 | } else { 201 | log("Restricting calloc of %zu elements per %zu size\n", nmemb, size); 202 | errno = ENOMEM; 203 | return NULL; 204 | } 205 | 206 | if (!no_hook) 207 | account_alloc(p, nmemb * size); 208 | 209 | return p; 210 | } 211 | 212 | 213 | void *realloc(void *ptr, size_t size) 214 | { 215 | void *p = NULL; 216 | 217 | if (libc_realloc == NULL) 218 | SAVE_LIBC_FUNC(libc_realloc, "realloc"); 219 | 220 | init_env(); 221 | 222 | // TODO: CHECK new heap size *before* allowing realloc 223 | if (mem_allocated <= mem_threshold) { 224 | p = libc_realloc(ptr, size); 225 | } else { 226 | errno = ENOMEM; 227 | return NULL; 228 | } 229 | 230 | if (!no_hook) 231 | account_realloc(p, ptr, size); 232 | 233 | return p; 234 | } 235 | 236 | 237 | void free(void *ptr) 238 | { 239 | if (libc_free == NULL) 240 | SAVE_LIBC_FUNC(libc_free, "free"); 241 | 242 | init_env(); 243 | 244 | libc_free(ptr); 245 | 246 | if (!no_hook) 247 | account_alloc(ptr, 0); 248 | } 249 | 250 | void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset) 251 | { 252 | void *p; 253 | 254 | log("mmap for %p of length %zu prot %d flags %d fd %d offset %lld\n", 255 | addr, length, prot, flags, fd, offset); 256 | 257 | if (libc_mmap == NULL) 258 | SAVE_LIBC_FUNC(libc_mmap, "mmap"); 259 | 260 | p = libc_mmap(addr, length, prot, flags, fd, offset); 261 | return p; 262 | } 263 | 264 | void *mmap2(void *addr, size_t length, int prot, int flags, int fd, off_t pgoffset) 265 | { 266 | void *p; 267 | 268 | log("mmap2 for %p of length %zu prot %d flags %d fd %d pgoffset %lld\n", 269 | addr, length, prot, flags, fd, pgoffset); 270 | 271 | if (libc_mmap2 == NULL) 272 | SAVE_LIBC_FUNC(libc_mmap2, "mmap2"); 273 | 274 | p = libc_mmap2(addr, length, prot, flags, fd, pgoffset); 275 | return p; 276 | } 277 | 278 | void *mremap(void *old_address, size_t old_size, size_t new_size, int flags, ...) 279 | { 280 | va_list ap; 281 | void *new_address; 282 | void *p; 283 | 284 | log("mremap for %p of size %zu, new_size %zu, flags %d\n", 285 | old_address, old_size, new_size, flags); 286 | 287 | if (libc_mremap == NULL) 288 | SAVE_LIBC_FUNC(libc_mremap, "mremap"); 289 | 290 | va_start(ap, flags); 291 | new_address = va_arg(ap, void *); 292 | va_end(ap); 293 | 294 | p = libc_mremap(old_address, old_size, new_size, flags, new_address); 295 | return p; 296 | } 297 | 298 | int brk(void *addr) 299 | { 300 | int ret; 301 | 302 | log("brk set to %p\n", addr); 303 | if (libc_brk == NULL) 304 | SAVE_LIBC_FUNC(libc_brk, "brk"); 305 | 306 | ret = libc_brk(addr); 307 | return ret; 308 | } 309 | 310 | void *sbrk(intptr_t increment) 311 | { 312 | void *p; 313 | 314 | log("sbrk increment %d\n", increment); 315 | if (libc_sbrk == NULL) 316 | SAVE_LIBC_FUNC(libc_sbrk, "sbrk"); 317 | 318 | p = sbrk(increment); 319 | return p; 320 | } 321 | 322 | -------------------------------------------------------------------------------- /ptrace-restrict.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | 7 | #include 8 | #include 9 | #include 10 | #include 11 | #include 12 | 13 | #define THRESHOLD 2*1048576 // 2 MiB threshold 14 | bool threshold = false; // Global flag indicating if threshold exceeded. 15 | 16 | static int debug = 0; 17 | #define dbg(...) do {\ 18 | if (debug) \ 19 | fprintf(stderr, __VA_ARGS__);\ 20 | }while(0); 21 | 22 | // Invoke ptrace to trace syscall and fill regs state 23 | int syscall_trace(pid_t pid, struct user_regs_struct *state) 24 | { 25 | int status; 26 | 27 | ptrace(PTRACE_SYSCALL, pid, 0, 0); 28 | waitpid(pid, &status, 0); 29 | if (WIFSTOPPED(status) && WSTOPSIG(status) & 0x80) 30 | { 31 | ptrace(PTRACE_GETREGS, pid, 0, state); 32 | return 0; 33 | } 34 | else if (WIFEXITED(status)) 35 | { 36 | exit(0); 37 | } 38 | else 39 | { 40 | return EINVAL; 41 | } 42 | } 43 | 44 | // Handle brk syscall. 45 | // 46 | // It checks the difference between initial brk value and current return value 47 | // and if that difference exceeded threshold it sets global threshold flag (for 48 | // subsequent mmap calls) and returns -ENOMEM for syscall. 49 | void handle_brk(pid_t pid, struct user_regs_struct state) 50 | { 51 | int status; 52 | static long int brk_start = 0; 53 | long int diff = 0; 54 | 55 | dbg("brk addr 0x%08X\n", state.ebx); 56 | 57 | // Get return value 58 | if (!syscall_trace(pid, &state)) 59 | { 60 | dbg("brk return: 0x%08X, brk_start 0x%08X\n", state.eax, brk_start); 61 | 62 | if (brk_start) // We have start of brk 63 | { 64 | diff = state.eax - brk_start; 65 | 66 | // If child process exceeded threshold 67 | // replace brk return value with -ENOMEM 68 | if (diff > THRESHOLD || threshold) 69 | { 70 | dbg("THRESHOLD!\n"); 71 | threshold = true; 72 | state.eax = -ENOMEM; 73 | ptrace(PTRACE_SETREGS, pid, 0, &state); 74 | } 75 | else 76 | { 77 | dbg("diff 0x%08X\n", diff); 78 | } 79 | } 80 | else 81 | { 82 | dbg("Assigning 0x%08X to brk_start\n", state.eax); 83 | brk_start = state.eax; 84 | } 85 | } 86 | } 87 | 88 | // Handle mmap/mmap2 syscalls. 89 | // 90 | // It checks global threshold flag set by handle_brk. If it's set it will 91 | // replace mmap return value with ENOMEM. 92 | // 93 | // mmap/mmap2 is alternative syscall for malloc, invoked when brk returning 94 | // ENOMEM. 95 | void handle_mmap(pid_t pid, struct user_regs_struct state) 96 | { 97 | dbg("mmap call, ebx 0x%08X, ecx 0x%08X\n", state.ebx, state.ecx); 98 | 99 | // Get return value 100 | if (!syscall_trace(pid, &state)) 101 | { 102 | dbg("mmap return (threshold %d), eax 0x%08X, ebx 0x%08X\n", threshold, state.eax, state.ebx); 103 | 104 | // mmap will be called when brk return ENOMEM, 105 | // thus we must fail mmap too with -ENOMEM 106 | if (threshold) 107 | { 108 | state.eax = -ENOMEM; 109 | ptrace(PTRACE_SETREGS, pid, 0, &state); 110 | } 111 | } 112 | } 113 | 114 | // Parent process 115 | int tracer(pid_t pid) 116 | { 117 | int status; 118 | 119 | // Wait for child process and set sane ptrace options 120 | waitpid(pid, &status, 0); 121 | ptrace(PTRACE_SETOPTIONS, pid, 0, PTRACE_O_TRACESYSGOOD); 122 | 123 | // Trace until child exited. 124 | // There is another exit in syscall_trace() (FIXME) 125 | while (!WIFEXITED(status)) 126 | { 127 | struct user_regs_struct state; 128 | 129 | if (!syscall_trace(pid, &state)) 130 | { 131 | switch (state.orig_eax) 132 | { 133 | case SYS_brk: 134 | handle_brk(pid, state); 135 | break; 136 | 137 | case SYS_mmap: 138 | case SYS_mmap2: 139 | handle_mmap(pid, state); 140 | break; 141 | 142 | default: 143 | break; 144 | } 145 | } 146 | } 147 | 148 | return 0; 149 | } 150 | 151 | // Child process function 152 | int tracee(char *path, char *argv[]) 153 | { 154 | ptrace(PTRACE_TRACEME, 0, 0, 0); 155 | return execv(path, argv); 156 | } 157 | 158 | void usage() 159 | { 160 | printf("Usage: \n"); 161 | printf("%s [-d] \n\n"); 162 | printf(" -d : print debug output\n"); 163 | } 164 | 165 | int main(int argc, char *argv[]) 166 | { 167 | int opt; 168 | while ((opt = getopt(argc, argv, "d")) != -1) 169 | { 170 | switch (opt) 171 | { 172 | case 'd': 173 | debug = 1; 174 | break; 175 | default: 176 | perror("getopt"); 177 | usage(); 178 | exit(1); 179 | } 180 | } 181 | argv += optind; 182 | 183 | pid_t pid = fork(); 184 | if (pid) 185 | return tracer(pid); 186 | else 187 | return tracee(argv[0], argv + 1); 188 | } 189 | 190 | 191 | // vim: ts=4: sw=4: noexpandtab 192 | -------------------------------------------------------------------------------- /vg-wrap.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | LD_PRELOAD=./libmemrestrict.so ./big_alloc 3 | --------------------------------------------------------------------------------