Fix go-to label with position-independent code (#7522)

Resolves #7521.

With this PR, `@...` suffixes are included in the clickable area for
go-to label.

This also affects PowerPC, where `@...` suffixes are a bit more common
(`@ha` and `@l` will also be marked as clickable).

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
This commit is contained in:
narpfel
2025-04-17 19:25:28 +02:00
committed by GitHub
parent 697d69f456
commit 98c91227fa
52 changed files with 17400 additions and 513 deletions

View File

@@ -116,9 +116,20 @@ export class BaseDemangler extends AsmRegex {
this.ptxFuncDef, this.ptxFuncDef,
this.ptxVarDef, this.ptxVarDef,
]; ];
for (const {text: line} of this.result.asm) { for (const {text: line, labels} of this.result.asm) {
if (!line) continue; if (!line) continue;
if (labels) {
for (const label of labels) {
if (label.target !== undefined) {
unwrap(this.symbolstore).add(label.target);
this.othersymbols.add(label.name);
} else {
unwrap(this.symbolstore).add(label.name);
}
}
}
const labelMatch = line.match(this.labelDef); const labelMatch = line.match(this.labelDef);
if (labelMatch) unwrap(this.symbolstore).add(labelMatch[labelMatch.length - 1]); if (labelMatch) unwrap(this.symbolstore).add(labelMatch[labelMatch.length - 1]);
@@ -179,6 +190,7 @@ export class BaseDemangler extends AsmRegex {
].filter(elem => elem[0] !== elem[1]); ].filter(elem => elem[0] !== elem[1]);
if (translations.length > 0) { if (translations.length > 0) {
const tree = new PrefixTree(translations); const tree = new PrefixTree(translations);
const translationsDict = Object.fromEntries(translations);
for (const asm of this.result.asm) { for (const asm of this.result.asm) {
const {newText, mapRanges, mapNames} = tree.replaceAll(asm.text); const {newText, mapRanges, mapNames} = tree.replaceAll(asm.text);
asm.text = newText; asm.text = newText;
@@ -189,6 +201,9 @@ export class BaseDemangler extends AsmRegex {
if (mapRanges[label.range.startCol]) if (mapRanges[label.range.startCol])
label.range = mapRanges[label.range.startCol][label.range.endCol] || label.range; label.range = mapRanges[label.range.startCol][label.range.endCol] || label.range;
label.name = mapNames[label.name] || label.name; label.name = mapNames[label.name] || label.name;
if (label.target !== undefined) {
label.target = translationsDict[label.target] || label.target;
}
} }
} }
} }

View File

@@ -105,7 +105,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
// Opcode expression here matches LLVM-style opcodes of the form `%blah = opcode` // Opcode expression here matches LLVM-style opcodes of the form `%blah = opcode`
this.hasOpcodeRe = /^\s*(%[$.A-Z_a-z][\w$.]*\s*=\s*)?[A-Za-z]/; this.hasOpcodeRe = /^\s*(%[$.A-Z_a-z][\w$.]*\s*=\s*)?[A-Za-z]/;
this.instructionRe = /^\s*[A-Za-z]+/; this.instructionRe = /^\s*[A-Za-z]+/;
this.identifierFindRe = /[$.@A-Z_a-z]\w*/g; this.identifierFindRe = /([$.@A-Z_a-z]\w*)(?:@\w+)*/g;
this.hasNvccOpcodeRe = /^\s*[@A-Za-z|]/; this.hasNvccOpcodeRe = /^\s*[@A-Za-z|]/;
this.definesFunction = /^\s*\.(type.*,\s*[#%@]function|proc\s+[.A-Z_a-z][\w$.]*:.*)$/; this.definesFunction = /^\s*\.(type.*,\s*[#%@]function|proc\s+[.A-Z_a-z][\w$.]*:.*)$/;
this.definesGlobal = /^\s*\.(?:globa?l|GLB|export)\s*([.A-Z_a-z][\w$.]*)/; this.definesGlobal = /^\s*\.(?:globa?l|GLB|export)\s*([.A-Z_a-z][\w$.]*)/;
@@ -340,7 +340,7 @@ export class AsmParser extends AsmRegex implements IAsmParser {
removeLabelsWithoutDefinition(asm: ParsedAsmResultLine[], labelDefinitions: Record<string, number>) { removeLabelsWithoutDefinition(asm: ParsedAsmResultLine[], labelDefinitions: Record<string, number>) {
for (const obj of asm) { for (const obj of asm) {
if (obj.labels) { if (obj.labels) {
obj.labels = obj.labels.filter(label => labelDefinitions[label.name]); obj.labels = obj.labels.filter(label => labelDefinitions[label.target || label.name]);
} }
} }
} }
@@ -356,16 +356,20 @@ export class AsmParser extends AsmRegex implements IAsmParser {
const params = instruction.replace(this.instructionRe, ''); const params = instruction.replace(this.instructionRe, '');
const removedCol = instruction.length - params.length + 1; const removedCol = instruction.length - params.length + 1;
params.replace(this.identifierFindRe, (label, index) => { params.replace(this.identifierFindRe, (symbol, target, index) => {
const startCol = removedCol + index; const startCol = removedCol + index;
labelsInLine.push({ const label: AsmResultLabel = {
name: label, name: symbol,
range: { range: {
startCol: startCol, startCol: startCol,
endCol: startCol + label.length, endCol: startCol + symbol.length,
}, },
}); };
return label; if (target !== symbol) {
label.target = target;
}
labelsInLine.push(label);
return symbol;
}); });
return labelsInLine; return labelsInLine;

View File

@@ -1001,12 +1001,13 @@ export class Compiler extends MonacoPane<monaco.editor.IStandaloneCodeEditor, Co
return; return;
} }
const target = label.target || label.name;
// biome-ignore lint/suspicious/noPrototypeBuiltins: biome recommends Object.hasOwn, but we target ES5 and it's not available // biome-ignore lint/suspicious/noPrototypeBuiltins: biome recommends Object.hasOwn, but we target ES5 and it's not available
if (!this.labelDefinitions.hasOwnProperty(label.name)) { if (!this.labelDefinitions.hasOwnProperty(target)) {
return; return;
} }
const labelDefLineNum = this.labelDefinitions[label.name]; const labelDefLineNum = this.labelDefinitions[target];
// Highlight the new range. // Highlight the new range.
const endLineContent = this.editor.getModel()?.getLineContent(labelDefLineNum); const endLineContent = this.editor.getModel()?.getLineContent(labelDefLineNum);

10
test/demangle-cases/bug-1468.asm.json generated Normal file
View File

@@ -0,0 +1,10 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": " call qword ptr [rip + std::io::stdio::_print@GOTPCREL]",
},
],
"labelDefinitions": {},
}

