socsvn commit: r222616 - in
soc2011/gk/ino64-head/tools/tools/shlib-compat: . test test/libtest3
gk at FreeBSD.org
gk at FreeBSD.org
Mon May 30 23:09:59 UTC 2011
Author: gk
Date: Mon May 30 23:09:56 2011
New Revision: 222616
URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=222616
Log:
shlib-compat: add PrettyPrinter to dump definitions in C-like syntax
Merge rev bf093c6ae5f5ce15a424
Added:
soc2011/gk/ino64-head/tools/tools/shlib-compat/README
Modified:
soc2011/gk/ino64-head/tools/tools/shlib-compat/shlib-compat
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/libtest3/test.c
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-1.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-2.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-3.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-1.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-2.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-3.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-1.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-2.out
soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-3.out
Added: soc2011/gk/ino64-head/tools/tools/shlib-compat/README
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/README Mon May 30 23:09:56 2011 (r222616)
@@ -0,0 +1,5 @@
+ABI compatibility checker for shared libraries with symbol versioning
+
+shlib-compat uses dwarf debugging symbols to recreate definitions of exported
+symbols, including function arguments and structural types.
+
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/shlib-compat
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/shlib-compat Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/shlib-compat Mon May 30 23:09:56 2011 (r222616)
@@ -27,7 +27,6 @@
import os
import sys
import re
-import json
import optparse
class Config(object):
@@ -44,6 +43,16 @@
cmpcache_enabled = True
dwarfcache_enabled = True
+ class FileConfig(object):
+ filename = None
+ out = sys.stdout
+ def init(self, outname):
+ if outname and outname != '-':
+ self.out = open(outname, "w")
+
+ origfile = FileConfig()
+ newfile = FileConfig()
+
@classmethod
def init(cls):
cls.version_filter = StrFilter()
@@ -109,8 +118,8 @@
def put(self, id, obj):
if self.enabled:
if self.items.has_key(id) and obj is not self.items[id]:
- #raise ValueError, "Item is already cached: %d (%s, %s)" % \
- # (id, self.items[id], obj)
+ #raise ValueError("Item is already cached: %d (%s, %s)" %
+ # (id, self.items[id], obj))
print >> sys.stderr, "WARN: Item is already cached: %d (%s, %s)" % \
(id, self.items[id], obj)
self.items[id] = obj
@@ -128,6 +137,24 @@
self.added = self.new - self.common
self.removed = self.orig - self.common
+class PrettyPrinter(object):
+ def __init__(self):
+ self.stack = []
+
+ def run_nested(self, obj):
+ ex = obj._pp_ex(self)
+ self.stack.append(ex)
+
+ def run(self, obj):
+ self._result = obj._pp(self)
+ return self._result
+
+ def nested(self):
+ return sorted(set(self.stack))
+
+ def result(self):
+ return self._result;
+
# }}}
#{{{ symbols and version maps
@@ -150,7 +177,8 @@
class CommonSymbol(object):
def __init__(self, origsym, newsym):
if origsym.name != newsym.name or origsym.version != newsym.version:
- raise RuntimeError, "Symbols have different names:", [origsym, newsym]
+ raise RuntimeError("Symbols have different names: %s",
+ [origsym, newsym])
self.origsym = origsym
self.newsym = newsym
self.name = newsym.name
@@ -166,7 +194,8 @@
def append(self, symbol):
if (self.symbols.has_key(symbol.name)):
- raise ValueError, "Symbol is already defined %s@@%s" % (symbol.name, self.name)
+ raise ValueError("Symbol is already defined %s@%s" %
+ (symbol.name, self.name))
self.symbols[symbol.name] = symbol
def names(self):
@@ -189,9 +218,14 @@
def __getattr__(self, attr):
if not self.attrs.has_key(attr):
- raise AttributeError
+ raise AttributeError('%s in %s' % (attr, str(self)))
return self.attrs[attr]
+ def _name_opt(self, default=''):
+ if not self.name:
+ return default
+ return self.name
+
def _alias(self):
if self._is_alias:
return self.type._alias()
@@ -218,8 +252,8 @@
if ind != 0:
Dwarf.cmpcache.put(ind, r)
else:
- raise RuntimeError, 'Comparing different classes: %s, %s' % \
- (a.__class__.__name__, b.__class__.__name__)
+ raise RuntimeError('Comparing different classes: %s, %s' %
+ (a.__class__.__name__, b.__class__.__name__))
return r
def __repr__(self):
@@ -232,19 +266,18 @@
p.append("%s=%s" % (k, v))
return self.__class__.__name__ + '(' + ', '.join(p) + ')'
- @staticmethod
- def serialize_any(obj):
- if isinstance(obj, Def):
- return obj.serialize()
- elif type(obj) is list:
- return [ Def.serialize_any(x) for x in obj ]
- return obj
+ def _mapval(self, param, vals):
+ if param not in vals.keys():
+ raise NotImplementedError("Invalid value '%s': %s" %
+ (param, str(self)))
+ return vals[param]
+
+ def _pp_ex(self, pp):
+ raise NotImplementedError('Extended pretty print not implemeted: %s' %
+ str(self))
- def serialize(self):
- d = { '.name': self.name, '.tag': self.__class__.__name__ }
- for (k, v) in self.attrs.items():
- d[k] = Def.serialize_any(v)
- return d
+ def _pp(self, pp):
+ raise NotImplementedError('Pretty print not implemeted: %s' % str(self))
class AnonymousDef(Def):
def __init__(self, id, **kwargs):
@@ -262,41 +295,94 @@
def __init__(self):
AnonymousDef.__init__(self, 0)
+ def _pp(self, pp):
+ return "void"
+
class VarArgs(AnonymousDef):
- pass
+ def _pp(self, pp):
+ return "..."
class PointerDef(AnonymousDef):
- pass
+ def _pp(self, pp):
+ t = pp.run(self.type)
+ return "%s*" % (t,)
class BaseTypeDef(Def):
- pass
+ def _pp(self, pp):
+ if self.encoding in ['DW_ATE_signed', 'DW_ATE_unsigned', 'DW_ATE_unsigned_char' ]:
+ sign = '' if self.encoding == 'DW_ATE_signed' else 'u'
+ bits = int(self.byte_size) * 8
+ return '%sint%s_t' % (sign, bits)
+ elif self.encoding == 'DW_ATE_signed_char' and int(self.byte_size) == 1:
+ return 'char';
+ elif self.encoding == 'DW_ATE_float':
+ return self._mapval(self.byte_size, {
+ '16': 'long double',
+ '8': 'double',
+ '4': 'float',
+ })
+ raise NotImplementedError('Invalid encoding: %s' % self)
class TypeAliasDef(Def):
_is_alias = True
+ def _pp(self, pp):
+ alias = self._alias()
+ # push typedef name
+ if self.name and not alias.name:
+ alias.name = 'T(%s)' % self.name
+ # return type with modifiers
+ return self.type._pp(pp)
class EnumerationTypeDef(Def):
- pass
+ def _pp(self, pp):
+ return 'enum ' + self._name_opt('UNKNOWN')
class ConstTypeDef(AnonymousDef):
_is_alias = True
+ def _pp(self, pp):
+ return 'const ' + self.type._pp(pp)
class VolatileTypeDef(AnonymousDef):
_is_alias = True
+ def _pp(self, pp):
+ return 'volatile ' + self.type._pp(pp)
class ArrayDef(AnonymousDef):
- pass
+ def _pp(self, pp):
+ t = pp.run(self.type)
+ assert len(self.subranges) == 1
+ try:
+ sz = int(self.subranges[0].upper_bound) + 1
+ except ValueError:
+ s = re.sub(r'\(.+\)', '', self.subranges[0].upper_bound)
+ sz = int(s) + 1
+ return '%s[%s]' % (t, sz)
class ArraySubrangeDef(AnonymousDef):
pass
class FunctionDef(Def):
- pass
+ def _pp(self, pp):
+ result = pp.run(self.result)
+ if not self.params:
+ params = "void"
+ else:
+ params = ', '.join([ pp.run(x) for x in self.params ])
+ return "%s %s(%s);" % (result, self.name, params)
class FunctionTypeDef(Def):
- pass
+ def _pp(self, pp):
+ result = pp.run(self.result)
+ if not self.params:
+ params = "void"
+ else:
+ params = ', '.join([ pp.run(x) for x in self.params ])
+ return "F(%s, %s, (%s))" % (self._name_opt(), result, params)
class ParameterDef(Def):
- pass
+ def _pp(self, pp):
+ t = pp.run(self.type)
+ return "%s %s" % (t, self._name_opt())
# TODO
class StructForwardDef(Def):
@@ -312,19 +398,41 @@
cache.replace(self.id, complete)
class StructIncompleteDef(IncompleteDef):
- pass
+ def _pp(self, pp):
+ return "struct %s" % (self.name,)
class UnionIncompleteDef(IncompleteDef):
- pass
+ def _pp(self, pp):
+ return "union %s" % (self.name,)
class StructDef(Def):
- pass
+ def _pp_ex(self, pp, suffix=';'):
+ members = [ pp.run(x) for x in self.members ]
+ return "struct %s { %s }%s" % \
+ (self._name_opt(), ' '.join(members), suffix)
+ def _pp(self, pp):
+ if self.name:
+ pp.run_nested(self)
+ return "struct %s" % (self.name,)
+ else:
+ return self._pp_ex(pp, suffix='')
class UnionDef(Def):
- pass
+ def _pp_ex(self, pp, suffix=';'):
+ members = [ pp.run(x) for x in self.members ]
+ return "union %s { %s }%s" % \
+ (self._name_opt(), ' '.join(members), suffix)
+ def _pp(self, pp):
+ if self.name:
+ pp.run_nested(self)
+ return "union %s" % (self.name,)
+ else:
+ return self._pp_ex(pp, suffix='')
class MemberDef(Def):
- pass
+ def _pp(self, pp):
+ t = pp.run(self.type)
+ return "%s %s;" % (t, self._name_opt())
class Dwarf(object):
@@ -371,9 +479,9 @@
members = [ self.build(x) for x in raw.nested ]
byte_size = raw.optarg('byte_size', None)
if byte_size == None:
- obj = StructForwardDef(raw.id, raw.name, members=members, \
+ obj = StructForwardDef(raw.id, raw.name, members=members,
forcename=raw.name)
- obj = StructDef(raw.id, raw.optname, members=members, \
+ obj = StructDef(raw.id, raw.optname, members=members,
byte_size=byte_size)
incomplete.update(obj, cache=raw.unit.cache)
return obj
@@ -387,7 +495,7 @@
return incomplete
members = [ self.build(x) for x in raw.nested ]
byte_size = raw.optarg('byte_size', None)
- obj = UnionDef(raw.id, raw.optname, members=members, \
+ obj = UnionDef(raw.id, raw.optname, members=members,
byte_size=byte_size)
obj.incomplete = incomplete
incomplete.complete = obj
@@ -407,11 +515,11 @@
def build_enumeration_type(self, raw):
# TODO handle DW_TAG_enumerator ???
- return EnumerationTypeDef(raw.id, name=raw.optname, \
+ return EnumerationTypeDef(raw.id, name=raw.optname,
byte_size=raw.arg('byte_size'))
def build_base_type(self, raw):
- return BaseTypeDef(raw.id, raw.optname, \
+ return BaseTypeDef(raw.id, raw.optname,
byte_size=raw.arg('byte_size'), encoding=raw.arg('encoding'))
def build_array_type(self, raw):
@@ -421,7 +529,7 @@
def build_subrange_type(self, raw):
type = self.buildref(raw.unit, raw.arg('type'))
- return ArraySubrangeDef(raw.id, type=type, \
+ return ArraySubrangeDef(raw.id, type=type,
upper_bound=raw.arg('upper_bound'))
def build_unspecified_parameters(self, raw):
@@ -434,7 +542,7 @@
if (id.startswith('<') and id.endswith('>')):
return int(id[1:-1])
else:
- raise ValueError, "Invalid dwarf id: %s" % id
+ raise ValueError("Invalid dwarf id: %s" % id)
def build(self, raw):
obj = raw.unit.cache.get(raw.id)
@@ -444,7 +552,7 @@
try:
builder = getattr(self, builder_name)
except AttributeError:
- raise AttributeError, "Unknown dwarf tag: %s" % raw
+ raise AttributeError("Unknown dwarf tag: %s" % raw)
obj = builder(raw)
raw.unit.cache.put(obj.id, obj)
return obj
@@ -487,11 +595,11 @@
try:
raw = dwarfdump.offsetmap[sym.offset]
except:
- print >> sys.stderr, "WARN: Symbol %s (%s) wan't found at offset 0x%x" % \
+ print >> sys.stderr, "WARN: Symbol %s (%s) not found at offset 0x%x" % \
(sym.name_ver, self.libfile, sym.offset)
continue
- if Config.verbose > 1:
- print "Parse symbol %s (%s)" % (sym.name_ver, self.libfile)
+ if Config.verbose >= 3:
+ print "Parsing symbol %s (%s)" % (sym.name_ver, self.libfile)
sym.definition = dwarf.build(raw)
def parse(self):
@@ -551,7 +659,7 @@
elif table == '':
self.parser = self.parse_local
else:
- raise ValueError, "Invalid symbol table: %s" % table
+ raise ValueError("Invalid symbol table: %s" % table)
return True
return False
@@ -562,7 +670,7 @@
return
m = self.re_local_symbol.match(line)
if (not m):
- raise ValueError, "Invalid symbol definition: %s" % line
+ raise ValueError("Invalid symbol definition: %s" % line)
p = m.groupdict()
if (p['symbol'] and p['symbol'].find('@') == -1):
self.add_symbol(self.local_symbols, p);
@@ -574,7 +682,7 @@
return
m = self.re_dynamic_symbol.match(line)
if (not m):
- raise ValueError, "Invalid symbol definition: %s" % line
+ raise ValueError("Invalid symbol definition: %s" % line)
p = m.groupdict()
if (p['symbol'] and p['ver']):
self.add_symbol(self.dynamic_symbols, p);
@@ -585,7 +693,7 @@
class Unit(object):
def __init__(self):
- self.cache = Cache(enabled=Config.dwarfcache_enabled, \
+ self.cache = Cache(enabled=Config.dwarfcache_enabled,
stats=DwarfdumpParser.tagcache_stats)
self.incomplete = Cache()
self.tags = {}
@@ -612,7 +720,8 @@
try:
return self.args[name]
except KeyError:
- raise KeyError, "Argument '%s' not found in %s: %s" % (name, self, self.args)
+ raise KeyError("Argument '%s' not found in %s: %s" %
+ (name, self, self.args))
def optarg(self, a, default):
try:
@@ -643,7 +752,7 @@
if line == '.debug_info':
self.parser = self.parse_debuginfo
else:
- raise ValueError, "Invalid dwarfdump header: %s" % line
+ raise ValueError("Invalid dwarfdump header: %s" % line)
def parse_argvalue(self, args):
assert args.startswith('<')
@@ -664,7 +773,8 @@
def parse_arg(self, tag, args):
m = self.re_argname.match(args)
if not m:
- raise ValueError, "Invalid dwarfdump: couldn't parse arguments: %s" % args
+ raise ValueError("Invalid dwarfdump: couldn't parse arguments: %s" %
+ args)
argname = m.group('arg')
args = args[len(argname):]
value = []
@@ -680,7 +790,7 @@
def parse_debuginfo(self, line):
m = self.re_header.match(line)
if not m:
- raise ValueError, "Invalid dwarfdump: %s" % line
+ raise ValueError("Invalid dwarfdump: %s" % line)
if m.group('level') == '0':
self.current_unit = DwarfdumpParser.Unit()
return
@@ -693,8 +803,8 @@
tag.tag not in DwarfdumpParser.skip_tags:
offset = int(tag.args['DW_AT_low_pc'], 16)
if self.offsetmap.has_key(offset):
- raise ValueError, "Dwarf dump parse error: " + \
- "symbol is aleady defined at offset 0x%x" % offset
+ raise ValueError("Dwarf dump parse error: " +
+ "symbol is aleady defined at offset 0x%x" % offset)
self.offsetmap[offset] = tag
if len(self.stack) > 0:
prev = self.stack.pop()
@@ -722,7 +832,7 @@
def common_symbols(origlib, newlib):
result = []
verdiff = ListDiff(origlib.versions.keys(), newlib.versions.keys())
- if Config.verbose > 0:
+ if Config.verbose >= 1:
print 'Original versions: ', list_str(verdiff.orig)
print 'New versions: ', list_str(verdiff.new)
for vername in verdiff.added:
@@ -756,38 +866,86 @@
for symname in names:
sym = ver.symbols[symname]
match = sym.origsym.definition == sym.newsym.definition
- if Config.verbose or not match:
- print '==== %s: definitions%s match' % \
- (sym.origsym.name_ver, "" if match else " don't")
+ if Config.verbose >= 1 or not match:
+ print '%s: definitions %smatch' % \
+ (sym.origsym.name_ver, "" if match else "mis")
if Config.dump and not match:
- for xsym in [sym.origsym, sym.newsym]:
- print '---- %s %s:' % \
+ for x in [(sym.origsym, Config.origfile),
+ (sym.newsym, Config.newfile)]:
+ xsym = x[0]
+ xout = x[1].out
+ print >> xout, '\n// Definitions mismatch: %s %s' % \
(xsym.name_ver, xsym.lib.libfile)
- print json.dump(xsym.definition.serialize(), sys.stdout)
-
+ pp = PrettyPrinter()
+ pp.run(xsym.definition)
+ for i in pp.nested():
+ print >> xout, i
+ print >> xout, pp.result()
+
+def dump_symbols(commonver):
+ class SymbolDump(object):
+ def __init__(self, io_conf):
+ self.io_conf = io_conf
+ self.pp = PrettyPrinter()
+ self.res = []
+ def run(self, sym):
+ r = self.pp.run(sym.definition)
+ self.res.append('/* %s@%s */ %s' % (sym.name, sym.version, r))
+ def finish(self):
+ print >> self.io_conf.out, '\n// Symbol dump: version %s, library %s' % \
+ (ver.name, self.io_conf.filename)
+ for i in self.pp.nested():
+ print >> self.io_conf.out, i
+ print >> self.io_conf.out, ''
+ for i in self.res:
+ print >> self.io_conf.out, i
+ for ver in commonver:
+ names = sorted(ver.names());
+ d_orig = SymbolDump(Config.origfile)
+ d_new = SymbolDump(Config.newfile)
+ for symname in names:
+ sym = ver.symbols[symname]
+ if not sym.origsym.definition or not sym.newsym.definition:
+ # XXX
+ print >> sys.stderr, 'WARN: Missing symbol definition: %s@%s' % \
+ (symname, ver.name)
+ continue
+ d_orig.run(sym.origsym)
+ d_new.run(sym.newsym)
+ d_orig.finish()
+ d_new.finish()
if __name__ == '__main__':
Config.init()
- parser = optparse.OptionParser(usage="usage: %prog origlib newlib", \
+ parser = optparse.OptionParser(usage="usage: %prog origlib newlib",
version="%prog " + Config.version)
- parser.add_option('-v', '--verbose', action='count', \
+ parser.add_option('-v', '--verbose', action='count',
help="verbose mode, may be specified several times")
- parser.add_option('--dump', action='store_true', \
- help="dump json representation if symbol definitions don't match")
- parser.add_option('--exclude-ver', action='append', metavar="re")
- parser.add_option('--include-ver', action='append', metavar="re")
- parser.add_option('--exclude-sym', action='append', metavar="re")
- parser.add_option('--include-sym', action='append', metavar="re")
+ parser.add_option('--dump', action='store_true',
+ help="dump symbol definitions")
+ parser.add_option('--out-orig', action='store',
+ help="result output file for original library", metavar="ORIGFILE")
+ parser.add_option('--out-new', action='store',
+ help="result output file for new library", metavar="NEWFILE")
+ parser.add_option('--exclude-ver', action='append', metavar="RE")
+ parser.add_option('--include-ver', action='append', metavar="RE")
+ parser.add_option('--exclude-sym', action='append', metavar="RE")
+ parser.add_option('--include-sym', action='append', metavar="RE")
(opts, args) = parser.parse_args()
if len(args) != 2:
parser.print_help()
sys.exit(-1)
+ if opts.out_orig:
+ Config.origfile.init(opts.out_orig)
+ if opts.out_new:
+ Config.newfile.init(opts.out_new)
+ if opts.dump:
+ Config.dump = True
+ Config.verbose = 1
if opts.verbose:
Config.verbose = opts.verbose
- if opts.dump:
- Config.verbose = opts.dump
- for (k, v) in ({ '_sym': Config.symbol_filter, \
+ for (k, v) in ({ '_sym': Config.symbol_filter,
'_ver': Config.version_filter }).items():
for a in [ 'exclude', 'include' ]:
opt = getattr(opts, a + k)
@@ -796,16 +954,18 @@
Config.version_filter.compile()
Config.symbol_filter.compile()
- (origfile, newfile) = (args[0], args[1])
+ (Config.origfile.filename, Config.newfile.filename) = (args[0], args[1])
- origlib = Shlib(origfile)
+ origlib = Shlib(Config.origfile.filename)
origlib.parse()
- newlib = Shlib(newfile)
+ newlib = Shlib(Config.newfile.filename)
newlib.parse()
commonver = common_symbols(origlib, newlib)
+ if Config.dump:
+ dump_symbols(commonver)
cmp_symbols(commonver)
- if Config.verbose > 2:
+ if Config.verbose >= 4:
print Dwarf.cmpcache.stats.show('Cmp')
print DwarfdumpParser.tagcache_stats.show('Dwarf tag')
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/libtest3/test.c
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/libtest3/test.c Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/libtest3/test.c Mon May 30 23:09:56 2011 (r222616)
@@ -20,12 +20,25 @@
uint32_t f2_int32;
};
+enum f3_t {
+ f3_val0, f3_val1
+};
+
+struct s4 {
+ struct s1 f1_s1;
+ uint32_t f2_int32;
+ enum f3_t f3_enum;
+};
+
+typedef int i32;
+
int func1(int a, int b);
int func2(int64_t a, uint64_t b);
void func3(struct s1 *s);
void func4(struct s1 s);
-int func5(int a, void *b, struct s2 *s);
-int func6(char a, struct s3 *s);
+int32_t func5(i32 a, void *b, struct s2 *s);
+int func6__compat(char a, struct s3 *s);
+int func6(char a, struct s4 *s);
int
func1(int a, int b)
@@ -56,7 +69,15 @@
}
int
-func6(char a, struct s3 *s)
+func6(char a, struct s4 *s)
{
return (0);
}
+
+int
+func6__compat(char a, struct s3 *s)
+{
+ return (0);
+}
+
+__sym_compat(func6, func6__compat, TEST_1.0);
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-1.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-1.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-1.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,20 +1,8 @@
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions match
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-2.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-2.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-2.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,23 +1,10 @@
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0, TEST_1.1
Added version: TEST_1.1
Added symbols: func1 at TEST_1.1
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions match
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-3.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-3.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.1-3.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,20 +1,8 @@
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions don't match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions mismatch
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-1.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-1.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-1.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,23 +1,10 @@
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
Original versions: TEST_1.0, TEST_1.1
New versions: TEST_1.0
Removed version: TEST_1.1
Removed symbols: func1 at TEST_1.1
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions match
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-2.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-2.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-2.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,23 +1,9 @@
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
Original versions: TEST_1.0, TEST_1.1
New versions: TEST_1.0, TEST_1.1
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions match
-==== func6 at TEST_1.0: definitions match
-==== func1 at TEST_1.1: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions match
+func6 at TEST_1.0: definitions match
+func1 at TEST_1.1: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-3.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-3.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.2-3.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,23 +1,10 @@
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
Original versions: TEST_1.0, TEST_1.1
New versions: TEST_1.0
Removed version: TEST_1.1
Removed symbols: func1 at TEST_1.1
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions don't match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions mismatch
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-1.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-1.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-1.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,20 +1,8 @@
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func3 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func2 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func1 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func6 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func5 at TEST_1.0 (libtest1/libtest1.so.0)
-Parse symbol func4 at TEST_1.0 (libtest1/libtest1.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions don't match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions mismatch
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-2.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-2.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-2.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,23 +1,10 @@
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func3 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func2 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func6 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func5 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func4 at TEST_1.0 (libtest2/libtest2.so.0)
-Parse symbol func1 at TEST_1.1 (libtest2/libtest2.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0, TEST_1.1
Added version: TEST_1.1
Added symbols: func1 at TEST_1.1
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions don't match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions mismatch
+func6 at TEST_1.0: definitions match
Modified: soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-3.out
==============================================================================
--- soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-3.out Mon May 30 21:56:37 2011 (r222615)
+++ soc2011/gk/ino64-head/tools/tools/shlib-compat/test/regress.3-3.out Mon May 30 23:09:56 2011 (r222616)
@@ -1,20 +1,8 @@
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func3 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func2 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func1 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func6 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func5 at TEST_1.0 (libtest3/libtest3.so.0)
-Parse symbol func4 at TEST_1.0 (libtest3/libtest3.so.0)
Original versions: TEST_1.0
New versions: TEST_1.0
-==== func1 at TEST_1.0: definitions match
-==== func2 at TEST_1.0: definitions match
-==== func3 at TEST_1.0: definitions match
-==== func4 at TEST_1.0: definitions match
-==== func5 at TEST_1.0: definitions match
-==== func6 at TEST_1.0: definitions match
+func1 at TEST_1.0: definitions match
+func2 at TEST_1.0: definitions match
+func3 at TEST_1.0: definitions match
+func4 at TEST_1.0: definitions match
+func5 at TEST_1.0: definitions match
+func6 at TEST_1.0: definitions match
More information about the svn-soc-all
mailing list