| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright 2008 The Native Client Authors. All rights reserved. | 2 * Copyright 2008 The Native Client Authors. All rights reserved. |
| 3 * Use of this source code is governed by a BSD-style license that can | 3 * Use of this source code is governed by a BSD-style license that can |
| 4 * be found in the LICENSE file. | 4 * be found in the LICENSE file. |
| 5 */ | 5 */ |
| 6 | 6 |
| 7 #include <string.h> | 7 #include <string.h> |
| 8 | 8 |
| 9 /* | 9 /* |
| 10 * NaCl Simple/secure ELF loader (NaCl SEL). | 10 * NaCl Simple/secure ELF loader (NaCl SEL). |
| (...skipping 343 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 354 } | 354 } |
| 355 | 355 |
| 356 void NaClMemRegionPrinter(void *state, | 356 void NaClMemRegionPrinter(void *state, |
| 357 struct NaClVmmapEntry *entry) { | 357 struct NaClVmmapEntry *entry) { |
| 358 struct Gio *gp = (struct Gio *) state; | 358 struct Gio *gp = (struct Gio *) state; |
| 359 | 359 |
| 360 gprintf(gp, "\nPage %"NACL_PRIdPTR" (0x%"NACL_PRIxPTR")\n", | 360 gprintf(gp, "\nPage %"NACL_PRIdPTR" (0x%"NACL_PRIxPTR")\n", |
| 361 entry->page_num, entry->page_num); | 361 entry->page_num, entry->page_num); |
| 362 gprintf(gp, "npages %"NACL_PRIdS" (0x%"NACL_PRIxS")\n", entry->npages, | 362 gprintf(gp, "npages %"NACL_PRIdS" (0x%"NACL_PRIxS")\n", entry->npages, |
| 363 entry->npages); | 363 entry->npages); |
| 364 gprintf(gp, "start vaddr 0x%"NACL_PRIxPTR"\n", |
| 365 entry->page_num << NACL_PAGESHIFT); |
| 366 gprintf(gp, "end vaddr 0x%"NACL_PRIxPTR"\n", |
| 367 (entry->page_num + entry->npages) << NACL_PAGESHIFT); |
| 364 gprintf(gp, "prot 0x%08x\n", entry->prot); | 368 gprintf(gp, "prot 0x%08x\n", entry->prot); |
| 365 gprintf(gp, "%sshared/backed by a file\n", | 369 gprintf(gp, "%sshared/backed by a file\n", |
| 366 (NULL == entry->nmop) ? "not " : ""); | 370 (NULL == entry->nmop) ? "not " : ""); |
| 367 } | 371 } |
| 368 | 372 |
| 369 void NaClAppPrintDetails(struct NaClApp *nap, | 373 void NaClAppPrintDetails(struct NaClApp *nap, |
| 370 struct Gio *gp) { | 374 struct Gio *gp) { |
| 371 NaClXMutexLock(&nap->mu); | 375 NaClXMutexLock(&nap->mu); |
| 372 gprintf(gp, | 376 gprintf(gp, |
| 373 "NaClAppPrintDetails((struct NaClApp *) 0x%08"NACL_PRIxPTR"," | 377 "NaClAppPrintDetails((struct NaClApp *) 0x%08"NACL_PRIxPTR"," |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 459 return "Read-only data segment overlaps data segment"; | 463 return "Read-only data segment overlaps data segment"; |
| 460 case LOAD_DATA_NOT_LAST_SEGMENT: | 464 case LOAD_DATA_NOT_LAST_SEGMENT: |
| 461 return "Data segment exists, but is not last segment"; | 465 return "Data segment exists, but is not last segment"; |
| 462 case LOAD_NO_DATA_BUT_RODATA_NOT_LAST_SEGMENT: | 466 case LOAD_NO_DATA_BUT_RODATA_NOT_LAST_SEGMENT: |
| 463 return ("No data segment, read-only data segment exists," | 467 return ("No data segment, read-only data segment exists," |
| 464 " but is not last segment"); | 468 " but is not last segment"); |
| 465 case LOAD_TEXT_OVERLAPS_RODATA: | 469 case LOAD_TEXT_OVERLAPS_RODATA: |
| 466 return "Text segment overlaps rodata segment"; | 470 return "Text segment overlaps rodata segment"; |
| 467 case LOAD_TEXT_OVERLAPS_DATA: | 471 case LOAD_TEXT_OVERLAPS_DATA: |
| 468 return "No rodata segment, and text segment overlaps data segment"; | 472 return "No rodata segment, and text segment overlaps data segment"; |
| 473 case LOAD_BAD_RODATA_ALIGNMENT: |
| 474 return "The rodata segment is not properly aligned"; |
| 475 case LOAD_BAD_DATA_ALIGNMENT: |
| 476 return "The data segment is not properly aligned"; |
| 469 case LOAD_UNLOADABLE: | 477 case LOAD_UNLOADABLE: |
| 470 return "Error during loading"; | 478 return "Error during loading"; |
| 471 case LOAD_BAD_ELF_TEXT: | 479 case LOAD_BAD_ELF_TEXT: |
| 472 return "ELF file contains no text segment"; | 480 return "ELF file contains no text segment"; |
| 473 case LOAD_TEXT_SEG_TOO_BIG: | 481 case LOAD_TEXT_SEG_TOO_BIG: |
| 474 return "ELF file text segment too large"; | 482 return "ELF file text segment too large"; |
| 475 case LOAD_DATA_SEG_TOO_BIG: | 483 case LOAD_DATA_SEG_TOO_BIG: |
| 476 return "ELF file data segment(s) too large"; | 484 return "ELF file data segment(s) too large"; |
| 477 case LOAD_MPROTECT_FAIL: | 485 case LOAD_MPROTECT_FAIL: |
| 478 return "Cannot protect pages"; | 486 return "Cannot protect pages"; |
| (...skipping 674 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1153 nacl_global_xlate_base = mem_start; | 1161 nacl_global_xlate_base = mem_start; |
| 1154 | 1162 |
| 1155 #ifdef __GNUC__ | 1163 #ifdef __GNUC__ |
| 1156 _ovly_debug_event (); | 1164 _ovly_debug_event (); |
| 1157 #endif | 1165 #endif |
| 1158 } | 1166 } |
| 1159 | 1167 |
| 1160 void NaClGdbHook(struct NaClApp const *nap) { | 1168 void NaClGdbHook(struct NaClApp const *nap) { |
| 1161 StopForDebuggerInit(nap->mem_start); | 1169 StopForDebuggerInit(nap->mem_start); |
| 1162 } | 1170 } |
| OLD | NEW |