37
test/demangle-cases/bug-1468b.asm.json generated Normal file
View File

@@ -0,0 +1,37 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "g():",
},
{
"labels": [],
"source": null,
"text": " subq $8, %rsp",
},
{
"labels": [],
"source": null,
"text": " call *foo::baz+8(%rip)",
},
{
"labels": [],
"source": null,
"text": " xorl %eax, %eax",
},
{
"labels": [],
"source": null,
"text": " addq $8, %rsp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"g()": 1,
},
}

37
test/demangle-cases/bug-1468c.asm.json generated Normal file
View File

@@ -0,0 +1,37 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "g():",
},
{
"labels": [],
"source": null,
"text": " sub rsp, 8",
},
{
"labels": [],
"source": null,
"text": " call [QWORD PTR foo::baz[rip+8]]",
},
{
"labels": [],
"source": null,
"text": " xor eax, eax",
},
{
"labels": [],
"source": null,
"text": " add rsp, 8",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"g()": 1,
},
}

37
test/demangle-cases/bug-1468d.asm.json generated Normal file
View File

@@ -0,0 +1,37 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "g():",
},
{
"labels": [],
"source": null,
"text": " pushq %rax",
},
{
"labels": [],
"source": null,
"text": " callq *foo::baz+8(%rip)",
},
{
"labels": [],
"source": null,
"text": " xorl %eax, %eax",
},
{
"labels": [],
"source": null,
"text": " popq %rcx",
},
{
"labels": [],
"source": null,
"text": " retq",
},
],
"labelDefinitions": {
"g()": 1,
},
}

35
test/demangle-cases/bug-1468e.asm.json generated Normal file
View File

@@ -0,0 +1,35 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "g(): # @g()",
},
{
"labels": [],
"source": null,
"text": " push rax",
},
{
"labels": [],
"source": null,
"text": " call qword ptr [rip + foo::baz+8]",
},
{
"labels": [],
"source": null,
"text": " xor eax, eax",
},
{
"labels": [],
"source": null,
"text": " pop rcx",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {},
}

60
test/demangle-cases/bug-515.asm.json generated Normal file
View File

@@ -0,0 +1,60 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "bar():",
},
{
"labels": [],
"source": null,
"text": " movl $foo, %eax",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "bar2():",
},
{
"labels": [],
"source": null,
"text": " movl $foo2, %eax",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "foo2:",
},
{
"labels": [],
"source": null,
"text": " .long 1",
},
{
"labels": [],
"source": null,
"text": "foo:",
},
{
"labels": [],
"source": null,
"text": " .long 2",
},
],
"labelDefinitions": {
"bar()": 1,
"bar2()": 4,
"foo": 9,
"foo2": 7,
},
}

4590
test/demangle-cases/bug-660.asm.json generated Normal file

File diff suppressed because it is too large Load Diff

