From fcc161e70502caf34bc0206d2c428e8341e97fa6 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Sun, 24 May 2020 22:43:18 -0700 Subject: 6397 Drop '---' section boundaries from filenames. I noticed them confusing tab-completion for certain advanced shell setups. --- html/012elf.cc.html | 52 ++++++++++++++++++++++++++-------------------------- 1 file changed, 26 insertions(+), 26 deletions(-) (limited to 'html/012elf.cc.html') diff --git a/html/012elf.cc.html b/html/012elf.cc.html index cb370731..b6d04368 100644 --- a/html/012elf.cc.html +++ b/html/012elf.cc.html @@ -75,9 +75,9 @@ if ('onhashchange' in window) { 14 reset(); 15 cerr << std::hex; 16 load_elf(argv[2], argc, argv); - 17 while (EIP < End_of_program) // weak final-gasp termination check - 18 run_one_instruction(); - 19 raise << "executed past end of the world: " << EIP << " vs " << End_of_program << '\n' << end(); + 17 while (EIP < End_of_program) // weak final-gasp termination check + 18 run_one_instruction(); + 19 raise << "executed past end of the world: " << EIP << " vs " << End_of_program << '\n' << end(); 20 return 1; 21 } 22 @@ -107,7 +107,7 @@ if ('onhashchange' in window) { 46 // unused: remaining 10 bytes of e_ident 47 uint32_t e_machine_type = u32_in(&elf_contents[16]); 48 if (e_machine_type != 0x00030002) - 49 raise << "ELF type/machine 0x" << HEXWORD << e_machine_type << " isn't i386 executable\n" << die(); + 49 raise << "ELF type/machine 0x" << HEXWORD << e_machine_type << " isn't i386 executable\n" << die(); 50 // unused: e_version. We only support version 1, and later versions will be backwards compatible. 51 uint32_t e_entry = u32_in(&elf_contents[24]); 52 uint32_t e_phoff = u32_in(&elf_contents[28]); @@ -128,41 +128,41 @@ if ('onhashchange' in window) { 67 68 // initialize code and stack 69 assert(overlap.find(STACK_SEGMENT) == overlap.end()); - 70 Mem.push_back(vma(STACK_SEGMENT)); + 70 Mem.push_back(vma(STACK_SEGMENT)); 71 assert(overlap.find(AFTER_STACK) == overlap.end()); 72 // The stack grows downward. - 73 Reg[ESP].u = AFTER_STACK; - 74 Reg[EBP].u = 0; - 75 EIP = e_entry; + 73 Reg[ESP].u = AFTER_STACK; + 74 Reg[EBP].u = 0; + 75 EIP = e_entry; 76 77 // initialize args on stack 78 // no envp for now 79 // we wastefully use a separate page of memory for argv - 80 Mem.push_back(vma(ARGV_DATA_SEGMENT)); + 80 Mem.push_back(vma(ARGV_DATA_SEGMENT)); 81 uint32_t argv_data = ARGV_DATA_SEGMENT; 82 for (int i = argc-1; i >= /*skip 'subx_bin' and 'run'*/2; --i) { 83 push(argv_data); 84 for (size_t j = 0; j <= strlen(argv[i]); ++j) { 85 assert(overlap.find(argv_data) == overlap.end()); // don't bother comparing ARGV and STACK - 86 write_mem_u8(argv_data, argv[i][j]); + 86 write_mem_u8(argv_data, argv[i][j]); 87 argv_data += sizeof(char); - 88 assert(argv_data < ARGV_DATA_SEGMENT + SEGMENT_ALIGNMENT); + 88 assert(argv_data < ARGV_DATA_SEGMENT + SEGMENT_ALIGNMENT); 89 } 90 } 91 push(argc-/*skip 'subx_bin' and 'run'*/2); 92 } 93 94 void push(uint32_t val) { - 95 Reg[ESP].u -= 4; - 96 if (Reg[ESP].u < STACK_SEGMENT) { + 95 Reg[ESP].u -= 4; + 96 if (Reg[ESP].u < STACK_SEGMENT) { 97 raise << "The stack overflowed its segment. " 98 << "Maybe SPACE_FOR_SEGMENT should be larger? " 99 << "Or you need to carve out an exception for the stack segment " 100 << "to be larger.\n" << die(); 101 } -102 trace(Callstack_depth+1, "run") << "decrementing ESP to 0x" << HEXWORD << Reg[ESP].u << end(); -103 trace(Callstack_depth+1, "run") << "pushing value 0x" << HEXWORD << val << end(); -104 write_mem_u32(Reg[ESP].u, val); +102 trace(Callstack_depth+1, "run") << "decrementing ESP to 0x" << HEXWORD << Reg[ESP].u << end(); +103 trace(Callstack_depth+1, "run") << "pushing value 0x" << HEXWORD << val << end(); +104 write_mem_u32(Reg[ESP].u, val); 105 } 106 107 void load_segment_from_program_header(uint8_t* elf_contents, int segment_index, size_t size, uint32_t offset, uint32_t e_ehsize, set<uint32_t>& overlap) { @@ -183,20 +183,20 @@ if ('onhashchange' in window) { 122 123 if (p_offset + p_filesz > size) 124 raise << "Invalid binary; segment at offset " << offset << " is too large: wants to end at " << p_offset+p_filesz << " but the file ends at " << size << '\n' << die(); -125 if (p_memsz >= SEGMENT_ALIGNMENT) { +125 if (p_memsz >= SEGMENT_ALIGNMENT) { 126 raise << "Code segment too small for SubX; for now please manually increase SEGMENT_ALIGNMENT.\n" << end(); 127 return; 128 } 129 trace(90, "load") << "blitting file offsets (" << p_offset << ", " << (p_offset+p_filesz) << ") to addresses (" << p_vaddr << ", " << (p_vaddr+p_memsz) << ')' << end(); 130 if (size > p_memsz) size = p_memsz; -131 Mem.push_back(vma(p_vaddr)); +131 Mem.push_back(vma(p_vaddr)); 132 for (size_t i = 0; i < p_filesz; ++i) { 133 assert(overlap.find(p_vaddr+i) == overlap.end()); -134 write_mem_u8(p_vaddr+i, elf_contents[p_offset+i]); +134 write_mem_u8(p_vaddr+i, elf_contents[p_offset+i]); 135 overlap.insert(p_vaddr+i); 136 } -137 if (segment_index == 0 && End_of_program < p_vaddr+p_memsz) -138 End_of_program = p_vaddr+p_memsz; +137 if (segment_index == 0 && End_of_program < p_vaddr+p_memsz) +138 End_of_program = p_vaddr+p_memsz; 139 } 140 141 :(before "End Includes") @@ -221,11 +221,11 @@ if ('onhashchange' in window) { 160 void dump_stack() { 161 ostringstream out; 162 trace(Callstack_depth+1, "run") << "stack:" << end(); -163 for (uint32_t a = AFTER_STACK-4; a > Reg[ESP].u; a -= 4) -164 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); -165 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << Reg[ESP].u << " => 0x" << HEXWORD << read_mem_u32(Reg[ESP].u) << " <=== ESP" << end(); -166 for (uint32_t a = Reg[ESP].u-4; a > Reg[ESP].u-40; a -= 4) -167 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); +163 for (uint32_t a = AFTER_STACK-4; a > Reg[ESP].u; a -= 4) +164 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); +165 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << Reg[ESP].u << " => 0x" << HEXWORD << read_mem_u32(Reg[ESP].u) << " <=== ESP" << end(); +166 for (uint32_t a = Reg[ESP].u-4; a > Reg[ESP].u-40; a -= 4) +167 trace(Callstack_depth+2, "run") << " 0x" << HEXWORD << a << " => 0x" << HEXWORD << read_mem_u32(a) << end(); 168 } 169 170 inline uint32_t u32_in(uint8_t* p) { -- cgit 1.4.1-2-gfad0