gdb/system-gdbinit/elinos.py - gdb
Functions defined
Source code
- """Configure GDB using the ELinOS environment."""
- import os
- import glob
- import gdb
- def warn(msg):
- print "warning: %s" % msg
- def get_elinos_environment():
- """Return the ELinOS environment.
- If the ELinOS environment is properly set up, return a dictionary
- which contains:
- * The path to the ELinOS project at key 'project';
- * The path to the ELinOS CDK at key 'cdk';
- * The ELinOS target name at key 'target' (Eg. 'i486-linux');
- * A list of Xenomai install prefixes (which could be empty, if
- the ELinOS project does not include Xenomai) at key 'xenomai'.
- If one of these cannot be found, print a warning; the corresponding
- value in the returned dictionary will be None.
- """
- result = {}
- for key in ("project", "cdk", "target"):
- var = "ELINOS_" + key.upper()
- if var in os.environ:
- result[key] = os.environ[var]
- else:
- warn("%s not set" % var)
- result[key] = None
- if result["project"] is not None:
- result["xenomai"] = glob.glob(result["project"] + "/xenomai-[0-9.]*")
- else:
- result["xenomai"] = []
- return result
- def elinos_init():
- """Initialize debugger environment for ELinOS.
- Let the debugger know where to find the ELinOS libraries on host. This
- assumes that an ELinOS environment is properly set up. If some environment
- variables are missing, warn about which library may be missing.
- """
- elinos_env = get_elinos_environment()
- solib_dirs = []
-
- if None in (elinos_env[key] for key in ("cdk", "target")):
- warn("ELinOS system libraries will not be loaded")
- else:
- solib_prefix = "%s/%s" % (elinos_env["cdk"], elinos_env["target"])
- solib_dirs += ["%s/%s" % (solib_prefix, "lib")]
- gdb.execute("set solib-absolute-prefix %s" % solib_prefix)
-
-
- if elinos_env["project"] is None:
- warn("Xenomai libraries may not be loaded")
- else:
- for dir in elinos_env['xenomai']:
- solib_dirs += ["%s/%s"
- % (dir, "xenomai-build/usr/realtime/lib")]
- if len(solib_dirs) != 0:
- gdb.execute("set solib-search-path %s" % ":".join(solib_dirs))
- if __name__ == "__main__":
- elinos_init()