7967
test/demangle-cases/bug-713.asm.json generated Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,30 @@
_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:
lea rax, [rdi + 1]
ret
works_with_no_mangling:
lea rax, [rdi + 2]
ret
_ZN7example19non_public_function17hb49d2e80d343be8bE:
lea rax, [rdi + 3]
ret
_ZN7example16another_function17h50be9330a2452582E:
push r15
push r14
push rbx
mov rbx, rdi
call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]
mov r14, rax
mov rdi, rbx
call qword ptr [rip + works_with_no_mangling@GOTPCREL]
mov r15, rax
add r15, r14
mov rdi, rbx
call _ZN7example19non_public_function17hb49d2e80d343be8bE
add rax, r15
pop rbx
pop r14
pop r15
ret

View File

@@ -0,0 +1,30 @@
example::doesnt_work_with_mangled_name::hf9824bdcef81f607:
lea rax, [rdi + 1]
ret
works_with_no_mangling:
lea rax, [rdi + 2]
ret
example::non_public_function::hb49d2e80d343be8b:
lea rax, [rdi + 3]
ret
example::another_function::h50be9330a2452582:
push r15
push r14
push rbx
mov rbx, rdi
call qword ptr [rip + example::doesnt_work_with_mangled_name::hf9824bdcef81f607@GOTPCREL]
mov r14, rax
mov rdi, rbx
call qword ptr [rip + works_with_no_mangling@GOTPCREL]
mov r15, rax
add r15, r14
mov rdi, rbx
call example::non_public_function::hb49d2e80d343be8b
add rax, r15
pop rbx
pop r14
pop r15
ret

View File

@@ -0,0 +1,186 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "example::doesnt_work_with_mangled_name::hf9824bdcef81f607:",
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:",
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": "example::non_public_function::hb49d2e80d343be8b:",
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": "example::another_function::h50be9330a2452582:",
},
{
"labels": [],
"source": null,
"text": " push r15",
},
{
"labels": [],
"source": null,
"text": " push r14",
},
{
"labels": [],
"source": null,
"text": " push rbx",
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi",
},
{
"labels": [
{
"name": "example::doesnt_work_with_mangled_name::hf9824bdcef81f607@GOTPCREL",
"range": {
"endCol": 100,
"startCol": 34,
},
"target": "example::doesnt_work_with_mangled_name::hf9824bdcef81f607",
},
],
"source": null,
"text": " call qword ptr [rip + example::doesnt_work_with_mangled_name::hf9824bdcef81f607@GOTPCREL]",
},
{
"labels": [],
"source": null,
"text": " mov r14, rax",
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx",
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34,
},
"target": "works_with_no_mangling",
},
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]",
},
{
"labels": [],
"source": null,
"text": " mov r15, rax",
},
{
"labels": [],
"source": null,
"text": " add r15, r14",
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx",
},
{
"labels": [
{
"name": "example::non_public_function::hb49d2e80d343be8b",
"range": {
"endCol": 64,
"startCol": 17,
},
},
],
"source": null,
"text": " call example::non_public_function::hb49d2e80d343be8b",
},
{
"labels": [],
"source": null,
"text": " add rax, r15",
},
{
"labels": [],
"source": null,
"text": " pop rbx",
},
{
"labels": [],
"source": null,
"text": " pop r14",
},
{
"labels": [],
"source": null,
"text": " pop r15",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"example::another_function::h50be9330a2452582": 13,
"example::doesnt_work_with_mangled_name::hf9824bdcef81f607": 1,
"example::non_public_function::hb49d2e80d343be8b": 9,
"works_with_no_mangling": 5,
},
}

34
test/demangle-cases/bug-7521-powerpc.asm generated Normal file
View File

@@ -0,0 +1,34 @@
_ZN14some_namespace8functionEv:
.quad .Lfunc_begin0
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin0:
blr
main:
.quad .Lfunc_begin1
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin1:
mflr 0
std 31, -8(1)
stdu 1, -144(1)
std 0, 160(1)
mr 31, 1
stw 3, 132(31)
std 4, 120(31)
addis 3, 2, .L.str@toc@ha
addi 3, 3, .L.str@toc@l
addis 4, 2, _ZN14some_namespace8functionEv@toc@ha
addi 4, 4, _ZN14some_namespace8functionEv@toc@l
bl _ZSt6printfPKcz
nop
li 3, 0
addi 1, 1, 144
ld 0, 16(1)
ld 31, -8(1)
mtlr 0
blr
.L.str:
.asciz "%zu\n"

View File

@@ -0,0 +1,34 @@
some_namespace::function():
.quad .Lfunc_begin0
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin0:
blr
main:
.quad .Lfunc_begin1
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin1:
mflr 0
std 31, -8(1)
stdu 1, -144(1)
std 0, 160(1)
mr 31, 1
stw 3, 132(31)
std 4, 120(31)
addis 3, 2, .L.str@toc@ha
addi 3, 3, .L.str@toc@l
addis 4, 2, some_namespace::function()@toc@ha
addi 4, 4, some_namespace::function()@toc@l
bl std::printf(char const*, ...)
nop
li 3, 0
addi 1, 1, 144
ld 0, 16(1)
ld 31, -8(1)
mtlr 0
blr
.L.str:
.asciz "%zu\n"

