diff --git a/ast/asm_label_attr.go b/ast/asm_label_attr.go index 81566d5d..55e2420b 100644 --- a/ast/asm_label_attr.go +++ b/ast/asm_label_attr.go @@ -2,27 +2,30 @@ package ast // AsmLabelAttr is a type of attribute for assembler label type AsmLabelAttr struct { - Addr Address - Pos Position - Inherited bool - FunctionName string - ChildNodes []Node + Addr Address + Pos Position + Inherited bool + FunctionName string + ChildNodes []Node + IsLiteralLabel bool } func parseAsmLabelAttr(line string) *AsmLabelAttr { groups := groupsFromRegex( `<(?P.*)> (?P Inherited)? - "(?P.+)"`, + "(?P.+)" + (?P IsLiteralLabel)?`, line, ) return &AsmLabelAttr{ - Addr: ParseAddress(groups["address"]), - Pos: NewPositionFromString(groups["position"]), - Inherited: len(groups["inherited"]) > 0, - FunctionName: groups["function"], - ChildNodes: []Node{}, + Addr: ParseAddress(groups["address"]), + Pos: NewPositionFromString(groups["position"]), + Inherited: len(groups["inherited"]) > 0, + FunctionName: groups["function"], + ChildNodes: []Node{}, + IsLiteralLabel: len(groups["literal"]) > 0, } } diff --git a/ast/asm_label_attr_test.go b/ast/asm_label_attr_test.go index 83775c9c..3b6dc236 100644 --- a/ast/asm_label_attr_test.go +++ b/ast/asm_label_attr_test.go @@ -7,18 +7,28 @@ import ( func TestAsmLabelAttr(t *testing.T) { nodes := map[string]Node{ `0x7ff26d8224e8 "_fopen"`: &AsmLabelAttr{ - Addr: 0x7ff26d8224e8, - Pos: NewPositionFromString("/usr/include/sys/cdefs.h:569:36"), - Inherited: false, - FunctionName: "_fopen", - ChildNodes: []Node{}, + Addr: 0x7ff26d8224e8, + Pos: NewPositionFromString("/usr/include/sys/cdefs.h:569:36"), + Inherited: false, + FunctionName: "_fopen", + ChildNodes: []Node{}, + IsLiteralLabel: false, }, `0x7fd55a169318 Inherited "_popen"`: &AsmLabelAttr{ - Addr: 0x7fd55a169318, - Pos: NewPositionFromString("/usr/include/stdio.h:325:47"), - Inherited: true, - FunctionName: "_popen", - ChildNodes: []Node{}, + Addr: 0x7fd55a169318, + Pos: NewPositionFromString("/usr/include/stdio.h:325:47"), + Inherited: true, + FunctionName: "_popen", + ChildNodes: []Node{}, + IsLiteralLabel: false, + }, + `0x559fea32f5f0 "__isoc99_fscanf" IsLiteralLabel`: &AsmLabelAttr{ + Addr: 0x559fea32f5f0, + Pos: NewPositionFromString("line:407:94"), + Inherited: false, + FunctionName: "__isoc99_fscanf", + ChildNodes: []Node{}, + IsLiteralLabel: true, }, }