mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-11-01 00:17:01 +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