View File

@@ -0,0 +1,215 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "some_namespace::function():",
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17,
},
},
],
"source": null,
"text": " .quad .Lfunc_begin0",
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase",
},
{
"labels": [],
"source": null,
"text": " .quad 0",
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:",
},
{
"labels": [],
"source": null,
"text": " blr",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": "main:",
},
{
"labels": [
{
"name": ".Lfunc_begin1",
"range": {
"endCol": 30,
"startCol": 17,
},
},
],
"source": null,
"text": " .quad .Lfunc_begin1",
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase",
},
{
"labels": [],
"source": null,
"text": " .quad 0",
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:",
},
{
"labels": [],
"source": null,
"text": " mflr 0",
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)",
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)",
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)",
},
{
"labels": [],
"source": null,
"text": " mr 31, 1",
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)",
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)",
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha",
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l",
},
{
"labels": [
{
"name": "some_namespace::function()@toc@ha",
"range": {
"endCol": 54,
"startCol": 21,
},
"target": "some_namespace::function()",
},
],
"source": null,
"text": " addis 4, 2, some_namespace::function()@toc@ha",
},
{
"labels": [
{
"name": "some_namespace::function()@toc@l",
"range": {
"endCol": 52,
"startCol": 20,
},
"target": "some_namespace::function()",
},
],
"source": null,
"text": " addi 4, 4, some_namespace::function()@toc@l",
},
{
"labels": [],
"source": null,
"text": " bl std::printf(char const*, ...)",
},
{
"labels": [],
"source": null,
"text": " nop",
},
{
"labels": [],
"source": null,
"text": " li 3, 0",
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144",
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)",
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)",
},
{
"labels": [],
"source": null,
"text": " mtlr 0",
},
{
"labels": [],
"source": null,
"text": " blr",
},
{
"labels": [],
"source": null,
"text": "",
},
{
"labels": [],
"source": null,
"text": ".L.str:",
},
{
"labels": [],
"source": null,
"text": " .asciz "%zu\n"",
},
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
".Lfunc_begin1": 12,
"main": 8,
"some_namespace::function()": 1,
},
}

114
test/demangle-cases/bug-978.asm.json generated Normal file
View File

@@ -0,0 +1,114 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "D::a():",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov QWORD PTR [rbp-8], rdi",
},
{
"labels": [],
"source": null,
"text": " mov eax, 1",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "D::abc():",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov QWORD PTR [rbp-8], rdi",
},
{
"labels": [],
"source": null,
"text": " mov eax, 1",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "C::a():",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov QWORD PTR [rbp-8], rdi",
},
{
"labels": [],
"source": null,
"text": " mov eax, 1",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"C::a()": 15,
"D::a()": 1,
"D::abc()": 8,
},
}

View File

@@ -0,0 +1,37 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "test:",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " nop",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"test": 1,
},
}

View File

@@ -0,0 +1,155 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "aa(int):",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov DWORD PTR [rbp-4], edi",
},
{
"labels": [],
"source": null,
"text": " nop",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "aa(int, int):",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov DWORD PTR [rbp-4], edi",
},
{
"labels": [],
"source": null,
"text": " mov DWORD PTR [rbp-8], esi",
},
{
"labels": [],
"source": null,
"text": " nop",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
{
"labels": [],
"source": null,
"text": "main:",
},
{
"labels": [],
"source": null,
"text": " push rbp",
},
{
"labels": [],
"source": null,
"text": " mov rbp, rsp",
},
{
"labels": [],
"source": null,
"text": " mov esi, 1",
},
{
"labels": [],
"source": null,
"text": " mov edi, 0",
},
{
"labels": [
{
"name": "aa(int, int)",
"range": {
"endCol": 29,
"startCol": 17,
},
},
],
"source": null,
"text": " call aa(int, int)",
},
{
"labels": [],
"source": null,
"text": " mov edi, 1",
},
{
"labels": [
{
"name": "aa(int)",
"range": {
"endCol": 24,
"startCol": 17,
},
},
],
"source": null,
"text": " call aa(int)",
},
{
"labels": [],
"source": null,
"text": " mov eax, 0",
},
{
"labels": [],
"source": null,
"text": " pop rbp",
},
{
"labels": [],
"source": null,
"text": " ret",
},
],
"labelDefinitions": {
"aa(int)": 1,
"aa(int, int)": 8,
"main": 16,
},
}

View File

