Move line_header_hash to dwarf2_per_objfile
[deliverable/binutils-gdb.git] / gdb / system-gdbinit / elinos.py
index 08c5b0f173fdd25ee6104465646d1305671e4cac..c2b351c6ef5fb2e818ad27d90a3bf5aa72c1a11a 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2011-2013 Free Software Foundation, Inc.
+# Copyright (C) 2011-2020 Free Software Foundation, Inc.
 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
@@ -35,9 +35,8 @@ def get_elinos_environment():
       * 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, it is then assumed that the ELinOS
-    environment is not properly set up. Return None in such a case,
-    and print a warning.
+    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"):
@@ -46,9 +45,13 @@ def get_elinos_environment():
             result[key] = os.environ[var]
         else:
             warn("%s not set" % var)
-            return None
+            result[key] = None
+
+    if result["project"] is not None:
+        result["xenomai"] = glob.glob(result["project"] + "/xenomai-[0-9.]*")
+    else:
+        result["xenomai"] = []
 
-    result["xenomai"] = glob.glob(result["project"] + "/xenomai-[0-9.]*")
     return result
 
 
@@ -56,22 +59,31 @@ 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 not, abort
-    with a warning.
+    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()
 
-    if elinos_env is None:
+    solib_dirs = []
+
+    # System libraries
+    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)
 
-        solib_dirs = []
+    # Xenomai libraries. Those are optional, so have a lighter warning
+    # if they cannot be located.
+    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")]
-        solib_dirs += ["%s/%s" % (solib_prefix, "lib")]
+            solib_dirs += ["%s/%s"
+                           % (dir, "xenomai-build/usr/realtime/lib")]
 
-        gdb.execute("set solib-absolute-prefix %s" % solib_prefix)
+    if len(solib_dirs) != 0:
         gdb.execute("set solib-search-path %s" % ":".join(solib_dirs))
 
 
This page took 0.025097 seconds and 4 git commands to generate.