Skip to content
This repository has been archived by the owner on Nov 1, 2023. It is now read-only.

Commit

Permalink
Improve usage of the resolve script
Browse files Browse the repository at this point in the history
- Invoke with srcdir in include path
- better error handling

Change-Id: I832c0d6eb0f4ab2ad8fd8027e5bd6abbaf1080fe
Signed-off-by: Knut Omang <knut.omang@oracle.com>
Reviewed-on: https://review.no.oracle.com:8443/c/ktf/+/16781
Reviewed-by: Alan Maguire <alan.maguire@oracle.com>
  • Loading branch information
Knut Omang committed Oct 31, 2019
1 parent 8397054 commit 3f76f2d
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 20 deletions.
2 changes: 1 addition & 1 deletion m4/ktf.m4
Expand Up @@ -274,7 +274,7 @@ Makefile: \$(srcdir)/Makefile.in \$(top_builddir)/config.status
esac;
ktf_syms.h: \$(srcdir)/ktf_syms.txt \$(ktf_scripts)/resolve
\$(ktf_scripts)/resolve \$(ccflags-y) \$< \$[]@
\$(ktf_scripts)/resolve -I\$(srcdir) \$(ccflags-y) \$< \$[]@
install: \$(obj-installed)
Expand Down
48 changes: 29 additions & 19 deletions scripts/resolve
Expand Up @@ -16,6 +16,12 @@ def usage():
print "Usage: resolve symbolfile outputfile"
exit(0)

class ResolveError(Exception):
def __init__(self, value):
self.value = "resolve error: " + value
def __str__(self):
return repr(self.value)

class FuncInfo:
def __init__(self, sym, re_sym, re_decl):
self.symbol = sym
Expand All @@ -37,7 +43,7 @@ class Module:

def log(self, str):
if self.debug:
print str
sys.stderr.write(str + "\n")

def SetHeader(self, header):
self.cur_header = header
Expand Down Expand Up @@ -106,6 +112,7 @@ usage_h = False
my_argv = []
includepath = [""]

#sys.stderr.write("%s\n" % (sys.argv))
for arg in sys.argv[1:]:
if arg == "-h":
usage_h = True
Expand Down Expand Up @@ -135,27 +142,30 @@ header = None # A header directive is required before any symbols

try:
file = open(symfile, 'r')
for line in file:
match = re.match(r"^#(\w+) ([\w\.]+)\s*$", line)
if match != None:
cmd = match.group(1)
value = match.group(2)
if cmd == "module":
module = Module(value, header)
elif cmd == "header":
header = value
module.SetHeader(header)
else:
raise ResolveError("While parsing %s: Unknown directive \"%s\"" % (symfile, cmd))
#print "%s set to %s" % (cmd, value)
continue
match = re.match(r"\s*(\w+)\s*", line)
if match != None:
s = match.group(1)
module.AddSymbol(s)
except ResolveError as e:
print e.value;
exit(1)
except:
print "Unable to open config file \"%s\"" % symfile
exit(1)
for line in file:
match = re.match(r"^#(\w+) ([\w\.]+)\s*$", line)
if match != None:
cmd = match.group(1)
value = match.group(2)
if cmd == "module":
module = Module(value, header)
elif cmd == "header":
header = value
module.SetHeader(header)
else:
raise ResolveError("Unknown directive \"%s\"" % cmd)
#print "%s set to %s" % (cmd, value)
continue
match = re.match(r"\s*(\w+)\s*", line)
if match != None:
s = match.group(1)
module.AddSymbol(s)

for m in all_modules:
m.ParseDefs()
Expand Down

0 comments on commit 3f76f2d

Please sign in to comment.