@@ -38,6 +38,7 @@ import * as exec from '../lib/exec.js';
import * as properties from '../lib/properties.js'; import * as properties from '../lib/properties.js';
import {SymbolStore} from '../lib/symbol-store.js'; import {SymbolStore} from '../lib/symbol-store.js';
import * as utils from '../lib/utils.js'; import * as utils from '../lib/utils.js';
import {processAsm} from './utils.js';
import {makeFakeCompilerInfo, resolvePathFromTestRoot} from './utils.js'; import {makeFakeCompilerInfo, resolvePathFromTestRoot} from './utils.js';
@@ -325,6 +326,15 @@ async function DoDemangleTest(filename: string) {
await expect(demangler.process(resultIn)).resolves.toEqual(resultOut); await expect(demangler.process(resultIn)).resolves.toEqual(resultOut);
} }
async function DoDemangleTestWithLabels(filename: string) {
const asm = processAsm(filename, {labels: true});
delete asm.parsingTime;
delete asm.filteredCount;
const demangler = new DummyCppDemangler(cppfiltpath, new DummyCompiler(), ['-n']);
await expect(demangler.process(asm)).resolves.toMatchFileSnapshot(filename + '.json');
}
if (process.platform === 'linux') { if (process.platform === 'linux') {
describe('File demangling', () => { describe('File demangling', () => {
const testcasespath = resolvePathFromTestRoot('demangle-cases'); const testcasespath = resolvePathFromTestRoot('demangle-cases');
@@ -339,6 +349,11 @@ if (process.platform === 'linux') {
it(filename, async () => { it(filename, async () => {
await DoDemangleTest(path.join(testcasespath, filename)); await DoDemangleTest(path.join(testcasespath, filename));
}); });
if (filename !== 'bug-1336-first-20000-lines.asm') {
it(`demangles ${filename} with labels`, async () => {
await DoDemangleTestWithLabels(path.join(testcasespath, filename));
});
}
} }
} }
}); });

View File

@@ -27,30 +27,9 @@ import path from 'node:path';
import {describe, expect, it} from 'vitest'; import {describe, expect, it} from 'vitest';
import {CC65AsmParser} from '../lib/parsers/asm-parser-cc65.js';
import {AsmEWAVRParser} from '../lib/parsers/asm-parser-ewavr.js';
import {SassAsmParser} from '../lib/parsers/asm-parser-sass.js';
import {VcAsmParser} from '../lib/parsers/asm-parser-vc.js';
import {AsmParser} from '../lib/parsers/asm-parser.js';
import {fakeProps} from '../lib/properties.js';
import {ParseFiltersAndOutputOptions} from '../types/features/filters.interfaces.js'; import {ParseFiltersAndOutputOptions} from '../types/features/filters.interfaces.js';
import {resolvePathFromTestRoot} from './utils.js'; import {processAsm, resolvePathFromTestRoot} from './utils.js';
function processAsm(filename: string, filters: ParseFiltersAndOutputOptions) {
const file = fs.readFileSync(filename, 'utf8');
let parser: AsmParser;
if (file.includes('Microsoft')) parser = new VcAsmParser();
else if (filename.includes('sass-')) parser = new SassAsmParser();
else if (filename.includes('cc65-')) parser = new CC65AsmParser(fakeProps({}));
else if (filename.includes('ewarm-')) parser = new AsmEWAVRParser(fakeProps({}));
else {
parser = new AsmParser();
parser.binaryHideFuncRe =
/^(__.*|_(init|start|fini)|(de)?register_tm_clones|call_gmon_start|frame_dummy|\.plt.*|_dl_relocate_static_pie)$/;
}
return parser.process(file, filters);
}
const casesRoot = resolvePathFromTestRoot('filters-cases'); const casesRoot = resolvePathFromTestRoot('filters-cases');
const files = fs.readdirSync(casesRoot); const files = fs.readdirSync(casesRoot);

30
test/filters-cases/bug-7521-pic-rust.asm generated Normal file
View File

@@ -0,0 +1,30 @@
_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:
lea rax, [rdi + 1]
ret
works_with_no_mangling:
lea rax, [rdi + 2]
ret
_ZN7example19non_public_function17hb49d2e80d343be8bE:
lea rax, [rdi + 3]
ret
_ZN7example16another_function17h50be9330a2452582E:
push r15
push r14
push rbx
mov rbx, rdi
call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]
mov r14, rax
mov rdi, rbx
call qword ptr [rip + works_with_no_mangling@GOTPCREL]
mov r15, rax
add r15, r14
mov rdi, rbx
call _ZN7example19non_public_function17hb49d2e80d343be8bE
add rax, r15
pop rbx
pop r14
pop r15
ret

View File

@@ -0,0 +1,4 @@
{
"asm": [],
"labelDefinitions": {}
}

View File

@@ -0,0 +1,185 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example16another_function17h50be9330a2452582E:"
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,185 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example16another_function17h50be9330a2452582E:"
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,185 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example16another_function17h50be9330a2452582E:"
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

View File

