Skip to content

Commit

Permalink
parser: Unique names
Browse files Browse the repository at this point in the history
Moved function for getting unique names.
  • Loading branch information
mefistotelis committed Mar 10, 2022
1 parent 609ebb1 commit 6e5d4fe
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 13 deletions.
9 changes: 2 additions & 7 deletions csym/parse_decls.go
Original file line number Diff line number Diff line change
Expand Up @@ -320,10 +320,10 @@ func findFunc(p *Parser, name string, addr uint32) (*c.FuncDecl, *c.FuncType) {
}
}
if f == nil {
f = p.emptyFunc(name, addr)
if nameExists {
name = UniqueName(name, addr)
f.Var.Name = UniqueFuncName(p.curOverlay, f)
}
f = p.emptyFunc(name, addr)
log.Printf("unable to locate function %q, created void", name)
}
funcType, ok := f.Type.(*c.FuncType)
Expand All @@ -333,11 +333,6 @@ func findFunc(p *Parser, name string, addr uint32) (*c.FuncDecl, *c.FuncType) {
return f, funcType
}

// UniqueName returns a unique name based on the given name and address.
func UniqueName(name string, addr uint32) string {
return fmt.Sprintf("%s_addr_%08X", name, addr)
}

// parseClass parses the symbol class into an equivalent C storage class.
func parseClass(class sym.Class) c.StorageClass {
switch class {
Expand Down
17 changes: 11 additions & 6 deletions csym/parse_fixups.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ func (p *Parser) makeVarNamesUniqueInOverlay(overlay *Overlay) {
for i := 0; i < len(variables); i++ {
v := variables[i]
if v.Class == c.Extern { continue }
v.Var.Name = uniqueVarName(overlay, v)
v.Var.Name = UniqueVarName(overlay, v)
}
}
}
Expand All @@ -50,17 +50,22 @@ func (p *Parser) makeFuncNamesUniqueInOverlay(overlay *Overlay) {
if real_len < 2 { continue }
for i := 0; i < len(funcs); i++ {
f := funcs[i]
f.Var.Name = uniqueFuncName(overlay, f)
f.Var.Name = UniqueFuncName(overlay, f)
}
}
}

// uniqueVarName returns a unique name for a variable declaration
func uniqueVarName(overlay *Overlay, v *c.VarDecl) string {
// UniqueName returns a unique name based on the given name and address.
func UniqueName(name string, addr uint32) string {
return fmt.Sprintf("%s_addr_%08X", name, addr)
}

// UniqueVarName returns a unique name for a variable declaration
func UniqueVarName(overlay *Overlay, v *c.VarDecl) string {
return fmt.Sprintf("%s_addr_%08X", v.Var.Name, v.Addr)
}

// uniqueFuncName returns a unique name for a variable declaration
func uniqueFuncName(overlay *Overlay, f *c.FuncDecl) string {
// UniqueFuncName returns a unique name for a variable declaration
func UniqueFuncName(overlay *Overlay, f *c.FuncDecl) string {
return fmt.Sprintf("%s_addr_%08X", f.Var.Name, f.Addr)
}

0 comments on commit 6e5d4fe

Please sign in to comment.