//\r
-// Copyright (c) 2008-2009, Apple Inc. All rights reserved.\r
-// \r
-// All rights reserved. This program and the accompanying materials\r
+// Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+//\r
+// This program and the accompanying materials\r
// are licensed and made available under the terms and conditions of the BSD License\r
// which accompanies this distribution. The full text of the license may be found at\r
// http://opensource.org/licenses/bsd-license.php\r
unsigned long mem_size;\r
{\r
unsigned char *mem_ptr;\r
- \r
+\r
mem_ptr = mem_start + mem_size;\r
- \r
+\r
do\r
{\r
mem_ptr -= 0x400000; // 4 MB\r
- \r
+\r
if (strncmp(mem_ptr, "IBI SYST", 8) == 0)\r
{\r
return *(unsigned long *)(mem_ptr + 8); // EfiSystemTableBase\r
- } \r
- \r
+ }\r
+\r
} while (mem_ptr > mem_start);\r
- \r
+\r
return 0;\r
}\r
.\r
unsigned char *configuration_table;\r
unsigned long index;\r
unsigned char debug_table_guid[16];\r
- \r
+\r
// Fill in the debug table's guid\r
debug_table_guid[ 0] = 0x77;\r
debug_table_guid[ 1] = 0x2E;\r
debug_table_guid[13] = 0xD9;\r
debug_table_guid[14] = 0x5E;\r
debug_table_guid[15] = 0x8B;\r
- \r
+\r
configuration_table_entries = *(unsigned long *)(system_table + 64);\r
configuration_table = *(unsigned long *)(system_table + 68);\r
- \r
+\r
for (index = 0; index < configuration_table_entries; index++)\r
{\r
if (compare_guid(configuration_table, debug_table_guid) == 0)\r
{\r
return *(unsigned long *)(configuration_table + 16);\r
}\r
- \r
+\r
configuration_table += 20;\r
}\r
- \r
+\r
return 0;\r
}\r
.\r
{\r
return 1;\r
}\r
- \r
+\r
return 0;\r
}\r
.\r
unsigned char *header;\r
{\r
unsigned long *size;\r
- \r
+\r
size = header + 0x00AC;\r
- \r
+\r
return *size;\r
}\r
.\r
{\r
unsigned long *debugOffset;\r
unsigned char *stringOffset;\r
- \r
+\r
if (valid_pe_header(header))\r
{\r
debugOffset = header + 0x0128;\r
stringOffset = header + *debugOffset + 0x002C;\r
- \r
+\r
return stringOffset;\r
}\r
- \r
+\r
return 0;\r
}\r
.\r
define /R write_symbols_file(filename, mem_start, mem_size)\r
unsigned char *filename;\r
unsigned char *mem_start;\r
- unsigned long mem_size; \r
+ unsigned long mem_size;\r
{\r
unsigned char *system_table;\r
unsigned char *debug_info_table_header;\r
unsigned char *debug_filename;\r
unsigned long header_size;\r
int status;\r
- \r
+\r
system_table = find_system_table(mem_start, mem_size);\r
if (system_table == 0)\r
{\r
return;\r
}\r
- \r
+\r
status = fopen(88, filename, "w");\r
- \r
+\r
debug_info_table_header = find_debug_info_table_header(system_table);\r
- \r
+\r
debug_info_table = *(unsigned long *)(debug_info_table_header + 8);\r
debug_info_table_size = *(unsigned long *)(debug_info_table_header + 4);\r
- \r
+\r
for (index = 0; index < (debug_info_table_size * 4); index += 4)\r
{\r
- debug_image_info = *(unsigned long *)(debug_info_table + index); \r
- \r
+ debug_image_info = *(unsigned long *)(debug_info_table + index);\r
+\r
if (debug_image_info == 0)\r
{\r
break;\r
}\r
- \r
+\r
loaded_image_protocol = *(unsigned long *)(debug_image_info + 4);\r
- \r
+\r
image_base = *(unsigned long *)(loaded_image_protocol + 32);\r
- \r
+\r
debug_filename = pe_filename(image_base);\r
header_size = pe_headersize(image_base);\r
- \r
+\r
$fprintf 88, "%s 0x%08x\n", debug_filename, image_base + header_size$;\r
}\r
- \r
- \r
+\r
+\r
fclose(88);\r
}\r
.\r