@@ -0,0 +1,186 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 1]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "works_with_no_mangling:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 2]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example19non_public_function17hb49d2e80d343be8bE:"
},
{
"labels": [],
"source": null,
"text": " lea rax, [rdi + 3]"
},
{
"labels": [],
"source": null,
"text": " ret"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "_ZN7example16another_function17h50be9330a2452582E:"
},
{
"labels": [],
"source": null,
"text": " push r15"
},
{
"labels": [],
"source": null,
"text": " push r14"
},
{
"labels": [],
"source": null,
"text": " push rbx"
},
{
"labels": [],
"source": null,
"text": " mov rbx, rdi"
},
{
"labels": [
{
"name": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL",
"range": {
"endCol": 105,
"startCol": 34
},
"target": "_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E"
}
],
"source": null,
"text": " call qword ptr [rip + _ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r14, rax"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "works_with_no_mangling@GOTPCREL",
"range": {
"endCol": 65,
"startCol": 34
},
"target": "works_with_no_mangling"
}
],
"source": null,
"text": " call qword ptr [rip + works_with_no_mangling@GOTPCREL]"
},
{
"labels": [],
"source": null,
"text": " mov r15, rax"
},
{
"labels": [],
"source": null,
"text": " add r15, r14"
},
{
"labels": [],
"source": null,
"text": " mov rdi, rbx"
},
{
"labels": [
{
"name": "_ZN7example19non_public_function17hb49d2e80d343be8bE",
"range": {
"endCol": 69,
"startCol": 17
}
}
],
"source": null,
"text": " call _ZN7example19non_public_function17hb49d2e80d343be8bE"
},
{
"labels": [],
"source": null,
"text": " add rax, r15"
},
{
"labels": [],
"source": null,
"text": " pop rbx"
},
{
"labels": [],
"source": null,
"text": " pop r14"
},
{
"labels": [],
"source": null,
"text": " pop r15"
},
{
"labels": [],
"source": null,
"text": " ret"
}
],
"labelDefinitions": {
"_ZN7example16another_function17h50be9330a2452582E": 13,
"_ZN7example19non_public_function17hb49d2e80d343be8bE": 9,
"_ZN7example29doesnt_work_with_mangled_name17hf9824bdcef81f607E": 1,
"works_with_no_mangling": 5
}
}

34
test/filters-cases/bug-7521-powerpc.asm generated Normal file
View File

@@ -0,0 +1,34 @@
_ZN14some_namespace8functionEv:
.quad .Lfunc_begin0
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin0:
blr
main:
.quad .Lfunc_begin1
.quad .TOC.@tocbase
.quad 0
.Lfunc_begin1:
mflr 0
std 31, -8(1)
stdu 1, -144(1)
std 0, 160(1)
mr 31, 1
stw 3, 132(31)
std 4, 120(31)
addis 3, 2, .L.str@toc@ha
addi 3, 3, .L.str@toc@l
addis 4, 2, _ZN14some_namespace8functionEv@toc@ha
addi 4, 4, _ZN14some_namespace8functionEv@toc@l
bl _ZSt6printfPKcz
nop
li 3, 0
addi 1, 1, 144
ld 0, 16(1)
ld 31, -8(1)
mtlr 0
blr
.L.str:
.asciz "%zu\n"

View File

@@ -0,0 +1,4 @@
{
"asm": [],
"labelDefinitions": {}
}

View File

@@ -0,0 +1,205 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "main:"
},
{
"labels": [],
"source": null,
"text": " .quad .Lfunc_begin1"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:"
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,205 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "main:"
},
{
"labels": [],
"source": null,
"text": " .quad .Lfunc_begin1"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:"
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 28,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 28,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 28,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,180 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 28,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,205 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "main:"
},
{
"labels": [],
"source": null,
"text": " .quad .Lfunc_begin1"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:"
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
"_ZN14some_namespace8functionEv": 1
}
}

View File

