You're right. I'm just a little paranoid. Sorry! Gabe
Korey Sewell wrote: > Yea, I dont think anything special happened with this merge. > > I just had some things committed in my tree, pulled some changes > (which created two heads), then merged those together. > > On Wed, May 13, 2009 at 9:40 AM, nathan binkert <[email protected]> wrote: > >> Isn't this a normal merge? >> >> 2009/5/12 Gabe Black <[email protected]>: >> >>> I know you said there was some mercurial weirdness that happened, but >>> what's going on for x86 here? Is this a mistake and should it be >>> addressed somehow? I don't want to pull if something will get >>> erased/regressed/etc. >>> >>> Gabe >>> >>> Korey Sewell wrote: >>> >>>> changeset 783bacbf839d in /z/repo/m5 >>>> details: http://repo.m5sim.org/m5?cmd=changeset;node=783bacbf839d >>>> description: >>>> merge code >>>> >>>> diffstat: >>>> >>>> 12 files changed, 711 insertions(+), 667 deletions(-) >>>> SConstruct | 2 >>>> src/SConscript | 371 +++++++++++---------- >>>> src/arch/x86/faults.cc | 10 >>>> src/arch/x86/miscregfile.cc | 114 ++++-- >>>> src/arch/x86/miscregfile.hh | 2 >>>> src/arch/x86/miscregs.hh | 7 >>>> src/arch/x86/predecoder.cc | 78 ---- >>>> src/arch/x86/predecoder.hh | 5 >>>> src/arch/x86/process.cc | 36 +- >>>> src/arch/x86/tlb.cc | 749 >>>> +++++++++++++++++++++---------------------- >>>> src/arch/x86/tlb.hh | 2 >>>> src/sim/SConscript | 2 >>>> >>>> diffs (truncated from 1875 to 300 lines): >>>> >>>> diff -r 7e5c7412ac89 -r 783bacbf839d SConstruct >>>> --- a/SConstruct Tue May 05 02:39:05 2009 -0400 >>>> +++ b/SConstruct Tue May 05 02:44:21 2009 -0400 >>>> @@ -394,7 +394,7 @@ >>>> if main['GCC']: >>>> main.Append(CCFLAGS='-pipe') >>>> main.Append(CCFLAGS='-fno-strict-aliasing') >>>> - main.Append(CCFLAGS=Split('-Wall -Wno-sign-compare -Werror -Wundef')) >>>> + main.Append(CCFLAGS=['-Wall', '-Wno-sign-compare', '-Wundef']) >>>> main.Append(CXXFLAGS='-Wno-deprecated') >>>> elif main['ICC']: >>>> pass #Fix me... add warning flags once we clean up icc warnings >>>> diff -r 7e5c7412ac89 -r 783bacbf839d src/SConscript >>>> --- a/src/SConscript Tue May 05 02:39:05 2009 -0400 >>>> +++ b/src/SConscript Tue May 05 02:44:21 2009 -0400 >>>> @@ -29,6 +29,7 @@ >>>> # Authors: Nathan Binkert >>>> >>>> import array >>>> +import bisect >>>> import imp >>>> import marshal >>>> import os >>>> @@ -50,122 +51,144 @@ >>>> >>>> build_env = dict([(opt, env[opt]) for opt in export_vars]) >>>> >>>> -def sort_list(_list): >>>> - """return a sorted copy of '_list'""" >>>> - if isinstance(_list, list): >>>> - _list = _list[:] >>>> - else: >>>> - _list = list(_list) >>>> - _list.sort() >>>> - return _list >>>> +######################################################################## >>>> +# Code for adding source files of various types >>>> +# >>>> +class SourceMeta(type): >>>> + def __init__(cls, name, bases, dict): >>>> + super(SourceMeta, cls).__init__(name, bases, dict) >>>> + cls.all = [] >>>> + >>>> + def get(cls, **kwargs): >>>> + for src in cls.all: >>>> + for attr,value in kwargs.iteritems(): >>>> + if getattr(src, attr) != value: >>>> + break >>>> + else: >>>> + yield src >>>> >>>> -class PySourceFile(object): >>>> +class SourceFile(object): >>>> + __metaclass__ = SourceMeta >>>> + def __init__(self, source): >>>> + tnode = source >>>> + if not isinstance(source, SCons.Node.FS.File): >>>> + tnode = File(source) >>>> + >>>> + self.tnode = tnode >>>> + self.snode = tnode.srcnode() >>>> + self.filename = str(tnode) >>>> + self.dirname = dirname(self.filename) >>>> + self.basename = basename(self.filename) >>>> + index = self.basename.rfind('.') >>>> + if index <= 0: >>>> + # dot files aren't extensions >>>> + self.extname = self.basename, None >>>> + else: >>>> + self.extname = self.basename[:index], self.basename[index+1:] >>>> + >>>> + for base in type(self).__mro__: >>>> + if issubclass(base, SourceFile): >>>> + bisect.insort_right(base.all, self) >>>> + >>>> + def __lt__(self, other): return self.filename < other.filename >>>> + def __le__(self, other): return self.filename <= other.filename >>>> + def __gt__(self, other): return self.filename > other.filename >>>> + def __ge__(self, other): return self.filename >= other.filename >>>> + def __eq__(self, other): return self.filename == other.filename >>>> + def __ne__(self, other): return self.filename != other.filename >>>> + >>>> +class Source(SourceFile): >>>> + '''Add a c/c++ source file to the build''' >>>> + def __init__(self, source, Werror=True, swig=False, bin_only=False, >>>> + skip_lib=False): >>>> + super(Source, self).__init__(source) >>>> + >>>> + self.Werror = Werror >>>> + self.swig = swig >>>> + self.bin_only = bin_only >>>> + self.skip_lib = bin_only or skip_lib >>>> + >>>> +class PySource(SourceFile): >>>> + '''Add a python source file to the named package''' >>>> invalid_sym_char = re.compile('[^A-z0-9_]') >>>> - def __init__(self, package, tnode): >>>> - snode = tnode.srcnode() >>>> - filename = str(tnode) >>>> - pyname = basename(filename) >>>> - assert pyname.endswith('.py') >>>> - name = pyname[:-3] >>>> + modules = {} >>>> + tnodes = {} >>>> + symnames = {} >>>> + >>>> + def __init__(self, package, source): >>>> + super(PySource, self).__init__(source) >>>> + >>>> + modname,ext = self.extname >>>> + assert ext == 'py' >>>> + >>>> if package: >>>> path = package.split('.') >>>> else: >>>> path = [] >>>> >>>> modpath = path[:] >>>> - if name != '__init__': >>>> - modpath += [name] >>>> + if modname != '__init__': >>>> + modpath += [ modname ] >>>> modpath = '.'.join(modpath) >>>> >>>> - arcpath = path + [ pyname ] >>>> - arcname = joinpath(*arcpath) >>>> + arcpath = path + [ self.basename ] >>>> + debugname = self.snode.abspath >>>> + if not exists(debugname): >>>> + debugname = self.tnode.abspath >>>> >>>> - debugname = snode.abspath >>>> - if not exists(debugname): >>>> - debugname = tnode.abspath >>>> + self.package = package >>>> + self.modname = modname >>>> + self.modpath = modpath >>>> + self.arcname = joinpath(*arcpath) >>>> + self.debugname = debugname >>>> + self.compiled = File(self.filename + 'c') >>>> + self.assembly = File(self.filename + '.s') >>>> + self.symname = "PyEMB_" + PySource.invalid_sym_char.sub('_', >>>> modpath) >>>> >>>> - self.tnode = tnode >>>> - self.snode = snode >>>> - self.pyname = pyname >>>> - self.package = package >>>> - self.modpath = modpath >>>> - self.arcname = arcname >>>> - self.debugname = debugname >>>> - self.compiled = File(filename + 'c') >>>> - self.assembly = File(filename + '.s') >>>> - self.symname = "PyEMB_" + self.invalid_sym_char.sub('_', modpath) >>>> - >>>> + PySource.modules[modpath] = self >>>> + PySource.tnodes[self.tnode] = self >>>> + PySource.symnames[self.symname] = self >>>> >>>> -######################################################################## >>>> -# Code for adding source files of various types >>>> -# >>>> -cc_lib_sources = [] >>>> -def Source(source): >>>> - '''Add a source file to the libm5 build''' >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> - >>>> - cc_lib_sources.append(source) >>>> - >>>> -cc_bin_sources = [] >>>> -def BinSource(source): >>>> - '''Add a source file to the m5 binary build''' >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> - >>>> - cc_bin_sources.append(source) >>>> - >>>> -py_sources = [] >>>> -def PySource(package, source): >>>> - '''Add a python source file to the named package''' >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> - >>>> - source = PySourceFile(package, source) >>>> - py_sources.append(source) >>>> - >>>> -sim_objects_fixed = False >>>> -sim_object_modfiles = set() >>>> -def SimObject(source): >>>> +class SimObject(PySource): >>>> '''Add a SimObject python file as a python source object and add >>>> it to a list of sim object modules''' >>>> >>>> - if sim_objects_fixed: >>>> - raise AttributeError, "Too late to call SimObject now." >>>> + fixed = False >>>> + modnames = [] >>>> >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> + def __init__(self, source): >>>> + super(SimObject, self).__init__('m5.objects', source) >>>> + if self.fixed: >>>> + raise AttributeError, "Too late to call SimObject now." >>>> >>>> - PySource('m5.objects', source) >>>> - modfile = basename(str(source)) >>>> - assert modfile.endswith('.py') >>>> - modname = modfile[:-3] >>>> - sim_object_modfiles.add(modname) >>>> + bisect.insort_right(SimObject.modnames, self.modname) >>>> >>>> -swig_sources = [] >>>> -def SwigSource(package, source): >>>> +class SwigSource(SourceFile): >>>> '''Add a swig file to build''' >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> - val = source,package >>>> - swig_sources.append(val) >>>> + >>>> + def __init__(self, package, source): >>>> + super(SwigSource, self).__init__(source) >>>> + >>>> + modname,ext = self.extname >>>> + assert ext == 'i' >>>> + >>>> + self.module = modname >>>> + cc_file = joinpath(self.dirname, modname + '_wrap.cc') >>>> + py_file = joinpath(self.dirname, modname + '.py') >>>> + >>>> + self.cc_source = Source(cc_file, swig=True) >>>> + self.py_source = PySource(package, py_file) >>>> >>>> unit_tests = [] >>>> def UnitTest(target, sources): >>>> if not isinstance(sources, (list, tuple)): >>>> sources = [ sources ] >>>> - >>>> - srcs = [] >>>> - for source in sources: >>>> - if not isinstance(source, SCons.Node.FS.File): >>>> - source = File(source) >>>> - srcs.append(source) >>>> - >>>> - unit_tests.append((target, srcs)) >>>> + >>>> + sources = [ Source(src, skip_lib=True) for src in sources ] >>>> + unit_tests.append((target, sources)) >>>> >>>> # Children should have access >>>> Export('Source') >>>> -Export('BinSource') >>>> Export('PySource') >>>> Export('SimObject') >>>> Export('SwigSource') >>>> @@ -276,7 +299,8 @@ >>>> if fullname.startswith('m5.internal'): >>>> return None >>>> >>>> - if fullname in self.modules and exists(self.modules[fullname]): >>>> + source = self.modules.get(fullname, None) >>>> + if source is not None and exists(source.snode.abspath): >>>> return self >>>> >>>> return None >>>> @@ -295,34 +319,28 @@ >>>> mod.__dict__['buildEnv'] = build_env >>>> return mod >>>> >>>> - srcfile = self.modules[fullname] >>>> - if basename(srcfile) == '__init__.py': >>>> - mod.__path__ = fullname.split('.') >>>> - mod.__file__ = srcfile >>>> + source = self.modules[fullname] >>>> + if source.modname == '__init__': >>>> + mod.__path__ = source.modpath >>>> + mod.__file__ = source.snode.abspath >>>> >>>> - exec file(srcfile, 'r') in mod.__dict__ >>>> + exec file(source.snode.abspath, 'r') in mod.__dict__ >>>> >>>> return mod >>>> >>>> -py_modules = {} >>>> -for source in py_sources: >>>> - py_modules[source.modpath] = source.snode.abspath >>>> - >>>> # install the python importer so we can grab stuff from the source >>>> # tree itself. We can't have SimObjects added after this point or >>>> # else we won't know about them for the rest of the stuff. >>>> -sim_objects_fixed = True >>>> -importer = DictImporter(py_modules) >>>> +SimObject.fixed = True >>>> +importer = DictImporter(PySource.modules) >>>> sys.meta_path[0:0] = [ importer ] >>>> >>>> import m5 >>>> >>>> # import all sim objects so we can populate the all_objects list >>>> _______________________________________________ >>>> m5-dev mailing list >>>> [email protected] >>>> http://m5sim.org/mailman/listinfo/m5-dev >>>> >>>> >>> _______________________________________________ >>> m5-dev mailing list >>> [email protected] >>> http://m5sim.org/mailman/listinfo/m5-dev >>> >>> >>> >> _______________________________________________ >> m5-dev mailing list >> [email protected] >> http://m5sim.org/mailman/listinfo/m5-dev >> >> > > > > _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
