mirror of
				https://github.com/c64scene-ar/llvm-6502.git
				synced 2025-10-31 08:16:47 +00:00 
			
		
		
		
	llvm-symbolizer: correctly parse filenames given in quotes
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@178859 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
		| @@ -8,11 +8,11 @@ RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test2.elf-x86-64 \ | |||||||
| RUN:   --address=0x4004e8 --functions | FileCheck %s -check-prefix MANY_CU_1 | RUN:   --address=0x4004e8 --functions | FileCheck %s -check-prefix MANY_CU_1 | ||||||
| RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test2.elf-x86-64 \ | RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test2.elf-x86-64 \ | ||||||
| RUN:   --address=0x4004f4 --functions | FileCheck %s -check-prefix MANY_CU_2 | RUN:   --address=0x4004f4 --functions | FileCheck %s -check-prefix MANY_CU_2 | ||||||
| RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test3.elf-x86-64 \ | RUN: llvm-dwarfdump "%p/Inputs/dwarfdump-test3.elf-x86-64 space" \ | ||||||
| RUN:   --address=0x640 --functions | FileCheck %s -check-prefix ABS_ORIGIN_1 | RUN:   --address=0x640 --functions | FileCheck %s -check-prefix ABS_ORIGIN_1 | ||||||
| RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test3.elf-x86-64 \ | RUN: llvm-dwarfdump "%p/Inputs/dwarfdump-test3.elf-x86-64 space" \ | ||||||
| RUN:   --address=0x633 --functions | FileCheck %s -check-prefix INCLUDE_TEST_1 | RUN:   --address=0x633 --functions | FileCheck %s -check-prefix INCLUDE_TEST_1 | ||||||
| RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test3.elf-x86-64 \ | RUN: llvm-dwarfdump "%p/Inputs/dwarfdump-test3.elf-x86-64 space" \ | ||||||
| RUN:   --address=0x62d --functions | FileCheck %s -check-prefix INCLUDE_TEST_2 | RUN:   --address=0x62d --functions | FileCheck %s -check-prefix INCLUDE_TEST_2 | ||||||
| RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test4.elf-x86-64 \ | RUN: llvm-dwarfdump %p/Inputs/dwarfdump-test4.elf-x86-64 \ | ||||||
| RUN:   --address=0x62c --functions \ | RUN:   --address=0x62c --functions \ | ||||||
|   | |||||||
| @@ -1,6 +1,7 @@ | |||||||
| RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400559" > %t.input | RUN: echo "%p/Inputs/dwarfdump-test.elf-x86-64 0x400559" > %t.input | ||||||
| RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" >> %t.input | RUN: echo "%p/Inputs/dwarfdump-test4.elf-x86-64 0x62c" >> %t.input | ||||||
| RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x710" >> %t.input | RUN: echo "%p/Inputs/dwarfdump-inl-test.elf-x86-64 0x710" >> %t.input | ||||||
|  | RUN: echo '"%p/Inputs/dwarfdump-test3.elf-x86-64 space" 0x633' >> %t.input | ||||||
|  |  | ||||||
| RUN: llvm-symbolizer --functions --inlining --demangle=false < %t.input \ | RUN: llvm-symbolizer --functions --inlining --demangle=false < %t.input \ | ||||||
| RUN:    | FileCheck %s | RUN:    | FileCheck %s | ||||||
| @@ -18,4 +19,7 @@ CHECK-NEXT: dwarfdump-inl-test.h:7 | |||||||
| CHECK-NEXT: inlined_f | CHECK-NEXT: inlined_f | ||||||
| CHECK-NEXT: dwarfdump-inl-test.cc:3 | CHECK-NEXT: dwarfdump-inl-test.cc:3 | ||||||
| CHECK-NEXT: main | CHECK-NEXT: main | ||||||
| CHECK-NEXT: dwarfdump-inl-test.cc:8 | CHECK-NEXT: dwarfdump-inl-test.cc: | ||||||
|  |  | ||||||
|  | CHECK:       _Z3do1v | ||||||
|  | CHECK-NEXT: dwarfdump-test3-decl.h:7 | ||||||
|   | |||||||
| @@ -70,12 +70,25 @@ static bool parseCommand(bool &IsData, std::string &ModuleName, | |||||||
|     // If no cmd, assume it's CODE. |     // If no cmd, assume it's CODE. | ||||||
|     IsData = false; |     IsData = false; | ||||||
|   } |   } | ||||||
|   // FIXME: Handle case when filename is given in quotes. |   // Skip delimiters and parse input filename. | ||||||
|   if (char *FilePath = strtok(pos, kDelimiters)) { |   pos += strspn(pos, kDelimiters); | ||||||
|     ModuleName = FilePath; |   if (*pos == '"' || *pos == '\'') { | ||||||
|     if (char *OffsetStr = strtok((char *)0, kDelimiters)) |     char quote = *pos; | ||||||
|       ModuleOffsetStr = OffsetStr; |     pos++; | ||||||
|  |     char *end = strchr(pos, quote); | ||||||
|  |     if (end == 0) | ||||||
|  |       return false; | ||||||
|  |     ModuleName = std::string(pos, end - pos); | ||||||
|  |     pos = end + 1; | ||||||
|  |   } else { | ||||||
|  |     int name_length = strcspn(pos, kDelimiters); | ||||||
|  |     ModuleName = std::string(pos, name_length); | ||||||
|  |     pos += name_length; | ||||||
|   } |   } | ||||||
|  |   // Skip delimiters and parse module offset. | ||||||
|  |   pos += strspn(pos, kDelimiters); | ||||||
|  |   int offset_length = strcspn(pos, kDelimiters); | ||||||
|  |   ModuleOffsetStr = std::string(pos, offset_length); | ||||||
|   if (StringRef(ModuleOffsetStr).getAsInteger(0, ModuleOffset)) |   if (StringRef(ModuleOffsetStr).getAsInteger(0, ModuleOffset)) | ||||||
|     return false; |     return false; | ||||||
|   return true; |   return true; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user