@@ -0,0 +1,215 @@
{
"asm": [
{
"labels": [],
"source": null,
"text": "_ZN14some_namespace8functionEv:"
},
{
"labels": [
{
"name": ".Lfunc_begin0",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin0"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin0:"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": "main:"
},
{
"labels": [
{
"name": ".Lfunc_begin1",
"range": {
"endCol": 30,
"startCol": 17
}
}
],
"source": null,
"text": " .quad .Lfunc_begin1"
},
{
"labels": [],
"source": null,
"text": " .quad .TOC.@tocbase"
},
{
"labels": [],
"source": null,
"text": " .quad 0"
},
{
"labels": [],
"source": null,
"text": ".Lfunc_begin1:"
},
{
"labels": [],
"source": null,
"text": " mflr 0"
},
{
"labels": [],
"source": null,
"text": " std 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " stdu 1, -144(1)"
},
{
"labels": [],
"source": null,
"text": " std 0, 160(1)"
},
{
"labels": [],
"source": null,
"text": " mr 31, 1"
},
{
"labels": [],
"source": null,
"text": " stw 3, 132(31)"
},
{
"labels": [],
"source": null,
"text": " std 4, 120(31)"
},
{
"labels": [],
"source": null,
"text": " addis 3, 2, .L.str@toc@ha"
},
{
"labels": [],
"source": null,
"text": " addi 3, 3, .L.str@toc@l"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@ha",
"range": {
"endCol": 58,
"startCol": 21
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addis 4, 2, _ZN14some_namespace8functionEv@toc@ha"
},
{
"labels": [
{
"name": "_ZN14some_namespace8functionEv@toc@l",
"range": {
"endCol": 56,
"startCol": 20
},
"target": "_ZN14some_namespace8functionEv"
}
],
"source": null,
"text": " addi 4, 4, _ZN14some_namespace8functionEv@toc@l"
},
{
"labels": [],
"source": null,
"text": " bl _ZSt6printfPKcz"
},
{
"labels": [],
"source": null,
"text": " nop"
},
{
"labels": [],
"source": null,
"text": " li 3, 0"
},
{
"labels": [],
"source": null,
"text": " addi 1, 1, 144"
},
{
"labels": [],
"source": null,
"text": " ld 0, 16(1)"
},
{
"labels": [],
"source": null,
"text": " ld 31, -8(1)"
},
{
"labels": [],
"source": null,
"text": " mtlr 0"
},
{
"labels": [],
"source": null,
"text": " blr"
},
{
"labels": [],
"source": null,
"text": ""
},
{
"labels": [],
"source": null,
"text": ".L.str:"
},
{
"labels": [],
"source": null,
"text": " .asciz \"%zu\\n\""
}
],
"labelDefinitions": {
".L.str": 33,
".Lfunc_begin0": 5,
".Lfunc_begin1": 12,
"_ZN14some_namespace8functionEv": 1,
"main": 8
}
}

View File

@@ -790,11 +790,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -806,11 +807,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -923,11 +925,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -939,11 +942,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1136,11 +1140,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1152,11 +1157,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1189,11 +1195,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1205,11 +1212,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1497,11 +1505,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1513,11 +1522,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1825,11 +1835,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1841,11 +1852,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2024,11 +2036,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2040,11 +2053,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2149,11 +2163,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2165,11 +2180,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2236,11 +2252,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2257,11 +2274,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2286,11 +2304,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2307,11 +2326,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -965,11 +965,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -981,11 +982,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -1098,11 +1100,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1114,11 +1117,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1311,11 +1315,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1327,11 +1332,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1364,11 +1370,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1380,11 +1387,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1712,11 +1720,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1728,11 +1737,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2085,11 +2095,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2101,11 +2112,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2329,11 +2341,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2345,11 +2358,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2454,11 +2468,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2470,11 +2485,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2541,11 +2557,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2562,11 +2579,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2591,11 +2609,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2612,11 +2631,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -670,11 +670,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -686,11 +687,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -803,11 +805,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -819,11 +822,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1016,11 +1020,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1032,11 +1037,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1069,11 +1075,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1085,11 +1092,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1332,11 +1340,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1348,11 +1357,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1600,11 +1610,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1616,11 +1627,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1759,11 +1771,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1775,11 +1788,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1884,11 +1898,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1900,11 +1915,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1961,11 +1977,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -1977,11 +1994,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2001,11 +2019,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2017,11 +2036,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -670,11 +670,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -686,11 +687,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -803,11 +805,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -819,11 +822,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1016,11 +1020,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1032,11 +1037,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1069,11 +1075,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1085,11 +1092,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1332,11 +1340,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1348,11 +1357,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1600,11 +1610,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1616,11 +1627,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1759,11 +1771,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1775,11 +1788,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1884,11 +1898,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1900,11 +1915,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1961,11 +1977,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -1977,11 +1994,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2001,11 +2019,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2017,11 +2036,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -670,11 +670,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -686,11 +687,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -803,11 +805,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -819,11 +822,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1016,11 +1020,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1032,11 +1037,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1069,11 +1075,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1085,11 +1092,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1332,11 +1340,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1348,11 +1357,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1600,11 +1610,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1616,11 +1627,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1759,11 +1771,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1775,11 +1788,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -1884,11 +1898,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1900,11 +1915,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -1961,11 +1977,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -1977,11 +1994,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2001,11 +2019,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2017,11 +2036,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -860,11 +860,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -876,11 +877,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -993,11 +995,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1009,11 +1012,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1206,11 +1210,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1222,11 +1227,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1259,11 +1265,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1275,11 +1282,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1567,11 +1575,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1583,11 +1592,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1885,11 +1895,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1901,11 +1912,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2094,11 +2106,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2110,11 +2123,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2219,11 +2233,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2235,11 +2250,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2296,11 +2312,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2312,11 +2329,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2336,11 +2354,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2352,11 +2371,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -965,11 +965,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -981,11 +982,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -1098,11 +1100,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1114,11 +1117,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1311,11 +1315,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1327,11 +1332,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1364,11 +1370,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1380,11 +1387,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1712,11 +1720,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -1728,11 +1737,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2085,11 +2095,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2101,11 +2112,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2329,11 +2341,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2345,11 +2358,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -2454,11 +2468,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2470,11 +2485,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2541,11 +2557,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2562,11 +2579,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -2591,11 +2609,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -2612,11 +2631,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -1364,11 +1364,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -1380,11 +1381,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L114", "name": ".L114@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L114"
} }
], ],
"source": { "source": {
@@ -1507,11 +1509,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1523,11 +1526,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L115", "name": ".L115@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L115"
} }
], ],
"source": { "source": {
@@ -1730,11 +1734,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1746,11 +1751,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L116", "name": ".L116@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L116"
} }
], ],
"source": { "source": {
@@ -1788,11 +1794,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -1804,11 +1811,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L117", "name": ".L117@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L117"
} }
], ],
"source": { "source": {
@@ -2264,11 +2272,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2280,11 +2289,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2765,11 +2775,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -2781,11 +2792,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L131", "name": ".L131@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L131"
} }
], ],
"source": { "source": {
@@ -3117,11 +3129,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 29 "startCol": 29
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -3133,11 +3146,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L65", "name": ".L65@l",
"range": { "range": {
"endCol": 37, "endCol": 39,
"startCol": 33 "startCol": 33
} },
"target": ".L65"
} }
], ],
"source": { "source": {
@@ -3247,11 +3261,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -3263,11 +3278,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -3344,11 +3360,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -3365,11 +3382,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L160", "name": ".L160@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L160"
} }
], ],
"source": { "source": {
@@ -3399,11 +3417,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@ha",
"range": { "range": {
"endCol": 33, "endCol": 36,
"startCol": 28 "startCol": 28
} },
"target": ".L159"
} }
], ],
"source": { "source": {
@@ -3420,11 +3439,12 @@
{ {
"labels": [ "labels": [
{ {
"name": ".L159", "name": ".L159@l",
"range": { "range": {
"endCol": 36, "endCol": 38,
"startCol": 31 "startCol": 31
} },
"target": ".L159"
} }
], ],
"source": { "source": {

View File

@@ -22,6 +22,7 @@
// ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
// POSSIBILITY OF SUCH DAMAGE. // POSSIBILITY OF SUCH DAMAGE.
import fs from 'node:fs';
import path from 'node:path'; import path from 'node:path';
import {fileURLToPath} from 'node:url'; import {fileURLToPath} from 'node:url';
@@ -30,6 +31,11 @@ import * as temp from '../lib/temp.js';
import {CompilationEnvironment} from '../lib/compilation-env.js'; import {CompilationEnvironment} from '../lib/compilation-env.js';
import {CompilationQueue} from '../lib/compilation-queue.js'; import {CompilationQueue} from '../lib/compilation-queue.js';
import {CC65AsmParser} from '../lib/parsers/asm-parser-cc65.js';
import {AsmEWAVRParser} from '../lib/parsers/asm-parser-ewavr.js';
import {SassAsmParser} from '../lib/parsers/asm-parser-sass.js';
import {VcAsmParser} from '../lib/parsers/asm-parser-vc.js';
import {AsmParser} from '../lib/parsers/asm-parser.js';
import {CompilerProps, fakeProps} from '../lib/properties.js'; import {CompilerProps, fakeProps} from '../lib/properties.js';
import {CompilerInfo} from '../types/compiler.interfaces.js'; import {CompilerInfo} from '../types/compiler.interfaces.js';
import {ParseFiltersAndOutputOptions} from '../types/features/filters.interfaces.js'; import {ParseFiltersAndOutputOptions} from '../types/features/filters.interfaces.js';
@@ -97,3 +103,18 @@ export function newTempDir() {
ensureTempCleanup(); ensureTempCleanup();
return temp.mkdirSync('compiler-explorer-tests'); return temp.mkdirSync('compiler-explorer-tests');
} }
export function processAsm(filename: string, filters: ParseFiltersAndOutputOptions) {
const file = fs.readFileSync(filename, 'utf8');
let parser: AsmParser;
if (file.includes('Microsoft')) parser = new VcAsmParser();
else if (filename.includes('sass-')) parser = new SassAsmParser();
else if (filename.includes('cc65-')) parser = new CC65AsmParser(fakeProps({}));
else if (filename.includes('ewarm-')) parser = new AsmEWAVRParser(fakeProps({}));
else {
parser = new AsmParser();
parser.binaryHideFuncRe =
/^(__.*|_(init|start|fini)|(de)?register_tm_clones|call_gmon_start|frame_dummy|\.plt.*|_dl_relocate_static_pie)$/;
}
return parser.process(file, filters);
}

View File

@@ -18,6 +18,7 @@ export type AsmResultLabelRange = {
export type AsmResultLabel = { export type AsmResultLabel = {
name: string; name: string;
target?: string;
range: AsmResultLabelRange; range: AsmResultLabelRange;
}; };