diff options
author | Ben Cheng <bccheng@google.com> | 2013-08-23 16:48:20 -0700 |
---|---|---|
committer | Ben Cheng <bccheng@google.com> | 2013-08-23 16:48:20 -0700 |
commit | 4cedbb07c5475ce9a5fc9f2d9645c00292e4be72 (patch) | |
tree | 77d42e8a33937ae9a26df56dc5dc9be45a9ba14c /share | |
parent | d14b3484cced64724f7c2c70b537a3b1c301b875 (diff) | |
download | arm-eabi-4.8-4cedbb07c5475ce9a5fc9f2d9645c00292e4be72.tar.gz |
[linux-x86] ARM eabi toolchain refresh.
GCC: 4.8.1
Binutils: 2.23
GDB: 7.6
BUG: 10428168
Change-Id: I74ef038ca08ee4ed2499135914c54f39e84c0df2
Diffstat (limited to 'share')
21 files changed, 5089 insertions, 0 deletions
diff --git a/share/gdb/python/gdb/__init__.py b/share/gdb/python/gdb/__init__.py new file mode 100644 index 0000000..6311583 --- /dev/null +++ b/share/gdb/python/gdb/__init__.py @@ -0,0 +1,124 @@ +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import traceback +import os +import sys +import _gdb + +if sys.version_info[0] > 2: + # Python 3 moved "reload" + from imp import reload + +from _gdb import * + +class _GdbFile (object): + # These two are needed in Python 3 + encoding = "UTF-8" + errors = "strict" + + def close(self): + # Do nothing. + return None + + def isatty(self): + return False + + def writelines(self, iterable): + for line in iterable: + self.write(line) + + def flush(self): + flush() + +class GdbOutputFile (_GdbFile): + def write(self, s): + write(s, stream=STDOUT) + +sys.stdout = GdbOutputFile() + +class GdbOutputErrorFile (_GdbFile): + def write(self, s): + write(s, stream=STDERR) + +sys.stderr = GdbOutputErrorFile() + +# Default prompt hook does nothing. +prompt_hook = None + +# Ensure that sys.argv is set to something. +# We do not use PySys_SetArgvEx because it did not appear until 2.6.6. +sys.argv = [''] + +# Initial pretty printers. +pretty_printers = [] + +# Initial type printers. +type_printers = [] + +# Convenience variable to GDB's python directory +PYTHONDIR = os.path.dirname(os.path.dirname(__file__)) + +# Auto-load all functions/commands. + +# Packages to auto-load. + +packages = [ + 'function', + 'command' +] + +# pkgutil.iter_modules is not available prior to Python 2.6. Instead, +# manually iterate the list, collating the Python files in each module +# path. Construct the module name, and import. + +def auto_load_packages(): + for package in packages: + location = os.path.join(os.path.dirname(__file__), package) + if os.path.exists(location): + py_files = filter(lambda x: x.endswith('.py') + and x != '__init__.py', + os.listdir(location)) + + for py_file in py_files: + # Construct from foo.py, gdb.module.foo + modname = "%s.%s.%s" % ( __name__, package, py_file[:-3] ) + try: + if modname in sys.modules: + # reload modules with duplicate names + reload(__import__(modname)) + else: + __import__(modname) + except: + sys.stderr.write (traceback.format_exc() + "\n") + +auto_load_packages() + +def GdbSetPythonDirectory(dir): + """Update sys.path, reload gdb and auto-load packages.""" + global PYTHONDIR + + try: + sys.path.remove(PYTHONDIR) + except ValueError: + pass + sys.path.insert(0, dir) + + PYTHONDIR = dir + + # note that reload overwrites the gdb module without deleting existing + # attributes + reload(__import__(__name__)) + auto_load_packages() diff --git a/share/gdb/python/gdb/command/__init__.py b/share/gdb/python/gdb/command/__init__.py new file mode 100644 index 0000000..21eaef8 --- /dev/null +++ b/share/gdb/python/gdb/command/__init__.py @@ -0,0 +1,16 @@ +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + + diff --git a/share/gdb/python/gdb/command/explore.py b/share/gdb/python/gdb/command/explore.py new file mode 100644 index 0000000..dd77875 --- /dev/null +++ b/share/gdb/python/gdb/command/explore.py @@ -0,0 +1,760 @@ +# GDB 'explore' command. +# Copyright (C) 2012-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Implementation of the GDB 'explore' command using the GDB Python API.""" + +import gdb +import sys + +if sys.version_info[0] > 2: + # Python 3 renamed raw_input to input + raw_input = input + +class Explorer(object): + """Internal class which invokes other explorers.""" + + # This map is filled by the Explorer.init_env() function + type_code_to_explorer_map = { } + + _SCALAR_TYPE_LIST = ( + gdb.TYPE_CODE_CHAR, + gdb.TYPE_CODE_INT, + gdb.TYPE_CODE_BOOL, + gdb.TYPE_CODE_FLT, + gdb.TYPE_CODE_VOID, + gdb.TYPE_CODE_ENUM, + ) + + @staticmethod + def guard_expr(expr): + length = len(expr) + guard = False + + if expr[0] == '(' and expr[length-1] == ')': + pass + else: + i = 0 + while i < length: + c = expr[i] + if (c == '_' or ('a' <= c and c <= 'z') or + ('A' <= c and c <= 'Z') or ('0' <= c and c <= '9')): + pass + else: + guard = True + break + i += 1 + + if guard: + return "(" + expr + ")" + else: + return expr + + @staticmethod + def explore_expr(expr, value, is_child): + """Main function to explore an expression value. + + Arguments: + expr: The expression string that is being explored. + value: The gdb.Value value of the expression. + is_child: Boolean value to indicate if the expression is a child. + An expression is a child if it is derived from the main + expression entered by the user. For example, if the user + entered an expression which evaluates to a struct, then + when exploring the fields of the struct, is_child is set + to True internally. + + Returns: + No return value. + """ + type_code = value.type.code + if type_code in Explorer.type_code_to_explorer_map: + explorer_class = Explorer.type_code_to_explorer_map[type_code] + while explorer_class.explore_expr(expr, value, is_child): + pass + else: + print ("Explorer for type '%s' not yet available.\n" % + str(value.type)) + + @staticmethod + def explore_type(name, datatype, is_child): + """Main function to explore a data type. + + Arguments: + name: The string representing the path to the data type being + explored. + datatype: The gdb.Type value of the data type being explored. + is_child: Boolean value to indicate if the name is a child. + A name is a child if it is derived from the main name + entered by the user. For example, if the user entered + the name of struct type, then when exploring the fields + of the struct, is_child is set to True internally. + + Returns: + No return value. + """ + type_code = datatype.code + if type_code in Explorer.type_code_to_explorer_map: + explorer_class = Explorer.type_code_to_explorer_map[type_code] + while explorer_class.explore_type(name, datatype, is_child): + pass + else: + print ("Explorer for type '%s' not yet available.\n" % + str(datatype)) + + @staticmethod + def init_env(): + """Initializes the Explorer environment. + This function should be invoked before starting any exploration. If + invoked before an exploration, it need not be invoked for subsequent + explorations. + """ + Explorer.type_code_to_explorer_map = { + gdb.TYPE_CODE_CHAR : ScalarExplorer, + gdb.TYPE_CODE_INT : ScalarExplorer, + gdb.TYPE_CODE_BOOL : ScalarExplorer, + gdb.TYPE_CODE_FLT : ScalarExplorer, + gdb.TYPE_CODE_VOID : ScalarExplorer, + gdb.TYPE_CODE_ENUM : ScalarExplorer, + gdb.TYPE_CODE_STRUCT : CompoundExplorer, + gdb.TYPE_CODE_UNION : CompoundExplorer, + gdb.TYPE_CODE_PTR : PointerExplorer, + gdb.TYPE_CODE_REF : ReferenceExplorer, + gdb.TYPE_CODE_TYPEDEF : TypedefExplorer, + gdb.TYPE_CODE_ARRAY : ArrayExplorer + } + + @staticmethod + def is_scalar_type(type): + """Checks whether a type is a scalar type. + A type is a scalar type of its type is + gdb.TYPE_CODE_CHAR or + gdb.TYPE_CODE_INT or + gdb.TYPE_CODE_BOOL or + gdb.TYPE_CODE_FLT or + gdb.TYPE_CODE_VOID or + gdb.TYPE_CODE_ENUM. + + Arguments: + type: The type to be checked. + + Returns: + 'True' if 'type' is a scalar type. 'False' otherwise. + """ + return type.code in Explorer._SCALAR_TYPE_LIST + + @staticmethod + def return_to_parent_value(): + """A utility function which prints that the current exploration session + is returning to the parent value. Useful when exploring values. + """ + print ("\nReturning to parent value...\n") + + @staticmethod + def return_to_parent_value_prompt(): + """A utility function which prompts the user to press the 'enter' key + so that the exploration session can shift back to the parent value. + Useful when exploring values. + """ + raw_input("\nPress enter to return to parent value: ") + + @staticmethod + def return_to_enclosing_type(): + """A utility function which prints that the current exploration session + is returning to the enclosing type. Useful when exploring types. + """ + print ("\nReturning to enclosing type...\n") + + @staticmethod + def return_to_enclosing_type_prompt(): + """A utility function which prompts the user to press the 'enter' key + so that the exploration session can shift back to the enclosing type. + Useful when exploring types. + """ + raw_input("\nPress enter to return to enclosing type: ") + + +class ScalarExplorer(object): + """Internal class used to explore scalar values.""" + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore scalar values. + See Explorer.explore_expr and Explorer.is_scalar_type for more + information. + """ + print ("'%s' is a scalar value of type '%s'." % + (expr, value.type)) + print ("%s = %s" % (expr, str(value))) + + if is_child: + Explorer.return_to_parent_value_prompt() + Explorer.return_to_parent_value() + + return False + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore scalar types. + See Explorer.explore_type and Explorer.is_scalar_type for more + information. + """ + if datatype.code == gdb.TYPE_CODE_ENUM: + if is_child: + print ("%s is of an enumerated type '%s'." % + (name, str(datatype))) + else: + print ("'%s' is an enumerated type." % name) + else: + if is_child: + print ("%s is of a scalar type '%s'." % + (name, str(datatype))) + else: + print ("'%s' is a scalar type." % name) + + if is_child: + Explorer.return_to_enclosing_type_prompt() + Explorer.return_to_enclosing_type() + + return False + + +class PointerExplorer(object): + """Internal class used to explore pointer values.""" + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore pointer values. + See Explorer.explore_expr for more information. + """ + print ("'%s' is a pointer to a value of type '%s'" % + (expr, str(value.type.target()))) + option = raw_input("Continue exploring it as a pointer to a single " + "value [y/n]: ") + if option == "y": + deref_value = None + try: + deref_value = value.dereference() + str(deref_value) + except gdb.MemoryError: + print ("'%s' a pointer pointing to an invalid memory " + "location." % expr) + if is_child: + Explorer.return_to_parent_value_prompt() + return False + Explorer.explore_expr("*%s" % Explorer.guard_expr(expr), + deref_value, is_child) + return False + + option = raw_input("Continue exploring it as a pointer to an " + "array [y/n]: ") + if option == "y": + while True: + index = 0 + try: + index = int(raw_input("Enter the index of the element you " + "want to explore in '%s': " % expr)) + except ValueError: + break + element_expr = "%s[%d]" % (Explorer.guard_expr(expr), index) + element = value[index] + try: + str(element) + except gdb.MemoryError: + print ("Cannot read value at index %d." % index) + continue + Explorer.explore_expr(element_expr, element, True) + return False + + if is_child: + Explorer.return_to_parent_value() + return False + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore pointer types. + See Explorer.explore_type for more information. + """ + target_type = datatype.target() + print ("\n%s is a pointer to a value of type '%s'." % + (name, str(target_type))) + + Explorer.explore_type("the pointee type of %s" % name, + target_type, + is_child) + return False + + +class ReferenceExplorer(object): + """Internal class used to explore reference (TYPE_CODE_REF) values.""" + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore array values. + See Explorer.explore_expr for more information. + """ + referenced_value = value.referenced_value() + Explorer.explore_expr(expr, referenced_value, is_child) + return False + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore pointer types. + See Explorer.explore_type for more information. + """ + target_type = datatype.target() + Explorer.explore_type(name, target_type, is_child) + return False + + +class ArrayExplorer(object): + """Internal class used to explore arrays.""" + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore array values. + See Explorer.explore_expr for more information. + """ + target_type = value.type.target() + print ("'%s' is an array of '%s'." % (expr, str(target_type))) + index = 0 + try: + index = int(raw_input("Enter the index of the element you want to " + "explore in '%s': " % expr)) + except ValueError: + if is_child: + Explorer.return_to_parent_value() + return False + + element = None + try: + element = value[index] + str(element) + except gdb.MemoryError: + print ("Cannot read value at index %d." % index) + raw_input("Press enter to continue... ") + return True + + Explorer.explore_expr("%s[%d]" % (Explorer.guard_expr(expr), index), + element, True) + return True + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore array types. + See Explorer.explore_type for more information. + """ + target_type = datatype.target() + print ("%s is an array of '%s'." % (name, str(target_type))) + + Explorer.explore_type("the array element of %s" % name, target_type, + is_child) + return False + + +class CompoundExplorer(object): + """Internal class used to explore struct, classes and unions.""" + + @staticmethod + def _print_fields(print_list): + """Internal function which prints the fields of a struct/class/union. + """ + max_field_name_length = 0 + for pair in print_list: + if max_field_name_length < len(pair[0]): + max_field_name_length = len(pair[0]) + + for pair in print_list: + print (" %*s = %s" % (max_field_name_length, pair[0], pair[1])) + + @staticmethod + def _get_real_field_count(fields): + real_field_count = 0; + for field in fields: + if not field.artificial: + real_field_count = real_field_count + 1 + + return real_field_count + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore structs/classes and union values. + See Explorer.explore_expr for more information. + """ + datatype = value.type + type_code = datatype.code + fields = datatype.fields() + + if type_code == gdb.TYPE_CODE_STRUCT: + type_desc = "struct/class" + else: + type_desc = "union" + + if CompoundExplorer._get_real_field_count(fields) == 0: + print ("The value of '%s' is a %s of type '%s' with no fields." % + (expr, type_desc, str(value.type))) + if is_child: + Explorer.return_to_parent_value_prompt() + return False + + print ("The value of '%s' is a %s of type '%s' with the following " + "fields:\n" % (expr, type_desc, str(value.type))) + + has_explorable_fields = False + choice_to_compound_field_map = { } + current_choice = 0 + print_list = [ ] + for field in fields: + if field.artificial: + continue + field_full_name = Explorer.guard_expr(expr) + "." + field.name + if field.is_base_class: + field_value = value.cast(field.type) + else: + field_value = value[field.name] + literal_value = "" + if type_code == gdb.TYPE_CODE_UNION: + literal_value = ("<Enter %d to explore this field of type " + "'%s'>" % (current_choice, str(field.type))) + has_explorable_fields = True + else: + if Explorer.is_scalar_type(field.type): + literal_value = ("%s .. (Value of type '%s')" % + (str(field_value), str(field.type))) + else: + if field.is_base_class: + field_desc = "base class" + else: + field_desc = "field" + literal_value = ("<Enter %d to explore this %s of type " + "'%s'>" % + (current_choice, field_desc, + str(field.type))) + has_explorable_fields = True + + choice_to_compound_field_map[str(current_choice)] = ( + field_full_name, field_value) + current_choice = current_choice + 1 + + print_list.append((field.name, literal_value)) + + CompoundExplorer._print_fields(print_list) + print ("") + + if has_explorable_fields: + choice = raw_input("Enter the field number of choice: ") + if choice in choice_to_compound_field_map: + Explorer.explore_expr(choice_to_compound_field_map[choice][0], + choice_to_compound_field_map[choice][1], + True) + return True + else: + if is_child: + Explorer.return_to_parent_value() + else: + if is_child: + Explorer.return_to_parent_value_prompt() + + return False + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore struct/class and union types. + See Explorer.explore_type for more information. + """ + type_code = datatype.code + type_desc = "" + if type_code == gdb.TYPE_CODE_STRUCT: + type_desc = "struct/class" + else: + type_desc = "union" + + fields = datatype.fields() + if CompoundExplorer._get_real_field_count(fields) == 0: + if is_child: + print ("%s is a %s of type '%s' with no fields." % + (name, type_desc, str(datatype))) + Explorer.return_to_enclosing_type_prompt() + else: + print ("'%s' is a %s with no fields." % (name, type_desc)) + return False + + if is_child: + print ("%s is a %s of type '%s' " + "with the following fields:\n" % + (name, type_desc, str(datatype))) + else: + print ("'%s' is a %s with the following " + "fields:\n" % + (name, type_desc)) + + has_explorable_fields = False + current_choice = 0 + choice_to_compound_field_map = { } + print_list = [ ] + for field in fields: + if field.artificial: + continue + if field.is_base_class: + field_desc = "base class" + else: + field_desc = "field" + rhs = ("<Enter %d to explore this %s of type '%s'>" % + (current_choice, field_desc, str(field.type))) + print_list.append((field.name, rhs)) + choice_to_compound_field_map[str(current_choice)] = ( + field.name, field.type, field_desc) + current_choice = current_choice + 1 + + CompoundExplorer._print_fields(print_list) + print ("") + + if len(choice_to_compound_field_map) > 0: + choice = raw_input("Enter the field number of choice: ") + if choice in choice_to_compound_field_map: + if is_child: + new_name = ("%s '%s' of %s" % + (choice_to_compound_field_map[choice][2], + choice_to_compound_field_map[choice][0], + name)) + else: + new_name = ("%s '%s' of '%s'" % + (choice_to_compound_field_map[choice][2], + choice_to_compound_field_map[choice][0], + name)) + Explorer.explore_type(new_name, + choice_to_compound_field_map[choice][1], True) + return True + else: + if is_child: + Explorer.return_to_enclosing_type() + else: + if is_child: + Explorer.return_to_enclosing_type_prompt() + + return False + + +class TypedefExplorer(object): + """Internal class used to explore values whose type is a typedef.""" + + @staticmethod + def explore_expr(expr, value, is_child): + """Function to explore typedef values. + See Explorer.explore_expr for more information. + """ + actual_type = value.type.strip_typedefs() + print ("The value of '%s' is of type '%s' " + "which is a typedef of type '%s'" % + (expr, str(value.type), str(actual_type))) + + Explorer.explore_expr(expr, value.cast(actual_type), is_child) + return False + + @staticmethod + def explore_type(name, datatype, is_child): + """Function to explore typedef types. + See Explorer.explore_type for more information. + """ + actual_type = datatype.strip_typedefs() + if is_child: + print ("The type of %s is a typedef of type '%s'." % + (name, str(actual_type))) + else: + print ("The type '%s' is a typedef of type '%s'." % + (name, str(actual_type))) + + Explorer.explore_type(name, actual_type, is_child) + return False + + +class ExploreUtils(object): + """Internal class which provides utilities for the main command classes.""" + + @staticmethod + def check_args(name, arg_str): + """Utility to check if adequate number of arguments are passed to an + explore command. + + Arguments: + name: The name of the explore command. + arg_str: The argument string passed to the explore command. + + Returns: + True if adequate arguments are passed, false otherwise. + + Raises: + gdb.GdbError if adequate arguments are not passed. + """ + if len(arg_str) < 1: + raise gdb.GdbError("ERROR: '%s' requires an argument." + % name) + return False + else: + return True + + @staticmethod + def get_type_from_str(type_str): + """A utility function to deduce the gdb.Type value from a string + representing the type. + + Arguments: + type_str: The type string from which the gdb.Type value should be + deduced. + + Returns: + The deduced gdb.Type value if possible, None otherwise. + """ + try: + # Assume the current language to be C/C++ and make a try. + return gdb.parse_and_eval("(%s *)0" % type_str).type.target() + except RuntimeError: + # If assumption of current language to be C/C++ was wrong, then + # lookup the type using the API. + try: + return gdb.lookup_type(type_str) + except RuntimeError: + return None + + @staticmethod + def get_value_from_str(value_str): + """A utility function to deduce the gdb.Value value from a string + representing the value. + + Arguments: + value_str: The value string from which the gdb.Value value should + be deduced. + + Returns: + The deduced gdb.Value value if possible, None otherwise. + """ + try: + return gdb.parse_and_eval(value_str) + except RuntimeError: + return None + + +class ExploreCommand(gdb.Command): + """Explore a value or a type valid in the current context. + + Usage: + + explore ARG + + - ARG is either a valid expression or a type name. + - At any stage of exploration, hit the return key (instead of a + choice, if any) to return to the enclosing type or value. + """ + + def __init__(self): + super(ExploreCommand, self).__init__(name = "explore", + command_class = gdb.COMMAND_DATA, + prefix = True) + + def invoke(self, arg_str, from_tty): + if ExploreUtils.check_args("explore", arg_str) == False: + return + + # Check if it is a value + value = ExploreUtils.get_value_from_str(arg_str) + if value is not None: + Explorer.explore_expr(arg_str, value, False) + return + + # If it is not a value, check if it is a type + datatype = ExploreUtils.get_type_from_str(arg_str) + if datatype is not None: + Explorer.explore_type(arg_str, datatype, False) + return + + # If it is neither a value nor a type, raise an error. + raise gdb.GdbError( + ("'%s' neither evaluates to a value nor is a type " + "in the current context." % + arg_str)) + + +class ExploreValueCommand(gdb.Command): + """Explore value of an expression valid in the current context. + + Usage: + + explore value ARG + + - ARG is a valid expression. + - At any stage of exploration, hit the return key (instead of a + choice, if any) to return to the enclosing value. + """ + + def __init__(self): + super(ExploreValueCommand, self).__init__( + name = "explore value", command_class = gdb.COMMAND_DATA) + + def invoke(self, arg_str, from_tty): + if ExploreUtils.check_args("explore value", arg_str) == False: + return + + value = ExploreUtils.get_value_from_str(arg_str) + if value is None: + raise gdb.GdbError( + (" '%s' does not evaluate to a value in the current " + "context." % + arg_str)) + return + + Explorer.explore_expr(arg_str, value, False) + + +class ExploreTypeCommand(gdb.Command): + """Explore a type or the type of an expression valid in the current + context. + + Usage: + + explore type ARG + + - ARG is a valid expression or a type name. + - At any stage of exploration, hit the return key (instead of a + choice, if any) to return to the enclosing type. + """ + + def __init__(self): + super(ExploreTypeCommand, self).__init__( + name = "explore type", command_class = gdb.COMMAND_DATA) + + def invoke(self, arg_str, from_tty): + if ExploreUtils.check_args("explore type", arg_str) == False: + return + + datatype = ExploreUtils.get_type_from_str(arg_str) + if datatype is not None: + Explorer.explore_type(arg_str, datatype, False) + return + + value = ExploreUtils.get_value_from_str(arg_str) + if value is not None: + print ("'%s' is of type '%s'." % (arg_str, str(value.type))) + Explorer.explore_type(str(value.type), value.type, False) + return + + raise gdb.GdbError(("'%s' is not a type or value in the current " + "context." % arg_str)) + + +Explorer.init_env() + +ExploreCommand() +ExploreValueCommand() +ExploreTypeCommand() diff --git a/share/gdb/python/gdb/command/pretty_printers.py b/share/gdb/python/gdb/command/pretty_printers.py new file mode 100644 index 0000000..7b03e3a --- /dev/null +++ b/share/gdb/python/gdb/command/pretty_printers.py @@ -0,0 +1,368 @@ +# Pretty-printer commands. +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""GDB commands for working with pretty-printers.""" + +import copy +import gdb +import re + + +def parse_printer_regexps(arg): + """Internal utility to parse a pretty-printer command argv. + + Arguments: + arg: The arguments to the command. The format is: + [object-regexp [name-regexp]]. + Individual printers in a collection are named as + printer-name;subprinter-name. + + Returns: + The result is a 3-tuple of compiled regular expressions, except that + the resulting compiled subprinter regexp is None if not provided. + + Raises: + SyntaxError: an error processing ARG + """ + + argv = gdb.string_to_argv(arg); + argc = len(argv) + object_regexp = "" # match everything + name_regexp = "" # match everything + subname_regexp = None + if argc > 3: + raise SyntaxError("too many arguments") + if argc >= 1: + object_regexp = argv[0] + if argc >= 2: + name_subname = argv[1].split(";", 1) + name_regexp = name_subname[0] + if len(name_subname) == 2: + subname_regexp = name_subname[1] + # That re.compile raises SyntaxError was determined empirically. + # We catch it and reraise it to provide a slightly more useful + # error message for the user. + try: + object_re = re.compile(object_regexp) + except SyntaxError: + raise SyntaxError("invalid object regexp: %s" % object_regexp) + try: + name_re = re.compile (name_regexp) + except SyntaxError: + raise SyntaxError("invalid name regexp: %s" % name_regexp) + if subname_regexp is not None: + try: + subname_re = re.compile(subname_regexp) + except SyntaxError: + raise SyntaxError("invalid subname regexp: %s" % subname_regexp) + else: + subname_re = None + return(object_re, name_re, subname_re) + + +def printer_enabled_p(printer): + """Internal utility to see if printer (or subprinter) is enabled.""" + if hasattr(printer, "enabled"): + return printer.enabled + else: + return True + + +class InfoPrettyPrinter(gdb.Command): + """GDB command to list all registered pretty-printers. + + Usage: info pretty-printer [object-regexp [name-regexp]] + + OBJECT-REGEXP is a regular expression matching the objects to list. + Objects are "global", the program space's file, and the objfiles within + that program space. + + NAME-REGEXP matches the name of the pretty-printer. + Individual printers in a collection are named as + printer-name;subprinter-name. + """ + + def __init__ (self): + super(InfoPrettyPrinter, self).__init__("info pretty-printer", + gdb.COMMAND_DATA) + + @staticmethod + def enabled_string(printer): + """Return "" if PRINTER is enabled, otherwise " [disabled]".""" + if printer_enabled_p(printer): + return "" + else: + return " [disabled]" + + @staticmethod + def printer_name(printer): + """Return the printer's name.""" + if hasattr(printer, "name"): + return printer.name + if hasattr(printer, "__name__"): + return printer.__name__ + # This "shouldn't happen", but the public API allows for + # direct additions to the pretty-printer list, and we shouldn't + # crash because someone added a bogus printer. + # Plus we want to give the user a way to list unknown printers. + return "unknown" + + def list_pretty_printers(self, pretty_printers, name_re, subname_re): + """Print a list of pretty-printers.""" + # A potential enhancement is to provide an option to list printers in + # "lookup order" (i.e. unsorted). + sorted_pretty_printers = sorted (copy.copy(pretty_printers), + key = self.printer_name) + for printer in sorted_pretty_printers: + name = self.printer_name(printer) + enabled = self.enabled_string(printer) + if name_re.match(name): + print (" %s%s" % (name, enabled)) + if (hasattr(printer, "subprinters") and + printer.subprinters is not None): + sorted_subprinters = sorted (copy.copy(printer.subprinters), + key = self.printer_name) + for subprinter in sorted_subprinters: + if (not subname_re or + subname_re.match(subprinter.name)): + print (" %s%s" % + (subprinter.name, + self.enabled_string(subprinter))) + + def invoke1(self, title, printer_list, + obj_name_to_match, object_re, name_re, subname_re): + """Subroutine of invoke to simplify it.""" + if printer_list and object_re.match(obj_name_to_match): + print (title) + self.list_pretty_printers(printer_list, name_re, subname_re) + + def invoke(self, arg, from_tty): + """GDB calls this to perform the command.""" + (object_re, name_re, subname_re) = parse_printer_regexps(arg) + self.invoke1("global pretty-printers:", gdb.pretty_printers, + "global", object_re, name_re, subname_re) + cp = gdb.current_progspace() + self.invoke1("progspace %s pretty-printers:" % cp.filename, + cp.pretty_printers, "progspace", + object_re, name_re, subname_re) + for objfile in gdb.objfiles(): + self.invoke1(" objfile %s pretty-printers:" % objfile.filename, + objfile.pretty_printers, objfile.filename, + object_re, name_re, subname_re) + + +def count_enabled_printers(pretty_printers): + """Return a 2-tuple of number of enabled and total printers.""" + enabled = 0 + total = 0 + for printer in pretty_printers: + if (hasattr(printer, "subprinters") + and printer.subprinters is not None): + if printer_enabled_p(printer): + for subprinter in printer.subprinters: + if printer_enabled_p(subprinter): + enabled += 1 + total += len(printer.subprinters) + else: + if printer_enabled_p(printer): + enabled += 1 + total += 1 + return (enabled, total) + + +def count_all_enabled_printers(): + """Return a 2-tuble of the enabled state and total number of all printers. + This includes subprinters. + """ + enabled_count = 0 + total_count = 0 + (t_enabled, t_total) = count_enabled_printers(gdb.pretty_printers) + enabled_count += t_enabled + total_count += t_total + (t_enabled, t_total) = count_enabled_printers(gdb.current_progspace().pretty_printers) + enabled_count += t_enabled + total_count += t_total + for objfile in gdb.objfiles(): + (t_enabled, t_total) = count_enabled_printers(objfile.pretty_printers) + enabled_count += t_enabled + total_count += t_total + return (enabled_count, total_count) + + +def pluralize(text, n, suffix="s"): + """Return TEXT pluralized if N != 1.""" + if n != 1: + return "%s%s" % (text, suffix) + else: + return text + + +def show_pretty_printer_enabled_summary(): + """Print the number of printers enabled/disabled. + We count subprinters individually. + """ + (enabled_count, total_count) = count_all_enabled_printers() + print ("%d of %d printers enabled" % (enabled_count, total_count)) + + +def do_enable_pretty_printer_1 (pretty_printers, name_re, subname_re, flag): + """Worker for enabling/disabling pretty-printers. + + Arguments: + pretty_printers: list of pretty-printers + name_re: regular-expression object to select printers + subname_re: regular expression object to select subprinters or None + if all are affected + flag: True for Enable, False for Disable + + Returns: + The number of printers affected. + This is just for informational purposes for the user. + """ + total = 0 + for printer in pretty_printers: + if (hasattr(printer, "name") and name_re.match(printer.name) or + hasattr(printer, "__name__") and name_re.match(printer.__name__)): + if (hasattr(printer, "subprinters") and + printer.subprinters is not None): + if not subname_re: + # Only record printers that change state. + if printer_enabled_p(printer) != flag: + for subprinter in printer.subprinters: + if printer_enabled_p(subprinter): + total += 1 + # NOTE: We preserve individual subprinter settings. + printer.enabled = flag + else: + # NOTE: Whether this actually disables the subprinter + # depends on whether the printer's lookup function supports + # the "enable" API. We can only assume it does. + for subprinter in printer.subprinters: + if subname_re.match(subprinter.name): + # Only record printers that change state. + if (printer_enabled_p(printer) and + printer_enabled_p(subprinter) != flag): + total += 1 + subprinter.enabled = flag + else: + # This printer has no subprinters. + # If the user does "disable pretty-printer .* .* foo" + # should we disable printers that don't have subprinters? + # How do we apply "foo" in this context? Since there is no + # "foo" subprinter it feels like we should skip this printer. + # There's still the issue of how to handle + # "disable pretty-printer .* .* .*", and every other variation + # that can match everything. For now punt and only support + # "disable pretty-printer .* .*" (i.e. subname is elided) + # to disable everything. + if not subname_re: + # Only record printers that change state. + if printer_enabled_p(printer) != flag: + total += 1 + printer.enabled = flag + return total + + +def do_enable_pretty_printer (arg, flag): + """Internal worker for enabling/disabling pretty-printers.""" + (object_re, name_re, subname_re) = parse_printer_regexps(arg) + + total = 0 + if object_re.match("global"): + total += do_enable_pretty_printer_1(gdb.pretty_printers, + name_re, subname_re, flag) + cp = gdb.current_progspace() + if object_re.match("progspace"): + total += do_enable_pretty_printer_1(cp.pretty_printers, + name_re, subname_re, flag) + for objfile in gdb.objfiles(): + if object_re.match(objfile.filename): + total += do_enable_pretty_printer_1(objfile.pretty_printers, + name_re, subname_re, flag) + + if flag: + state = "enabled" + else: + state = "disabled" + print ("%d %s %s" % (total, pluralize("printer", total), state)) + + # Print the total list of printers currently enabled/disabled. + # This is to further assist the user in determining whether the result + # is expected. Since we use regexps to select it's useful. + show_pretty_printer_enabled_summary() + + +# Enable/Disable one or more pretty-printers. +# +# This is intended for use when a broken pretty-printer is shipped/installed +# and the user wants to disable that printer without disabling all the other +# printers. +# +# A useful addition would be -v (verbose) to show each printer affected. + +class EnablePrettyPrinter (gdb.Command): + """GDB command to enable the specified pretty-printer. + + Usage: enable pretty-printer [object-regexp [name-regexp]] + + OBJECT-REGEXP is a regular expression matching the objects to examine. + Objects are "global", the program space's file, and the objfiles within + that program space. + + NAME-REGEXP matches the name of the pretty-printer. + Individual printers in a collection are named as + printer-name;subprinter-name. + """ + + def __init__(self): + super(EnablePrettyPrinter, self).__init__("enable pretty-printer", + gdb.COMMAND_DATA) + + def invoke(self, arg, from_tty): + """GDB calls this to perform the command.""" + do_enable_pretty_printer(arg, True) + + +class DisablePrettyPrinter (gdb.Command): + """GDB command to disable the specified pretty-printer. + + Usage: disable pretty-printer [object-regexp [name-regexp]] + + OBJECT-REGEXP is a regular expression matching the objects to examine. + Objects are "global", the program space's file, and the objfiles within + that program space. + + NAME-REGEXP matches the name of the pretty-printer. + Individual printers in a collection are named as + printer-name;subprinter-name. + """ + + def __init__(self): + super(DisablePrettyPrinter, self).__init__("disable pretty-printer", + gdb.COMMAND_DATA) + + def invoke(self, arg, from_tty): + """GDB calls this to perform the command.""" + do_enable_pretty_printer(arg, False) + + +def register_pretty_printer_commands(): + """Call from a top level script to install the pretty-printer commands.""" + InfoPrettyPrinter() + EnablePrettyPrinter() + DisablePrettyPrinter() + +register_pretty_printer_commands() diff --git a/share/gdb/python/gdb/command/prompt.py b/share/gdb/python/gdb/command/prompt.py new file mode 100644 index 0000000..394e40c --- /dev/null +++ b/share/gdb/python/gdb/command/prompt.py @@ -0,0 +1,66 @@ +# Extended prompt. +# Copyright (C) 2011-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""GDB command for working with extended prompts.""" + +import gdb +import gdb.prompt + +class _ExtendedPrompt(gdb.Parameter): + + """Set the extended prompt. + +Usage: set extended-prompt VALUE + +Substitutions are applied to VALUE to compute the real prompt. + +The currently defined substitutions are: + +""" + # Add the prompt library's dynamically generated help to the + # __doc__ string. + __doc__ = __doc__ + gdb.prompt.prompt_help() + + set_doc = "Set the extended prompt." + show_doc = "Show the extended prompt." + + def __init__(self): + super(_ExtendedPrompt, self).__init__("extended-prompt", + gdb.COMMAND_SUPPORT, + gdb.PARAM_STRING_NOESCAPE) + self.value = '' + self.hook_set = False + + def get_show_string (self, pvalue): + if self.value is not '': + return "The extended prompt is: " + self.value + else: + return "The extended prompt is not set." + + def get_set_string (self): + if self.hook_set == False: + gdb.prompt_hook = self.before_prompt_hook + self.hook_set = True + return "" + + def before_prompt_hook(self, current): + if self.value is not '': + newprompt = gdb.prompt.substitute_prompt(self.value) + return newprompt.replace('\\', '\\\\') + else: + return None + +_ExtendedPrompt() diff --git a/share/gdb/python/gdb/command/type_printers.py b/share/gdb/python/gdb/command/type_printers.py new file mode 100644 index 0000000..81f2ea1 --- /dev/null +++ b/share/gdb/python/gdb/command/type_printers.py @@ -0,0 +1,125 @@ +# Type printer commands. +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +import copy +import gdb + +"""GDB commands for working with type-printers.""" + +class InfoTypePrinter(gdb.Command): + """GDB command to list all registered type-printers. + + Usage: info type-printers + """ + + def __init__ (self): + super(InfoTypePrinter, self).__init__("info type-printers", + gdb.COMMAND_DATA) + + def list_type_printers(self, type_printers): + """Print a list of type printers.""" + # A potential enhancement is to provide an option to list printers in + # "lookup order" (i.e. unsorted). + sorted_type_printers = sorted (copy.copy(type_printers), + key = lambda x: x.name) + for printer in sorted_type_printers: + if printer.enabled: + enabled = '' + else: + enabled = " [disabled]" + print (" %s%s" % (printer.name, enabled)) + + def invoke(self, arg, from_tty): + """GDB calls this to perform the command.""" + sep = '' + for objfile in gdb.objfiles(): + if objfile.type_printers: + print ("%sType printers for %s:" % (sep, objfile.name)) + self.list_type_printers(objfile.type_printers) + sep = '\n' + if gdb.current_progspace().type_printers: + print ("%sType printers for program space:" % sep) + self.list_type_printers(gdb.current_progspace().type_printers) + sep = '\n' + if gdb.type_printers: + print ("%sGlobal type printers:" % sep) + self.list_type_printers(gdb.type_printers) + +class _EnableOrDisableCommand(gdb.Command): + def __init__(self, setting, name): + super(_EnableOrDisableCommand, self).__init__(name, gdb.COMMAND_DATA) + self.setting = setting + + def set_some(self, name, printers): + result = False + for p in printers: + if name == p.name: + p.enabled = self.setting + result = True + return result + + def invoke(self, arg, from_tty): + """GDB calls this to perform the command.""" + for name in arg.split(): + ok = False + for objfile in gdb.objfiles(): + if self.set_some(name, objfile.type_printers): + ok = True + if self.set_some(name, gdb.current_progspace().type_printers): + ok = True + if self.set_some(name, gdb.type_printers): + ok = True + if not ok: + print ("No type printer named '%s'" % name) + + def add_some(self, result, word, printers): + for p in printers: + if p.name.startswith(word): + result.append(p.name) + + def complete(self, text, word): + result = [] + for objfile in gdb.objfiles(): + self.add_some(result, word, objfile.type_printers) + self.add_some(result, word, gdb.current_progspace().type_printers) + self.add_some(result, word, gdb.type_printers) + return result + +class EnableTypePrinter(_EnableOrDisableCommand): + """GDB command to enable the specified type printer. + + Usage: enable type-printer NAME + + NAME is the name of the type-printer. + """ + + def __init__(self): + super(EnableTypePrinter, self).__init__(True, "enable type-printer") + +class DisableTypePrinter(_EnableOrDisableCommand): + """GDB command to disable the specified type-printer. + + Usage: disable type-printer NAME + + NAME is the name of the type-printer. + """ + + def __init__(self): + super(DisableTypePrinter, self).__init__(False, "disable type-printer") + +InfoTypePrinter() +EnableTypePrinter() +DisableTypePrinter() diff --git a/share/gdb/python/gdb/function/__init__.py b/share/gdb/python/gdb/function/__init__.py new file mode 100644 index 0000000..755bff9 --- /dev/null +++ b/share/gdb/python/gdb/function/__init__.py @@ -0,0 +1,14 @@ +# Copyright (C) 2012-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. diff --git a/share/gdb/python/gdb/function/strfns.py b/share/gdb/python/gdb/function/strfns.py new file mode 100644 index 0000000..efdf950 --- /dev/null +++ b/share/gdb/python/gdb/function/strfns.py @@ -0,0 +1,108 @@ +# Useful gdb string convenience functions. +# Copyright (C) 2012-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""$_memeq, $_strlen, $_streq, $_regex""" + +import gdb +import re + + +class _MemEq(gdb.Function): + """$_memeq - compare bytes of memory + +Usage: + $_memeq(a, b, len) + +Returns: + True if len bytes at a and b compare equally. +""" + def __init__(self): + super(_MemEq, self).__init__("_memeq") + + def invoke(self, a, b, length): + if length < 0: + raise ValueError("length must be non-negative") + if length == 0: + return True + # The argument(s) to vector are [low_bound,]high_bound. + byte_vector = gdb.lookup_type("char").vector(length - 1) + ptr_byte_vector = byte_vector.pointer() + a_ptr = a.reinterpret_cast(ptr_byte_vector) + b_ptr = b.reinterpret_cast(ptr_byte_vector) + return a_ptr.dereference() == b_ptr.dereference() + + +class _StrLen(gdb.Function): + """$_strlen - compute string length + +Usage: + $_strlen(a) + +Returns: + Length of string a, assumed to be a string in the current language. +""" + def __init__(self): + super(_StrLen, self).__init__("_strlen") + + def invoke(self, a): + s = a.string() + return len(s) + + +class _StrEq(gdb.Function): + """$_streq - check string equality + +Usage: + $_streq(a, b) + +Returns: + True if a and b are identical strings in the current language. + +Example (amd64-linux): + catch syscall open + cond $bpnum $_streq((char*) $rdi, "foo") +""" + def __init__(self): + super(_StrEq, self).__init__("_streq") + + def invoke(self, a, b): + return a.string() == b.string() + + +class _RegEx(gdb.Function): + """$_regex - check if a string matches a regular expression + +Usage: + $_regex(string, regex) + +Returns: + True if string str (in the current language) matches the + regular expression regex. +""" + def __init__(self): + super(_RegEx, self).__init__("_regex") + + def invoke(self, string, regex): + s = string.string() + r = re.compile(regex.string()) + return bool(r.match(s)) + + +# GDB will import us automagically via gdb/__init__.py. +_MemEq() +_StrLen() +_StrEq() +_RegEx() diff --git a/share/gdb/python/gdb/printing.py b/share/gdb/python/gdb/printing.py new file mode 100644 index 0000000..785a407 --- /dev/null +++ b/share/gdb/python/gdb/printing.py @@ -0,0 +1,263 @@ +# Pretty-printer utilities. +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Utilities for working with pretty-printers.""" + +import gdb +import gdb.types +import re +import sys + +if sys.version_info[0] > 2: + # Python 3 removed basestring and long + basestring = str + long = int + +class PrettyPrinter(object): + """A basic pretty-printer. + + Attributes: + name: A unique string among all printers for the context in which + it is defined (objfile, progspace, or global(gdb)), and should + meaningfully describe what can be pretty-printed. + E.g., "StringPiece" or "protobufs". + subprinters: An iterable object with each element having a `name' + attribute, and, potentially, "enabled" attribute. + Or this is None if there are no subprinters. + enabled: A boolean indicating if the printer is enabled. + + Subprinters are for situations where "one" pretty-printer is actually a + collection of several printers. E.g., The libstdc++ pretty-printer has + a pretty-printer for each of several different types, based on regexps. + """ + + # While one might want to push subprinters into the subclass, it's + # present here to formalize such support to simplify + # commands/pretty_printers.py. + + def __init__(self, name, subprinters=None): + self.name = name + self.subprinters = subprinters + self.enabled = True + + def __call__(self, val): + # The subclass must define this. + raise NotImplementedError("PrettyPrinter __call__") + + +class SubPrettyPrinter(object): + """Baseclass for sub-pretty-printers. + + Sub-pretty-printers needn't use this, but it formalizes what's needed. + + Attributes: + name: The name of the subprinter. + enabled: A boolean indicating if the subprinter is enabled. + """ + + def __init__(self, name): + self.name = name + self.enabled = True + + +def register_pretty_printer(obj, printer, replace=False): + """Register pretty-printer PRINTER with OBJ. + + The printer is added to the front of the search list, thus one can override + an existing printer if one needs to. Use a different name when overriding + an existing printer, otherwise an exception will be raised; multiple + printers with the same name are disallowed. + + Arguments: + obj: Either an objfile, progspace, or None (in which case the printer + is registered globally). + printer: Either a function of one argument (old way) or any object + which has attributes: name, enabled, __call__. + replace: If True replace any existing copy of the printer. + Otherwise if the printer already exists raise an exception. + + Returns: + Nothing. + + Raises: + TypeError: A problem with the type of the printer. + ValueError: The printer's name contains a semicolon ";". + RuntimeError: A printer with the same name is already registered. + + If the caller wants the printer to be listable and disableable, it must + follow the PrettyPrinter API. This applies to the old way (functions) too. + If printer is an object, __call__ is a method of two arguments: + self, and the value to be pretty-printed. See PrettyPrinter. + """ + + # Watch for both __name__ and name. + # Functions get the former for free, but we don't want to use an + # attribute named __foo__ for pretty-printers-as-objects. + # If printer has both, we use `name'. + if not hasattr(printer, "__name__") and not hasattr(printer, "name"): + raise TypeError("printer missing attribute: name") + if hasattr(printer, "name") and not hasattr(printer, "enabled"): + raise TypeError("printer missing attribute: enabled") + if not hasattr(printer, "__call__"): + raise TypeError("printer missing attribute: __call__") + + if obj is None: + if gdb.parameter("verbose"): + gdb.write("Registering global %s pretty-printer ...\n" % name) + obj = gdb + else: + if gdb.parameter("verbose"): + gdb.write("Registering %s pretty-printer for %s ...\n" % + (printer.name, obj.filename)) + + if hasattr(printer, "name"): + if not isinstance(printer.name, basestring): + raise TypeError("printer name is not a string") + # If printer provides a name, make sure it doesn't contain ";". + # Semicolon is used by the info/enable/disable pretty-printer commands + # to delimit subprinters. + if printer.name.find(";") >= 0: + raise ValueError("semicolon ';' in printer name") + # Also make sure the name is unique. + # Alas, we can't do the same for functions and __name__, they could + # all have a canonical name like "lookup_function". + # PERF: gdb records printers in a list, making this inefficient. + i = 0 + for p in obj.pretty_printers: + if hasattr(p, "name") and p.name == printer.name: + if replace: + del obj.pretty_printers[i] + break + else: + raise RuntimeError("pretty-printer already registered: %s" % + printer.name) + i = i + 1 + + obj.pretty_printers.insert(0, printer) + + +class RegexpCollectionPrettyPrinter(PrettyPrinter): + """Class for implementing a collection of regular-expression based pretty-printers. + + Intended usage: + + pretty_printer = RegexpCollectionPrettyPrinter("my_library") + pretty_printer.add_printer("myclass1", "^myclass1$", MyClass1Printer) + ... + pretty_printer.add_printer("myclassN", "^myclassN$", MyClassNPrinter) + register_pretty_printer(obj, pretty_printer) + """ + + class RegexpSubprinter(SubPrettyPrinter): + def __init__(self, name, regexp, gen_printer): + super(RegexpCollectionPrettyPrinter.RegexpSubprinter, self).__init__(name) + self.regexp = regexp + self.gen_printer = gen_printer + self.compiled_re = re.compile(regexp) + + def __init__(self, name): + super(RegexpCollectionPrettyPrinter, self).__init__(name, []) + + def add_printer(self, name, regexp, gen_printer): + """Add a printer to the list. + + The printer is added to the end of the list. + + Arguments: + name: The name of the subprinter. + regexp: The regular expression, as a string. + gen_printer: A function/method that given a value returns an + object to pretty-print it. + + Returns: + Nothing. + """ + + # NOTE: A previous version made the name of each printer the regexp. + # That makes it awkward to pass to the enable/disable commands (it's + # cumbersome to make a regexp of a regexp). So now the name is a + # separate parameter. + + self.subprinters.append(self.RegexpSubprinter(name, regexp, + gen_printer)) + + def __call__(self, val): + """Lookup the pretty-printer for the provided value.""" + + # Get the type name. + typename = gdb.types.get_basic_type(val.type).tag + if not typename: + return None + + # Iterate over table of type regexps to determine + # if a printer is registered for that type. + # Return an instantiation of the printer if found. + for printer in self.subprinters: + if printer.enabled and printer.compiled_re.search(typename): + return printer.gen_printer(val) + + # Cannot find a pretty printer. Return None. + return None + +# A helper class for printing enum types. This class is instantiated +# with a list of enumerators to print a particular Value. +class _EnumInstance: + def __init__(self, enumerators, val): + self.enumerators = enumerators + self.val = val + + def to_string(self): + flag_list = [] + v = long(self.val) + any_found = False + for (e_name, e_value) in self.enumerators: + if v & e_value != 0: + flag_list.append(e_name) + v = v & ~e_value + any_found = True + if not any_found or v != 0: + # Leftover value. + flag_list.append('<unknown: 0x%x>' % v) + return "0x%x [%s]" % (self.val, " | ".join(flag_list)) + +class FlagEnumerationPrinter(PrettyPrinter): + """A pretty-printer which can be used to print a flag-style enumeration. + A flag-style enumeration is one where the enumerators are or'd + together to create values. The new printer will print these + symbolically using '|' notation. The printer must be registered + manually. This printer is most useful when an enum is flag-like, + but has some overlap. GDB's built-in printing will not handle + this case, but this printer will attempt to.""" + + def __init__(self, enum_type): + super(FlagEnumerationPrinter, self).__init__(enum_type) + self.initialized = False + + def __call__(self, val): + if not self.initialized: + self.initialized = True + flags = gdb.lookup_type(self.name) + self.enumerators = [] + for field in flags.fields(): + self.enumerators.append((field.name, field.enumval)) + # Sorting the enumerators by value usually does the right + # thing. + self.enumerators.sort(key = lambda x: x.enumval) + + if self.enabled: + return _EnumInstance(self.enumerators, val) + else: + return None diff --git a/share/gdb/python/gdb/prompt.py b/share/gdb/python/gdb/prompt.py new file mode 100644 index 0000000..bb1975b --- /dev/null +++ b/share/gdb/python/gdb/prompt.py @@ -0,0 +1,148 @@ +# Extended prompt utilities. +# Copyright (C) 2011-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +""" Extended prompt library functions.""" + +import gdb +import os + +def _prompt_pwd(ignore): + "The current working directory." + return os.getcwdu() + +def _prompt_object_attr(func, what, attr, nattr): + """Internal worker for fetching GDB attributes.""" + if attr is None: + attr = nattr + try: + obj = func() + except gdb.error: + return '<no %s>' % what + if hasattr(obj, attr): + result = getattr(obj, attr) + if callable(result): + result = result() + return result + else: + return '<no attribute %s on current %s>' % (attr, what) + +def _prompt_frame(attr): + "The selected frame; an argument names a frame parameter." + return _prompt_object_attr(gdb.selected_frame, 'frame', attr, 'name') + +def _prompt_thread(attr): + "The selected thread; an argument names a thread parameter." + return _prompt_object_attr(gdb.selected_thread, 'thread', attr, 'num') + +def _prompt_version(attr): + "The version of GDB." + return gdb.VERSION + +def _prompt_esc(attr): + "The ESC character." + return '\033' + +def _prompt_bs(attr): + "A backslash." + return '\\' + +def _prompt_n(attr): + "A newline." + return '\n' + +def _prompt_r(attr): + "A carriage return." + return '\r' + +def _prompt_param(attr): + "A parameter's value; the argument names the parameter." + return gdb.parameter(attr) + +def _prompt_noprint_begin(attr): + "Begins a sequence of non-printing characters." + return '\001' + +def _prompt_noprint_end(attr): + "Ends a sequence of non-printing characters." + return '\002' + +prompt_substitutions = { + 'e': _prompt_esc, + '\\': _prompt_bs, + 'n': _prompt_n, + 'r': _prompt_r, + 'v': _prompt_version, + 'w': _prompt_pwd, + 'f': _prompt_frame, + 't': _prompt_thread, + 'p': _prompt_param, + '[': _prompt_noprint_begin, + ']': _prompt_noprint_end +} + +def prompt_help(): + """Generate help dynamically from the __doc__ strings of attribute + functions.""" + + result = '' + keys = sorted (prompt_substitutions.keys()) + for key in keys: + result += ' \\%s\t%s\n' % (key, prompt_substitutions[key].__doc__) + result += """ +A substitution can be used in a simple form, like "\\f". +An argument can also be passed to it, like "\\f{name}". +The meaning of the argument depends on the particular substitution.""" + return result + +def substitute_prompt(prompt): + "Perform substitutions on PROMPT." + + result = '' + plen = len(prompt) + i = 0 + while i < plen: + if prompt[i] == '\\': + i = i + 1 + if i >= plen: + break + cmdch = prompt[i] + + if cmdch in prompt_substitutions: + cmd = prompt_substitutions[cmdch] + + if i + 1 < plen and prompt[i + 1] == '{': + j = i + 1 + while j < plen and prompt[j] != '}': + j = j + 1 + # Just ignore formatting errors. + if j >= plen or prompt[j] != '}': + arg = None + else: + arg = prompt[i + 2 : j] + i = j + else: + arg = None + result += str(cmd(arg)) + else: + # Unrecognized escapes are turned into the escaped + # character itself. + result += prompt[i] + else: + result += prompt[i] + + i = i + 1 + + return result diff --git a/share/gdb/python/gdb/types.py b/share/gdb/python/gdb/types.py new file mode 100644 index 0000000..ffc817c --- /dev/null +++ b/share/gdb/python/gdb/types.py @@ -0,0 +1,176 @@ +# Type utilities. +# Copyright (C) 2010-2013 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 +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +"""Utilities for working with gdb.Types.""" + +import gdb + + +def get_basic_type(type_): + """Return the "basic" type of a type. + + Arguments: + type_: The type to reduce to its basic type. + + Returns: + type_ with const/volatile is stripped away, + and typedefs/references converted to the underlying type. + """ + + while (type_.code == gdb.TYPE_CODE_REF or + type_.code == gdb.TYPE_CODE_TYPEDEF): + if type_.code == gdb.TYPE_CODE_REF: + type_ = type_.target() + else: + type_ = type_.strip_typedefs() + return type_.unqualified() + + +def has_field(type_, field): + """Return True if a type has the specified field. + + Arguments: + type_: The type to examine. + It must be one of gdb.TYPE_CODE_STRUCT, gdb.TYPE_CODE_UNION. + field: The name of the field to look up. + + Returns: + True if the field is present either in type_ or any baseclass. + + Raises: + TypeError: The type is not a struct or union. + """ + + type_ = get_basic_type(type_) + if (type_.code != gdb.TYPE_CODE_STRUCT and + type_.code != gdb.TYPE_CODE_UNION): + raise TypeError("not a struct or union") + for f in type_.fields(): + if f.is_base_class: + if has_field(f.type, field): + return True + else: + # NOTE: f.name could be None + if f.name == field: + return True + return False + + +def make_enum_dict(enum_type): + """Return a dictionary from a program's enum type. + + Arguments: + enum_type: The enum to compute the dictionary for. + + Returns: + The dictionary of the enum. + + Raises: + TypeError: The type is not an enum. + """ + + if enum_type.code != gdb.TYPE_CODE_ENUM: + raise TypeError("not an enum type") + enum_dict = {} + for field in enum_type.fields(): + # The enum's value is stored in "enumval". + enum_dict[field.name] = field.enumval + return enum_dict + + +def deep_items (type_): + """Return an iterator that recursively traverses anonymous fields. + + Arguments: + type_: The type to traverse. It should be one of + gdb.TYPE_CODE_STRUCT or gdb.TYPE_CODE_UNION. + + Returns: + an iterator similar to gdb.Type.iteritems(), i.e., it returns + pairs of key, value, but for any anonymous struct or union + field that field is traversed recursively, depth-first. + """ + for k, v in type_.iteritems (): + if k: + yield k, v + else: + for i in deep_items (v.type): + yield i + +class TypePrinter(object): + """The base class for type printers. + + Instances of this type can be used to substitute type names during + 'ptype'. + + A type printer must have at least 'name' and 'enabled' attributes, + and supply an 'instantiate' method. + + The 'instantiate' method must either return None, or return an + object which has a 'recognize' method. This method must accept a + gdb.Type argument and either return None, meaning that the type + was not recognized, or a string naming the type. + """ + + def __init__(self, name): + self.name = name + self.enabled = True + + def instantiate(self): + return None + +# Helper function for computing the list of type recognizers. +def _get_some_type_recognizers(result, plist): + for printer in plist: + if printer.enabled: + inst = printer.instantiate() + if inst is not None: + result.append(inst) + return None + +def get_type_recognizers(): + "Return a list of the enabled type recognizers for the current context." + result = [] + + # First try the objfiles. + for objfile in gdb.objfiles(): + _get_some_type_recognizers(result, objfile.type_printers) + # Now try the program space. + _get_some_type_recognizers(result, gdb.current_progspace().type_printers) + # Finally, globals. + _get_some_type_recognizers(result, gdb.type_printers) + + return result + +def apply_type_recognizers(recognizers, type_obj): + """Apply the given list of type recognizers to the type TYPE_OBJ. + If any recognizer in the list recognizes TYPE_OBJ, returns the name + given by the recognizer. Otherwise, this returns None.""" + for r in recognizers: + result = r.recognize(type_obj) + if result is not None: + return result + return None + +def register_type_printer(locus, printer): + """Register a type printer. + PRINTER is the type printer instance. + LOCUS is either an objfile, a program space, or None, indicating + global registration.""" + + if locus is None: + locus = gdb + locus.type_printers.insert(0, printer) diff --git a/share/gdb/syscalls/amd64-linux.xml b/share/gdb/syscalls/amd64-linux.xml new file mode 100644 index 0000000..bf3da5d --- /dev/null +++ b/share/gdb/syscalls/amd64-linux.xml @@ -0,0 +1,314 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/x86/include/asm/unistd_64.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="read" number="0"/> + <syscall name="write" number="1"/> + <syscall name="open" number="2"/> + <syscall name="close" number="3"/> + <syscall name="stat" number="4"/> + <syscall name="fstat" number="5"/> + <syscall name="lstat" number="6"/> + <syscall name="poll" number="7"/> + <syscall name="lseek" number="8"/> + <syscall name="mmap" number="9"/> + <syscall name="mprotect" number="10"/> + <syscall name="munmap" number="11"/> + <syscall name="brk" number="12"/> + <syscall name="rt_sigaction" number="13"/> + <syscall name="rt_sigprocmask" number="14"/> + <syscall name="rt_sigreturn" number="15"/> + <syscall name="ioctl" number="16"/> + <syscall name="pread64" number="17"/> + <syscall name="pwrite64" number="18"/> + <syscall name="readv" number="19"/> + <syscall name="writev" number="20"/> + <syscall name="access" number="21"/> + <syscall name="pipe" number="22"/> + <syscall name="select" number="23"/> + <syscall name="sched_yield" number="24"/> + <syscall name="mremap" number="25"/> + <syscall name="msync" number="26"/> + <syscall name="mincore" number="27"/> + <syscall name="madvise" number="28"/> + <syscall name="shmget" number="29"/> + <syscall name="shmat" number="30"/> + <syscall name="shmctl" number="31"/> + <syscall name="dup" number="32"/> + <syscall name="dup2" number="33"/> + <syscall name="pause" number="34"/> + <syscall name="nanosleep" number="35"/> + <syscall name="getitimer" number="36"/> + <syscall name="alarm" number="37"/> + <syscall name="setitimer" number="38"/> + <syscall name="getpid" number="39"/> + <syscall name="sendfile" number="40"/> + <syscall name="socket" number="41"/> + <syscall name="connect" number="42"/> + <syscall name="accept" number="43"/> + <syscall name="sendto" number="44"/> + <syscall name="recvfrom" number="45"/> + <syscall name="sendmsg" number="46"/> + <syscall name="recvmsg" number="47"/> + <syscall name="shutdown" number="48"/> + <syscall name="bind" number="49"/> + <syscall name="listen" number="50"/> + <syscall name="getsockname" number="51"/> + <syscall name="getpeername" number="52"/> + <syscall name="socketpair" number="53"/> + <syscall name="setsockopt" number="54"/> + <syscall name="getsockopt" number="55"/> + <syscall name="clone" number="56"/> + <syscall name="fork" number="57"/> + <syscall name="vfork" number="58"/> + <syscall name="execve" number="59"/> + <syscall name="exit" number="60"/> + <syscall name="wait4" number="61"/> + <syscall name="kill" number="62"/> + <syscall name="uname" number="63"/> + <syscall name="semget" number="64"/> + <syscall name="semop" number="65"/> + <syscall name="semctl" number="66"/> + <syscall name="shmdt" number="67"/> + <syscall name="msgget" number="68"/> + <syscall name="msgsnd" number="69"/> + <syscall name="msgrcv" number="70"/> + <syscall name="msgctl" number="71"/> + <syscall name="fcntl" number="72"/> + <syscall name="flock" number="73"/> + <syscall name="fsync" number="74"/> + <syscall name="fdatasync" number="75"/> + <syscall name="truncate" number="76"/> + <syscall name="ftruncate" number="77"/> + <syscall name="getdents" number="78"/> + <syscall name="getcwd" number="79"/> + <syscall name="chdir" number="80"/> + <syscall name="fchdir" number="81"/> + <syscall name="rename" number="82"/> + <syscall name="mkdir" number="83"/> + <syscall name="rmdir" number="84"/> + <syscall name="creat" number="85"/> + <syscall name="link" number="86"/> + <syscall name="unlink" number="87"/> + <syscall name="symlink" number="88"/> + <syscall name="readlink" number="89"/> + <syscall name="chmod" number="90"/> + <syscall name="fchmod" number="91"/> + <syscall name="chown" number="92"/> + <syscall name="fchown" number="93"/> + <syscall name="lchown" number="94"/> + <syscall name="umask" number="95"/> + <syscall name="gettimeofday" number="96"/> + <syscall name="getrlimit" number="97"/> + <syscall name="getrusage" number="98"/> + <syscall name="sysinfo" number="99"/> + <syscall name="times" number="100"/> + <syscall name="ptrace" number="101"/> + <syscall name="getuid" number="102"/> + <syscall name="syslog" number="103"/> + <syscall name="getgid" number="104"/> + <syscall name="setuid" number="105"/> + <syscall name="setgid" number="106"/> + <syscall name="geteuid" number="107"/> + <syscall name="getegid" number="108"/> + <syscall name="setpgid" number="109"/> + <syscall name="getppid" number="110"/> + <syscall name="getpgrp" number="111"/> + <syscall name="setsid" number="112"/> + <syscall name="setreuid" number="113"/> + <syscall name="setregid" number="114"/> + <syscall name="getgroups" number="115"/> + <syscall name="setgroups" number="116"/> + <syscall name="setresuid" number="117"/> + <syscall name="getresuid" number="118"/> + <syscall name="setresgid" number="119"/> + <syscall name="getresgid" number="120"/> + <syscall name="getpgid" number="121"/> + <syscall name="setfsuid" number="122"/> + <syscall name="setfsgid" number="123"/> + <syscall name="getsid" number="124"/> + <syscall name="capget" number="125"/> + <syscall name="capset" number="126"/> + <syscall name="rt_sigpending" number="127"/> + <syscall name="rt_sigtimedwait" number="128"/> + <syscall name="rt_sigqueueinfo" number="129"/> + <syscall name="rt_sigsuspend" number="130"/> + <syscall name="sigaltstack" number="131"/> + <syscall name="utime" number="132"/> + <syscall name="mknod" number="133"/> + <syscall name="uselib" number="134"/> + <syscall name="personality" number="135"/> + <syscall name="ustat" number="136"/> + <syscall name="statfs" number="137"/> + <syscall name="fstatfs" number="138"/> + <syscall name="sysfs" number="139"/> + <syscall name="getpriority" number="140"/> + <syscall name="setpriority" number="141"/> + <syscall name="sched_setparam" number="142"/> + <syscall name="sched_getparam" number="143"/> + <syscall name="sched_setscheduler" number="144"/> + <syscall name="sched_getscheduler" number="145"/> + <syscall name="sched_get_priority_max" number="146"/> + <syscall name="sched_get_priority_min" number="147"/> + <syscall name="sched_rr_get_interval" number="148"/> + <syscall name="mlock" number="149"/> + <syscall name="munlock" number="150"/> + <syscall name="mlockall" number="151"/> + <syscall name="munlockall" number="152"/> + <syscall name="vhangup" number="153"/> + <syscall name="modify_ldt" number="154"/> + <syscall name="pivot_root" number="155"/> + <syscall name="_sysctl" number="156"/> + <syscall name="prctl" number="157"/> + <syscall name="arch_prctl" number="158"/> + <syscall name="adjtimex" number="159"/> + <syscall name="setrlimit" number="160"/> + <syscall name="chroot" number="161"/> + <syscall name="sync" number="162"/> + <syscall name="acct" number="163"/> + <syscall name="settimeofday" number="164"/> + <syscall name="mount" number="165"/> + <syscall name="umount2" number="166"/> + <syscall name="swapon" number="167"/> + <syscall name="swapoff" number="168"/> + <syscall name="reboot" number="169"/> + <syscall name="sethostname" number="170"/> + <syscall name="setdomainname" number="171"/> + <syscall name="iopl" number="172"/> + <syscall name="ioperm" number="173"/> + <syscall name="create_module" number="174"/> + <syscall name="init_module" number="175"/> + <syscall name="delete_module" number="176"/> + <syscall name="get_kernel_syms" number="177"/> + <syscall name="query_module" number="178"/> + <syscall name="quotactl" number="179"/> + <syscall name="nfsservctl" number="180"/> + <syscall name="getpmsg" number="181"/> + <syscall name="putpmsg" number="182"/> + <syscall name="afs_syscall" number="183"/> + <syscall name="tuxcall" number="184"/> + <syscall name="security" number="185"/> + <syscall name="gettid" number="186"/> + <syscall name="readahead" number="187"/> + <syscall name="setxattr" number="188"/> + <syscall name="lsetxattr" number="189"/> + <syscall name="fsetxattr" number="190"/> + <syscall name="getxattr" number="191"/> + <syscall name="lgetxattr" number="192"/> + <syscall name="fgetxattr" number="193"/> + <syscall name="listxattr" number="194"/> + <syscall name="llistxattr" number="195"/> + <syscall name="flistxattr" number="196"/> + <syscall name="removexattr" number="197"/> + <syscall name="lremovexattr" number="198"/> + <syscall name="fremovexattr" number="199"/> + <syscall name="tkill" number="200"/> + <syscall name="time" number="201"/> + <syscall name="futex" number="202"/> + <syscall name="sched_setaffinity" number="203"/> + <syscall name="sched_getaffinity" number="204"/> + <syscall name="set_thread_area" number="205"/> + <syscall name="io_setup" number="206"/> + <syscall name="io_destroy" number="207"/> + <syscall name="io_getevents" number="208"/> + <syscall name="io_submit" number="209"/> + <syscall name="io_cancel" number="210"/> + <syscall name="get_thread_area" number="211"/> + <syscall name="lookup_dcookie" number="212"/> + <syscall name="epoll_create" number="213"/> + <syscall name="epoll_ctl_old" number="214"/> + <syscall name="epoll_wait_old" number="215"/> + <syscall name="remap_file_pages" number="216"/> + <syscall name="getdents64" number="217"/> + <syscall name="set_tid_address" number="218"/> + <syscall name="restart_syscall" number="219"/> + <syscall name="semtimedop" number="220"/> + <syscall name="fadvise64" number="221"/> + <syscall name="timer_create" number="222"/> + <syscall name="timer_settime" number="223"/> + <syscall name="timer_gettime" number="224"/> + <syscall name="timer_getoverrun" number="225"/> + <syscall name="timer_delete" number="226"/> + <syscall name="clock_settime" number="227"/> + <syscall name="clock_gettime" number="228"/> + <syscall name="clock_getres" number="229"/> + <syscall name="clock_nanosleep" number="230"/> + <syscall name="exit_group" number="231"/> + <syscall name="epoll_wait" number="232"/> + <syscall name="epoll_ctl" number="233"/> + <syscall name="tgkill" number="234"/> + <syscall name="utimes" number="235"/> + <syscall name="vserver" number="236"/> + <syscall name="mbind" number="237"/> + <syscall name="set_mempolicy" number="238"/> + <syscall name="get_mempolicy" number="239"/> + <syscall name="mq_open" number="240"/> + <syscall name="mq_unlink" number="241"/> + <syscall name="mq_timedsend" number="242"/> + <syscall name="mq_timedreceive" number="243"/> + <syscall name="mq_notify" number="244"/> + <syscall name="mq_getsetattr" number="245"/> + <syscall name="kexec_load" number="246"/> + <syscall name="waitid" number="247"/> + <syscall name="add_key" number="248"/> + <syscall name="request_key" number="249"/> + <syscall name="keyctl" number="250"/> + <syscall name="ioprio_set" number="251"/> + <syscall name="ioprio_get" number="252"/> + <syscall name="inotify_init" number="253"/> + <syscall name="inotify_add_watch" number="254"/> + <syscall name="inotify_rm_watch" number="255"/> + <syscall name="migrate_pages" number="256"/> + <syscall name="openat" number="257"/> + <syscall name="mkdirat" number="258"/> + <syscall name="mknodat" number="259"/> + <syscall name="fchownat" number="260"/> + <syscall name="futimesat" number="261"/> + <syscall name="newfstatat" number="262"/> + <syscall name="unlinkat" number="263"/> + <syscall name="renameat" number="264"/> + <syscall name="linkat" number="265"/> + <syscall name="symlinkat" number="266"/> + <syscall name="readlinkat" number="267"/> + <syscall name="fchmodat" number="268"/> + <syscall name="faccessat" number="269"/> + <syscall name="pselect6" number="270"/> + <syscall name="ppoll" number="271"/> + <syscall name="unshare" number="272"/> + <syscall name="set_robust_list" number="273"/> + <syscall name="get_robust_list" number="274"/> + <syscall name="splice" number="275"/> + <syscall name="tee" number="276"/> + <syscall name="sync_file_range" number="277"/> + <syscall name="vmsplice" number="278"/> + <syscall name="move_pages" number="279"/> + <syscall name="utimensat" number="280"/> + <syscall name="epoll_pwait" number="281"/> + <syscall name="signalfd" number="282"/> + <syscall name="timerfd_create" number="283"/> + <syscall name="eventfd" number="284"/> + <syscall name="fallocate" number="285"/> + <syscall name="timerfd_settime" number="286"/> + <syscall name="timerfd_gettime" number="287"/> + <syscall name="accept4" number="288"/> + <syscall name="signalfd4" number="289"/> + <syscall name="eventfd2" number="290"/> + <syscall name="epoll_create1" number="291"/> + <syscall name="dup3" number="292"/> + <syscall name="pipe2" number="293"/> + <syscall name="inotify_init1" number="294"/> + <syscall name="preadv" number="295"/> + <syscall name="pwritev" number="296"/> +</syscalls_info> diff --git a/share/gdb/syscalls/gdb-syscalls.dtd b/share/gdb/syscalls/gdb-syscalls.dtd new file mode 100644 index 0000000..05c1ccf --- /dev/null +++ b/share/gdb/syscalls/gdb-syscalls.dtd @@ -0,0 +1,14 @@ +<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!-- The root element of a syscall info is <syscalls-info>. --> + +<!ELEMENT syscalls-info (syscall*)> + +<!ELEMENT syscall EMPTY> +<!ATTLIST syscall + name CDATA #REQUIRED + number CDATA #REQUIRED> diff --git a/share/gdb/syscalls/i386-linux.xml b/share/gdb/syscalls/i386-linux.xml new file mode 100644 index 0000000..80512d8 --- /dev/null +++ b/share/gdb/syscalls/i386-linux.xml @@ -0,0 +1,340 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/x86/include/asm/unistd_32.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="restart_syscall" number="0"/> + <syscall name="exit" number="1"/> + <syscall name="fork" number="2"/> + <syscall name="read" number="3"/> + <syscall name="write" number="4"/> + <syscall name="open" number="5"/> + <syscall name="close" number="6"/> + <syscall name="waitpid" number="7"/> + <syscall name="creat" number="8"/> + <syscall name="link" number="9"/> + <syscall name="unlink" number="10"/> + <syscall name="execve" number="11"/> + <syscall name="chdir" number="12"/> + <syscall name="time" number="13"/> + <syscall name="mknod" number="14"/> + <syscall name="chmod" number="15"/> + <syscall name="lchown" number="16"/> + <syscall name="break" number="17"/> + <syscall name="oldstat" number="18"/> + <syscall name="lseek" number="19"/> + <syscall name="getpid" number="20"/> + <syscall name="mount" number="21"/> + <syscall name="umount" number="22"/> + <syscall name="setuid" number="23"/> + <syscall name="getuid" number="24"/> + <syscall name="stime" number="25"/> + <syscall name="ptrace" number="26"/> + <syscall name="alarm" number="27"/> + <syscall name="oldfstat" number="28"/> + <syscall name="pause" number="29"/> + <syscall name="utime" number="30"/> + <syscall name="stty" number="31"/> + <syscall name="gtty" number="32"/> + <syscall name="access" number="33"/> + <syscall name="nice" number="34"/> + <syscall name="ftime" number="35"/> + <syscall name="sync" number="36"/> + <syscall name="kill" number="37"/> + <syscall name="rename" number="38"/> + <syscall name="mkdir" number="39"/> + <syscall name="rmdir" number="40"/> + <syscall name="dup" number="41"/> + <syscall name="pipe" number="42"/> + <syscall name="times" number="43"/> + <syscall name="prof" number="44"/> + <syscall name="brk" number="45"/> + <syscall name="setgid" number="46"/> + <syscall name="getgid" number="47"/> + <syscall name="signal" number="48"/> + <syscall name="geteuid" number="49"/> + <syscall name="getegid" number="50"/> + <syscall name="acct" number="51"/> + <syscall name="umount2" number="52"/> + <syscall name="lock" number="53"/> + <syscall name="ioctl" number="54"/> + <syscall name="fcntl" number="55"/> + <syscall name="mpx" number="56"/> + <syscall name="setpgid" number="57"/> + <syscall name="ulimit" number="58"/> + <syscall name="oldolduname" number="59"/> + <syscall name="umask" number="60"/> + <syscall name="chroot" number="61"/> + <syscall name="ustat" number="62"/> + <syscall name="dup2" number="63"/> + <syscall name="getppid" number="64"/> + <syscall name="getpgrp" number="65"/> + <syscall name="setsid" number="66"/> + <syscall name="sigaction" number="67"/> + <syscall name="sgetmask" number="68"/> + <syscall name="ssetmask" number="69"/> + <syscall name="setreuid" number="70"/> + <syscall name="setregid" number="71"/> + <syscall name="sigsuspend" number="72"/> + <syscall name="sigpending" number="73"/> + <syscall name="sethostname" number="74"/> + <syscall name="setrlimit" number="75"/> + <syscall name="getrlimit" number="76"/> + <syscall name="getrusage" number="77"/> + <syscall name="gettimeofday" number="78"/> + <syscall name="settimeofday" number="79"/> + <syscall name="getgroups" number="80"/> + <syscall name="setgroups" number="81"/> + <syscall name="select" number="82"/> + <syscall name="symlink" number="83"/> + <syscall name="oldlstat" number="84"/> + <syscall name="readlink" number="85"/> + <syscall name="uselib" number="86"/> + <syscall name="swapon" number="87"/> + <syscall name="reboot" number="88"/> + <syscall name="readdir" number="89"/> + <syscall name="mmap" number="90"/> + <syscall name="munmap" number="91"/> + <syscall name="truncate" number="92"/> + <syscall name="ftruncate" number="93"/> + <syscall name="fchmod" number="94"/> + <syscall name="fchown" number="95"/> + <syscall name="getpriority" number="96"/> + <syscall name="setpriority" number="97"/> + <syscall name="profil" number="98"/> + <syscall name="statfs" number="99"/> + <syscall name="fstatfs" number="100"/> + <syscall name="ioperm" number="101"/> + <syscall name="socketcall" number="102"/> + <syscall name="syslog" number="103"/> + <syscall name="setitimer" number="104"/> + <syscall name="getitimer" number="105"/> + <syscall name="stat" number="106"/> + <syscall name="lstat" number="107"/> + <syscall name="fstat" number="108"/> + <syscall name="olduname" number="109"/> + <syscall name="iopl" number="110"/> + <syscall name="vhangup" number="111"/> + <syscall name="idle" number="112"/> + <syscall name="vm86old" number="113"/> + <syscall name="wait4" number="114"/> + <syscall name="swapoff" number="115"/> + <syscall name="sysinfo" number="116"/> + <syscall name="ipc" number="117"/> + <syscall name="fsync" number="118"/> + <syscall name="sigreturn" number="119"/> + <syscall name="clone" number="120"/> + <syscall name="setdomainname" number="121"/> + <syscall name="uname" number="122"/> + <syscall name="modify_ldt" number="123"/> + <syscall name="adjtimex" number="124"/> + <syscall name="mprotect" number="125"/> + <syscall name="sigprocmask" number="126"/> + <syscall name="create_module" number="127"/> + <syscall name="init_module" number="128"/> + <syscall name="delete_module" number="129"/> + <syscall name="get_kernel_syms" number="130"/> + <syscall name="quotactl" number="131"/> + <syscall name="getpgid" number="132"/> + <syscall name="fchdir" number="133"/> + <syscall name="bdflush" number="134"/> + <syscall name="sysfs" number="135"/> + <syscall name="personality" number="136"/> + <syscall name="afs_syscall" number="137"/> + <syscall name="setfsuid" number="138"/> + <syscall name="setfsgid" number="139"/> + <syscall name="_llseek" number="140"/> + <syscall name="getdents" number="141"/> + <syscall name="_newselect" number="142"/> + <syscall name="flock" number="143"/> + <syscall name="msync" number="144"/> + <syscall name="readv" number="145"/> + <syscall name="writev" number="146"/> + <syscall name="getsid" number="147"/> + <syscall name="fdatasync" number="148"/> + <syscall name="_sysctl" number="149"/> + <syscall name="mlock" number="150"/> + <syscall name="munlock" number="151"/> + <syscall name="mlockall" number="152"/> + <syscall name="munlockall" number="153"/> + <syscall name="sched_setparam" number="154"/> + <syscall name="sched_getparam" number="155"/> + <syscall name="sched_setscheduler" number="156"/> + <syscall name="sched_getscheduler" number="157"/> + <syscall name="sched_yield" number="158"/> + <syscall name="sched_get_priority_max" number="159"/> + <syscall name="sched_get_priority_min" number="160"/> + <syscall name="sched_rr_get_interval" number="161"/> + <syscall name="nanosleep" number="162"/> + <syscall name="mremap" number="163"/> + <syscall name="setresuid" number="164"/> + <syscall name="getresuid" number="165"/> + <syscall name="vm86" number="166"/> + <syscall name="query_module" number="167"/> + <syscall name="poll" number="168"/> + <syscall name="nfsservctl" number="169"/> + <syscall name="setresgid" number="170"/> + <syscall name="getresgid" number="171"/> + <syscall name="prctl" number="172"/> + <syscall name="rt_sigreturn" number="173"/> + <syscall name="rt_sigaction" number="174"/> + <syscall name="rt_sigprocmask" number="175"/> + <syscall name="rt_sigpending" number="176"/> + <syscall name="rt_sigtimedwait" number="177"/> + <syscall name="rt_sigqueueinfo" number="178"/> + <syscall name="rt_sigsuspend" number="179"/> + <syscall name="pread64" number="180"/> + <syscall name="pwrite64" number="181"/> + <syscall name="chown" number="182"/> + <syscall name="getcwd" number="183"/> + <syscall name="capget" number="184"/> + <syscall name="capset" number="185"/> + <syscall name="sigaltstack" number="186"/> + <syscall name="sendfile" number="187"/> + <syscall name="getpmsg" number="188"/> + <syscall name="putpmsg" number="189"/> + <syscall name="vfork" number="190"/> + <syscall name="ugetrlimit" number="191"/> + <syscall name="mmap2" number="192"/> + <syscall name="truncate64" number="193"/> + <syscall name="ftruncate64" number="194"/> + <syscall name="stat64" number="195"/> + <syscall name="lstat64" number="196"/> + <syscall name="fstat64" number="197"/> + <syscall name="lchown32" number="198"/> + <syscall name="getuid32" number="199"/> + <syscall name="getgid32" number="200"/> + <syscall name="geteuid32" number="201"/> + <syscall name="getegid32" number="202"/> + <syscall name="setreuid32" number="203"/> + <syscall name="setregid32" number="204"/> + <syscall name="getgroups32" number="205"/> + <syscall name="setgroups32" number="206"/> + <syscall name="fchown32" number="207"/> + <syscall name="setresuid32" number="208"/> + <syscall name="getresuid32" number="209"/> + <syscall name="setresgid32" number="210"/> + <syscall name="getresgid32" number="211"/> + <syscall name="chown32" number="212"/> + <syscall name="setuid32" number="213"/> + <syscall name="setgid32" number="214"/> + <syscall name="setfsuid32" number="215"/> + <syscall name="setfsgid32" number="216"/> + <syscall name="pivot_root" number="217"/> + <syscall name="mincore" number="218"/> + <syscall name="madvise" number="219"/> + <syscall name="madvise1" number="220"/> + <syscall name="getdents64" number="221"/> + <syscall name="fcntl64" number="222"/> + <syscall name="gettid" number="224"/> + <syscall name="readahead" number="225"/> + <syscall name="setxattr" number="226"/> + <syscall name="lsetxattr" number="227"/> + <syscall name="fsetxattr" number="228"/> + <syscall name="getxattr" number="229"/> + <syscall name="lgetxattr" number="230"/> + <syscall name="fgetxattr" number="231"/> + <syscall name="listxattr" number="232"/> + <syscall name="llistxattr" number="233"/> + <syscall name="flistxattr" number="234"/> + <syscall name="removexattr" number="235"/> + <syscall name="lremovexattr" number="236"/> + <syscall name="fremovexattr" number="237"/> + <syscall name="tkill" number="238"/> + <syscall name="sendfile64" number="239"/> + <syscall name="futex" number="240"/> + <syscall name="sched_setaffinity" number="241"/> + <syscall name="sched_getaffinity" number="242"/> + <syscall name="set_thread_area" number="243"/> + <syscall name="get_thread_area" number="244"/> + <syscall name="io_setup" number="245"/> + <syscall name="io_destroy" number="246"/> + <syscall name="io_getevents" number="247"/> + <syscall name="io_submit" number="248"/> + <syscall name="io_cancel" number="249"/> + <syscall name="fadvise64" number="250"/> + <syscall name="exit_group" number="252"/> + <syscall name="lookup_dcookie" number="253"/> + <syscall name="epoll_create" number="254"/> + <syscall name="epoll_ctl" number="255"/> + <syscall name="epoll_wait" number="256"/> + <syscall name="remap_file_pages" number="257"/> + <syscall name="set_tid_address" number="258"/> + <syscall name="timer_create" number="259"/> + <syscall name="timer_settime" number="260"/> + <syscall name="timer_gettime" number="261"/> + <syscall name="timer_getoverrun" number="262"/> + <syscall name="timer_delete" number="263"/> + <syscall name="clock_settime" number="264"/> + <syscall name="clock_gettime" number="265"/> + <syscall name="clock_getres" number="266"/> + <syscall name="clock_nanosleep" number="267"/> + <syscall name="statfs64" number="268"/> + <syscall name="fstatfs64" number="269"/> + <syscall name="tgkill" number="270"/> + <syscall name="utimes" number="271"/> + <syscall name="fadvise64_64" number="272"/> + <syscall name="vserver" number="273"/> + <syscall name="mbind" number="274"/> + <syscall name="get_mempolicy" number="275"/> + <syscall name="set_mempolicy" number="276"/> + <syscall name="mq_open" number="277"/> + <syscall name="mq_unlink" number="278"/> + <syscall name="mq_timedsend" number="279"/> + <syscall name="mq_timedreceive" number="280"/> + <syscall name="mq_notify" number="281"/> + <syscall name="mq_getsetattr" number="282"/> + <syscall name="kexec_load" number="283"/> + <syscall name="waitid" number="284"/> + <syscall name="add_key" number="286"/> + <syscall name="request_key" number="287"/> + <syscall name="keyctl" number="288"/> + <syscall name="ioprio_set" number="289"/> + <syscall name="ioprio_get" number="290"/> + <syscall name="inotify_init" number="291"/> + <syscall name="inotify_add_watch" number="292"/> + <syscall name="inotify_rm_watch" number="293"/> + <syscall name="migrate_pages" number="294"/> + <syscall name="openat" number="295"/> + <syscall name="mkdirat" number="296"/> + <syscall name="mknodat" number="297"/> + <syscall name="fchownat" number="298"/> + <syscall name="futimesat" number="299"/> + <syscall name="fstatat64" number="300"/> + <syscall name="unlinkat" number="301"/> + <syscall name="renameat" number="302"/> + <syscall name="linkat" number="303"/> + <syscall name="symlinkat" number="304"/> + <syscall name="readlinkat" number="305"/> + <syscall name="fchmodat" number="306"/> + <syscall name="faccessat" number="307"/> + <syscall name="pselect6" number="308"/> + <syscall name="ppoll" number="309"/> + <syscall name="unshare" number="310"/> + <syscall name="set_robust_list" number="311"/> + <syscall name="get_robust_list" number="312"/> + <syscall name="splice" number="313"/> + <syscall name="sync_file_range" number="314"/> + <syscall name="tee" number="315"/> + <syscall name="vmsplice" number="316"/> + <syscall name="move_pages" number="317"/> + <syscall name="getcpu" number="318"/> + <syscall name="epoll_pwait" number="319"/> + <syscall name="utimensat" number="320"/> + <syscall name="signalfd" number="321"/> + <syscall name="timerfd_create" number="322"/> + <syscall name="eventfd" number="323"/> + <syscall name="fallocate" number="324"/> + <syscall name="timerfd_settime" number="325"/> +</syscalls_info> diff --git a/share/gdb/syscalls/mips-n32-linux.xml b/share/gdb/syscalls/mips-n32-linux.xml new file mode 100644 index 0000000..b4e2181 --- /dev/null +++ b/share/gdb/syscalls/mips-n32-linux.xml @@ -0,0 +1,319 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/mips/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="read" number="6000"/> + <syscall name="write" number="6001"/> + <syscall name="open" number="6002"/> + <syscall name="close" number="6003"/> + <syscall name="stat" number="6004"/> + <syscall name="fstat" number="6005"/> + <syscall name="lstat" number="6006"/> + <syscall name="poll" number="6007"/> + <syscall name="lseek" number="6008"/> + <syscall name="mmap" number="6009"/> + <syscall name="mprotect" number="6010"/> + <syscall name="munmap" number="6011"/> + <syscall name="brk" number="6012"/> + <syscall name="rt_sigaction" number="6013"/> + <syscall name="rt_sigprocmask" number="6014"/> + <syscall name="ioctl" number="6015"/> + <syscall name="pread64" number="6016"/> + <syscall name="pwrite64" number="6017"/> + <syscall name="readv" number="6018"/> + <syscall name="writev" number="6019"/> + <syscall name="access" number="6020"/> + <syscall name="pipe" number="6021"/> + <syscall name="_newselect" number="6022"/> + <syscall name="sched_yield" number="6023"/> + <syscall name="mremap" number="6024"/> + <syscall name="msync" number="6025"/> + <syscall name="mincore" number="6026"/> + <syscall name="madvise" number="6027"/> + <syscall name="shmget" number="6028"/> + <syscall name="shmat" number="6029"/> + <syscall name="shmctl" number="6030"/> + <syscall name="dup" number="6031"/> + <syscall name="dup2" number="6032"/> + <syscall name="pause" number="6033"/> + <syscall name="nanosleep" number="6034"/> + <syscall name="getitimer" number="6035"/> + <syscall name="setitimer" number="6036"/> + <syscall name="alarm" number="6037"/> + <syscall name="getpid" number="6038"/> + <syscall name="sendfile" number="6039"/> + <syscall name="socket" number="6040"/> + <syscall name="connect" number="6041"/> + <syscall name="accept" number="6042"/> + <syscall name="sendto" number="6043"/> + <syscall name="recvfrom" number="6044"/> + <syscall name="sendmsg" number="6045"/> + <syscall name="recvmsg" number="6046"/> + <syscall name="shutdown" number="6047"/> + <syscall name="bind" number="6048"/> + <syscall name="listen" number="6049"/> + <syscall name="getsockname" number="6050"/> + <syscall name="getpeername" number="6051"/> + <syscall name="socketpair" number="6052"/> + <syscall name="setsockopt" number="6053"/> + <syscall name="getsockopt" number="6054"/> + <syscall name="clone" number="6055"/> + <syscall name="fork" number="6056"/> + <syscall name="execve" number="6057"/> + <syscall name="exit" number="6058"/> + <syscall name="wait4" number="6059"/> + <syscall name="kill" number="6060"/> + <syscall name="uname" number="6061"/> + <syscall name="semget" number="6062"/> + <syscall name="semop" number="6063"/> + <syscall name="semctl" number="6064"/> + <syscall name="shmdt" number="6065"/> + <syscall name="msgget" number="6066"/> + <syscall name="msgsnd" number="6067"/> + <syscall name="msgrcv" number="6068"/> + <syscall name="msgctl" number="6069"/> + <syscall name="fcntl" number="6070"/> + <syscall name="flock" number="6071"/> + <syscall name="fsync" number="6072"/> + <syscall name="fdatasync" number="6073"/> + <syscall name="truncate" number="6074"/> + <syscall name="ftruncate" number="6075"/> + <syscall name="getdents" number="6076"/> + <syscall name="getcwd" number="6077"/> + <syscall name="chdir" number="6078"/> + <syscall name="fchdir" number="6079"/> + <syscall name="rename" number="6080"/> + <syscall name="mkdir" number="6081"/> + <syscall name="rmdir" number="6082"/> + <syscall name="creat" number="6083"/> + <syscall name="link" number="6084"/> + <syscall name="unlink" number="6085"/> + <syscall name="symlink" number="6086"/> + <syscall name="readlink" number="6087"/> + <syscall name="chmod" number="6088"/> + <syscall name="fchmod" number="6089"/> + <syscall name="chown" number="6090"/> + <syscall name="fchown" number="6091"/> + <syscall name="lchown" number="6092"/> + <syscall name="umask" number="6093"/> + <syscall name="gettimeofday" number="6094"/> + <syscall name="getrlimit" number="6095"/> + <syscall name="getrusage" number="6096"/> + <syscall name="sysinfo" number="6097"/> + <syscall name="times" number="6098"/> + <syscall name="ptrace" number="6099"/> + <syscall name="getuid" number="6100"/> + <syscall name="syslog" number="6101"/> + <syscall name="getgid" number="6102"/> + <syscall name="setuid" number="6103"/> + <syscall name="setgid" number="6104"/> + <syscall name="geteuid" number="6105"/> + <syscall name="getegid" number="6106"/> + <syscall name="setpgid" number="6107"/> + <syscall name="getppid" number="6108"/> + <syscall name="getpgrp" number="6109"/> + <syscall name="setsid" number="6110"/> + <syscall name="setreuid" number="6111"/> + <syscall name="setregid" number="6112"/> + <syscall name="getgroups" number="6113"/> + <syscall name="setgroups" number="6114"/> + <syscall name="setresuid" number="6115"/> + <syscall name="getresuid" number="6116"/> + <syscall name="setresgid" number="6117"/> + <syscall name="getresgid" number="6118"/> + <syscall name="getpgid" number="6119"/> + <syscall name="setfsuid" number="6120"/> + <syscall name="setfsgid" number="6121"/> + <syscall name="getsid" number="6122"/> + <syscall name="capget" number="6123"/> + <syscall name="capset" number="6124"/> + <syscall name="rt_sigpending" number="6125"/> + <syscall name="rt_sigtimedwait" number="6126"/> + <syscall name="rt_sigqueueinfo" number="6127"/> + <syscall name="rt_sigsuspend" number="6128"/> + <syscall name="sigaltstack" number="6129"/> + <syscall name="utime" number="6130"/> + <syscall name="mknod" number="6131"/> + <syscall name="personality" number="6132"/> + <syscall name="ustat" number="6133"/> + <syscall name="statfs" number="6134"/> + <syscall name="fstatfs" number="6135"/> + <syscall name="sysfs" number="6136"/> + <syscall name="getpriority" number="6137"/> + <syscall name="setpriority" number="6138"/> + <syscall name="sched_setparam" number="6139"/> + <syscall name="sched_getparam" number="6140"/> + <syscall name="sched_setscheduler" number="6141"/> + <syscall name="sched_getscheduler" number="6142"/> + <syscall name="sched_get_priority_max" number="6143"/> + <syscall name="sched_get_priority_min" number="6144"/> + <syscall name="sched_rr_get_interval" number="6145"/> + <syscall name="mlock" number="6146"/> + <syscall name="munlock" number="6147"/> + <syscall name="mlockall" number="6148"/> + <syscall name="munlockall" number="6149"/> + <syscall name="vhangup" number="6150"/> + <syscall name="pivot_root" number="6151"/> + <syscall name="_sysctl" number="6152"/> + <syscall name="prctl" number="6153"/> + <syscall name="adjtimex" number="6154"/> + <syscall name="setrlimit" number="6155"/> + <syscall name="chroot" number="6156"/> + <syscall name="sync" number="6157"/> + <syscall name="acct" number="6158"/> + <syscall name="settimeofday" number="6159"/> + <syscall name="mount" number="6160"/> + <syscall name="umount2" number="6161"/> + <syscall name="swapon" number="6162"/> + <syscall name="swapoff" number="6163"/> + <syscall name="reboot" number="6164"/> + <syscall name="sethostname" number="6165"/> + <syscall name="setdomainname" number="6166"/> + <syscall name="create_module" number="6167"/> + <syscall name="init_module" number="6168"/> + <syscall name="delete_module" number="6169"/> + <syscall name="get_kernel_syms" number="6170"/> + <syscall name="query_module" number="6171"/> + <syscall name="quotactl" number="6172"/> + <syscall name="nfsservctl" number="6173"/> + <syscall name="getpmsg" number="6174"/> + <syscall name="putpmsg" number="6175"/> + <syscall name="afs_syscall" number="6176"/> + <syscall name="reserved177" number="6177"/> + <syscall name="gettid" number="6178"/> + <syscall name="readahead" number="6179"/> + <syscall name="setxattr" number="6180"/> + <syscall name="lsetxattr" number="6181"/> + <syscall name="fsetxattr" number="6182"/> + <syscall name="getxattr" number="6183"/> + <syscall name="lgetxattr" number="6184"/> + <syscall name="fgetxattr" number="6185"/> + <syscall name="listxattr" number="6186"/> + <syscall name="llistxattr" number="6187"/> + <syscall name="flistxattr" number="6188"/> + <syscall name="removexattr" number="6189"/> + <syscall name="lremovexattr" number="6190"/> + <syscall name="fremovexattr" number="6191"/> + <syscall name="tkill" number="6192"/> + <syscall name="reserved193" number="6193"/> + <syscall name="futex" number="6194"/> + <syscall name="sched_setaffinity" number="6195"/> + <syscall name="sched_getaffinity" number="6196"/> + <syscall name="cacheflush" number="6197"/> + <syscall name="cachectl" number="6198"/> + <syscall name="sysmips" number="6199"/> + <syscall name="io_setup" number="6200"/> + <syscall name="io_destroy" number="6201"/> + <syscall name="io_getevents" number="6202"/> + <syscall name="io_submit" number="6203"/> + <syscall name="io_cancel" number="6204"/> + <syscall name="exit_group" number="6205"/> + <syscall name="lookup_dcookie" number="6206"/> + <syscall name="epoll_create" number="6207"/> + <syscall name="epoll_ctl" number="6208"/> + <syscall name="epoll_wait" number="6209"/> + <syscall name="remap_file_pages" number="6210"/> + <syscall name="rt_sigreturn" number="6211"/> + <syscall name="fcntl64" number="6212"/> + <syscall name="set_tid_address" number="6213"/> + <syscall name="restart_syscall" number="6214"/> + <syscall name="semtimedop" number="6215"/> + <syscall name="fadvise64" number="6216"/> + <syscall name="statfs64" number="6217"/> + <syscall name="fstatfs64" number="6218"/> + <syscall name="sendfile64" number="6219"/> + <syscall name="timer_create" number="6220"/> + <syscall name="timer_settime" number="6221"/> + <syscall name="timer_gettime" number="6222"/> + <syscall name="timer_getoverrun" number="6223"/> + <syscall name="timer_delete" number="6224"/> + <syscall name="clock_settime" number="6225"/> + <syscall name="clock_gettime" number="6226"/> + <syscall name="clock_getres" number="6227"/> + <syscall name="clock_nanosleep" number="6228"/> + <syscall name="tgkill" number="6229"/> + <syscall name="utimes" number="6230"/> + <syscall name="mbind" number="6231"/> + <syscall name="get_mempolicy" number="6232"/> + <syscall name="set_mempolicy" number="6233"/> + <syscall name="mq_open" number="6234"/> + <syscall name="mq_unlink" number="6235"/> + <syscall name="mq_timedsend" number="6236"/> + <syscall name="mq_timedreceive" number="6237"/> + <syscall name="mq_notify" number="6238"/> + <syscall name="mq_getsetattr" number="6239"/> + <syscall name="vserver" number="6240"/> + <syscall name="waitid" number="6241"/> + <syscall name="add_key" number="6243"/> + <syscall name="request_key" number="6244"/> + <syscall name="keyctl" number="6245"/> + <syscall name="set_thread_area" number="6246"/> + <syscall name="inotify_init" number="6247"/> + <syscall name="inotify_add_watch" number="6248"/> + <syscall name="inotify_rm_watch" number="6249"/> + <syscall name="migrate_pages" number="6250"/> + <syscall name="openat" number="6251"/> + <syscall name="mkdirat" number="6252"/> + <syscall name="mknodat" number="6253"/> + <syscall name="fchownat" number="6254"/> + <syscall name="futimesat" number="6255"/> + <syscall name="newfstatat" number="6256"/> + <syscall name="unlinkat" number="6257"/> + <syscall name="renameat" number="6258"/> + <syscall name="linkat" number="6259"/> + <syscall name="symlinkat" number="6260"/> + <syscall name="readlinkat" number="6261"/> + <syscall name="fchmodat" number="6262"/> + <syscall name="faccessat" number="6263"/> + <syscall name="pselect6" number="6264"/> + <syscall name="ppoll" number="6265"/> + <syscall name="unshare" number="6266"/> + <syscall name="splice" number="6267"/> + <syscall name="sync_file_range" number="6268"/> + <syscall name="tee" number="6269"/> + <syscall name="vmsplice" number="6270"/> + <syscall name="move_pages" number="6271"/> + <syscall name="set_robust_list" number="6272"/> + <syscall name="get_robust_list" number="6273"/> + <syscall name="kexec_load" number="6274"/> + <syscall name="getcpu" number="6275"/> + <syscall name="epoll_pwait" number="6276"/> + <syscall name="ioprio_set" number="6277"/> + <syscall name="ioprio_get" number="6278"/> + <syscall name="utimensat" number="6279"/> + <syscall name="signalfd" number="6280"/> + <syscall name="timerfd" number="6281"/> + <syscall name="eventfd" number="6282"/> + <syscall name="fallocate" number="6283"/> + <syscall name="timerfd_create" number="6284"/> + <syscall name="timerfd_gettime" number="6285"/> + <syscall name="timerfd_settime" number="6286"/> + <syscall name="signalfd4" number="6287"/> + <syscall name="eventfd2" number="6288"/> + <syscall name="epoll_create1" number="6289"/> + <syscall name="dup3" number="6290"/> + <syscall name="pipe2" number="6291"/> + <syscall name="inotify_init1" number="6292"/> + <syscall name="preadv" number="6293"/> + <syscall name="pwritev" number="6294"/> + <syscall name="rt_tgsigqueueinfo" number="6295"/> + <syscall name="perf_event_open" number="6296"/> + <syscall name="accept4" number="6297"/> + <syscall name="recvmmsg" number="6298"/> + <syscall name="getdents64" number="6299"/> + <syscall name="fanotify_init" number="6300"/> + <syscall name="fanotify_mark" number="6301"/> + <syscall name="prlimit64" number="6302"/> +</syscalls_info> diff --git a/share/gdb/syscalls/mips-n64-linux.xml b/share/gdb/syscalls/mips-n64-linux.xml new file mode 100644 index 0000000..896e0c0 --- /dev/null +++ b/share/gdb/syscalls/mips-n64-linux.xml @@ -0,0 +1,312 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/mips/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="read" number="5000"/> + <syscall name="write" number="5001"/> + <syscall name="open" number="5002"/> + <syscall name="close" number="5003"/> + <syscall name="stat" number="5004"/> + <syscall name="fstat" number="5005"/> + <syscall name="lstat" number="5006"/> + <syscall name="poll" number="5007"/> + <syscall name="lseek" number="5008"/> + <syscall name="mmap" number="5009"/> + <syscall name="mprotect" number="5010"/> + <syscall name="munmap" number="5011"/> + <syscall name="brk" number="5012"/> + <syscall name="rt_sigaction" number="5013"/> + <syscall name="rt_sigprocmask" number="5014"/> + <syscall name="ioctl" number="5015"/> + <syscall name="pread64" number="5016"/> + <syscall name="pwrite64" number="5017"/> + <syscall name="readv" number="5018"/> + <syscall name="writev" number="5019"/> + <syscall name="access" number="5020"/> + <syscall name="pipe" number="5021"/> + <syscall name="_newselect" number="5022"/> + <syscall name="sched_yield" number="5023"/> + <syscall name="mremap" number="5024"/> + <syscall name="msync" number="5025"/> + <syscall name="mincore" number="5026"/> + <syscall name="madvise" number="5027"/> + <syscall name="shmget" number="5028"/> + <syscall name="shmat" number="5029"/> + <syscall name="shmctl" number="5030"/> + <syscall name="dup" number="5031"/> + <syscall name="dup2" number="5032"/> + <syscall name="pause" number="5033"/> + <syscall name="nanosleep" number="5034"/> + <syscall name="getitimer" number="5035"/> + <syscall name="setitimer" number="5036"/> + <syscall name="alarm" number="5037"/> + <syscall name="getpid" number="5038"/> + <syscall name="sendfile" number="5039"/> + <syscall name="socket" number="5040"/> + <syscall name="connect" number="5041"/> + <syscall name="accept" number="5042"/> + <syscall name="sendto" number="5043"/> + <syscall name="recvfrom" number="5044"/> + <syscall name="sendmsg" number="5045"/> + <syscall name="recvmsg" number="5046"/> + <syscall name="shutdown" number="5047"/> + <syscall name="bind" number="5048"/> + <syscall name="listen" number="5049"/> + <syscall name="getsockname" number="5050"/> + <syscall name="getpeername" number="5051"/> + <syscall name="socketpair" number="5052"/> + <syscall name="setsockopt" number="5053"/> + <syscall name="getsockopt" number="5054"/> + <syscall name="clone" number="5055"/> + <syscall name="fork" number="5056"/> + <syscall name="execve" number="5057"/> + <syscall name="exit" number="5058"/> + <syscall name="wait4" number="5059"/> + <syscall name="kill" number="5060"/> + <syscall name="uname" number="5061"/> + <syscall name="semget" number="5062"/> + <syscall name="semop" number="5063"/> + <syscall name="semctl" number="5064"/> + <syscall name="shmdt" number="5065"/> + <syscall name="msgget" number="5066"/> + <syscall name="msgsnd" number="5067"/> + <syscall name="msgrcv" number="5068"/> + <syscall name="msgctl" number="5069"/> + <syscall name="fcntl" number="5070"/> + <syscall name="flock" number="5071"/> + <syscall name="fsync" number="5072"/> + <syscall name="fdatasync" number="5073"/> + <syscall name="truncate" number="5074"/> + <syscall name="ftruncate" number="5075"/> + <syscall name="getdents" number="5076"/> + <syscall name="getcwd" number="5077"/> + <syscall name="chdir" number="5078"/> + <syscall name="fchdir" number="5079"/> + <syscall name="rename" number="5080"/> + <syscall name="mkdir" number="5081"/> + <syscall name="rmdir" number="5082"/> + <syscall name="creat" number="5083"/> + <syscall name="link" number="5084"/> + <syscall name="unlink" number="5085"/> + <syscall name="symlink" number="5086"/> + <syscall name="readlink" number="5087"/> + <syscall name="chmod" number="5088"/> + <syscall name="fchmod" number="5089"/> + <syscall name="chown" number="5090"/> + <syscall name="fchown" number="5091"/> + <syscall name="lchown" number="5092"/> + <syscall name="umask" number="5093"/> + <syscall name="gettimeofday" number="5094"/> + <syscall name="getrlimit" number="5095"/> + <syscall name="getrusage" number="5096"/> + <syscall name="sysinfo" number="5097"/> + <syscall name="times" number="5098"/> + <syscall name="ptrace" number="5099"/> + <syscall name="getuid" number="5100"/> + <syscall name="syslog" number="5101"/> + <syscall name="getgid" number="5102"/> + <syscall name="setuid" number="5103"/> + <syscall name="setgid" number="5104"/> + <syscall name="geteuid" number="5105"/> + <syscall name="getegid" number="5106"/> + <syscall name="setpgid" number="5107"/> + <syscall name="getppid" number="5108"/> + <syscall name="getpgrp" number="5109"/> + <syscall name="setsid" number="5110"/> + <syscall name="setreuid" number="5111"/> + <syscall name="setregid" number="5112"/> + <syscall name="getgroups" number="5113"/> + <syscall name="setgroups" number="5114"/> + <syscall name="setresuid" number="5115"/> + <syscall name="getresuid" number="5116"/> + <syscall name="setresgid" number="5117"/> + <syscall name="getresgid" number="5118"/> + <syscall name="getpgid" number="5119"/> + <syscall name="setfsuid" number="5120"/> + <syscall name="setfsgid" number="5121"/> + <syscall name="getsid" number="5122"/> + <syscall name="capget" number="5123"/> + <syscall name="capset" number="5124"/> + <syscall name="rt_sigpending" number="5125"/> + <syscall name="rt_sigtimedwait" number="5126"/> + <syscall name="rt_sigqueueinfo" number="5127"/> + <syscall name="rt_sigsuspend" number="5128"/> + <syscall name="sigaltstack" number="5129"/> + <syscall name="utime" number="5130"/> + <syscall name="mknod" number="5131"/> + <syscall name="personality" number="5132"/> + <syscall name="ustat" number="5133"/> + <syscall name="statfs" number="5134"/> + <syscall name="fstatfs" number="5135"/> + <syscall name="sysfs" number="5136"/> + <syscall name="getpriority" number="5137"/> + <syscall name="setpriority" number="5138"/> + <syscall name="sched_setparam" number="5139"/> + <syscall name="sched_getparam" number="5140"/> + <syscall name="sched_setscheduler" number="5141"/> + <syscall name="sched_getscheduler" number="5142"/> + <syscall name="sched_get_priority_max" number="5143"/> + <syscall name="sched_get_priority_min" number="5144"/> + <syscall name="sched_rr_get_interval" number="5145"/> + <syscall name="mlock" number="5146"/> + <syscall name="munlock" number="5147"/> + <syscall name="mlockall" number="5148"/> + <syscall name="munlockall" number="5149"/> + <syscall name="vhangup" number="5150"/> + <syscall name="pivot_root" number="5151"/> + <syscall name="_sysctl" number="5152"/> + <syscall name="prctl" number="5153"/> + <syscall name="adjtimex" number="5154"/> + <syscall name="setrlimit" number="5155"/> + <syscall name="chroot" number="5156"/> + <syscall name="sync" number="5157"/> + <syscall name="acct" number="5158"/> + <syscall name="settimeofday" number="5159"/> + <syscall name="mount" number="5160"/> + <syscall name="umount2" number="5161"/> + <syscall name="swapon" number="5162"/> + <syscall name="swapoff" number="5163"/> + <syscall name="reboot" number="5164"/> + <syscall name="sethostname" number="5165"/> + <syscall name="setdomainname" number="5166"/> + <syscall name="create_module" number="5167"/> + <syscall name="init_module" number="5168"/> + <syscall name="delete_module" number="5169"/> + <syscall name="get_kernel_syms" number="5170"/> + <syscall name="query_module" number="5171"/> + <syscall name="quotactl" number="5172"/> + <syscall name="nfsservctl" number="5173"/> + <syscall name="getpmsg" number="5174"/> + <syscall name="putpmsg" number="5175"/> + <syscall name="afs_syscall" number="5176"/> + <syscall name="gettid" number="5178"/> + <syscall name="readahead" number="5179"/> + <syscall name="setxattr" number="5180"/> + <syscall name="lsetxattr" number="5181"/> + <syscall name="fsetxattr" number="5182"/> + <syscall name="getxattr" number="5183"/> + <syscall name="lgetxattr" number="5184"/> + <syscall name="fgetxattr" number="5185"/> + <syscall name="listxattr" number="5186"/> + <syscall name="llistxattr" number="5187"/> + <syscall name="flistxattr" number="5188"/> + <syscall name="removexattr" number="5189"/> + <syscall name="lremovexattr" number="5190"/> + <syscall name="fremovexattr" number="5191"/> + <syscall name="tkill" number="5192"/> + <syscall name="futex" number="5194"/> + <syscall name="sched_setaffinity" number="5195"/> + <syscall name="sched_getaffinity" number="5196"/> + <syscall name="cacheflush" number="5197"/> + <syscall name="cachectl" number="5198"/> + <syscall name="sysmips" number="5199"/> + <syscall name="io_setup" number="5200"/> + <syscall name="io_destroy" number="5201"/> + <syscall name="io_getevents" number="5202"/> + <syscall name="io_submit" number="5203"/> + <syscall name="io_cancel" number="5204"/> + <syscall name="exit_group" number="5205"/> + <syscall name="lookup_dcookie" number="5206"/> + <syscall name="epoll_create" number="5207"/> + <syscall name="epoll_ctl" number="5208"/> + <syscall name="epoll_wait" number="5209"/> + <syscall name="remap_file_pages" number="5210"/> + <syscall name="rt_sigreturn" number="5211"/> + <syscall name="set_tid_address" number="5212"/> + <syscall name="restart_syscall" number="5213"/> + <syscall name="semtimedop" number="5214"/> + <syscall name="fadvise64" number="5215"/> + <syscall name="timer_create" number="5216"/> + <syscall name="timer_settime" number="5217"/> + <syscall name="timer_gettime" number="5218"/> + <syscall name="timer_getoverrun" number="5219"/> + <syscall name="timer_delete" number="5220"/> + <syscall name="clock_settime" number="5221"/> + <syscall name="clock_gettime" number="5222"/> + <syscall name="clock_getres" number="5223"/> + <syscall name="clock_nanosleep" number="5224"/> + <syscall name="tgkill" number="5225"/> + <syscall name="utimes" number="5226"/> + <syscall name="mbind" number="5227"/> + <syscall name="get_mempolicy" number="5228"/> + <syscall name="set_mempolicy" number="5229"/> + <syscall name="mq_open" number="5230"/> + <syscall name="mq_unlink" number="5231"/> + <syscall name="mq_timedsend" number="5232"/> + <syscall name="mq_timedreceive" number="5233"/> + <syscall name="mq_notify" number="5234"/> + <syscall name="mq_getsetattr" number="5235"/> + <syscall name="vserver" number="5236"/> + <syscall name="waitid" number="5237"/> + <syscall name="add_key" number="5239"/> + <syscall name="request_key" number="5240"/> + <syscall name="keyctl" number="5241"/> + <syscall name="set_thread_area" number="5242"/> + <syscall name="inotify_init" number="5243"/> + <syscall name="inotify_add_watch" number="5244"/> + <syscall name="inotify_rm_watch" number="5245"/> + <syscall name="migrate_pages" number="5246"/> + <syscall name="openat" number="5247"/> + <syscall name="mkdirat" number="5248"/> + <syscall name="mknodat" number="5249"/> + <syscall name="fchownat" number="5250"/> + <syscall name="futimesat" number="5251"/> + <syscall name="newfstatat" number="5252"/> + <syscall name="unlinkat" number="5253"/> + <syscall name="renameat" number="5254"/> + <syscall name="linkat" number="5255"/> + <syscall name="symlinkat" number="5256"/> + <syscall name="readlinkat" number="5257"/> + <syscall name="fchmodat" number="5258"/> + <syscall name="faccessat" number="5259"/> + <syscall name="pselect6" number="5260"/> + <syscall name="ppoll" number="5261"/> + <syscall name="unshare" number="5262"/> + <syscall name="splice" number="5263"/> + <syscall name="sync_file_range" number="5264"/> + <syscall name="tee" number="5265"/> + <syscall name="vmsplice" number="5266"/> + <syscall name="move_pages" number="5267"/> + <syscall name="set_robust_list" number="5268"/> + <syscall name="get_robust_list" number="5269"/> + <syscall name="kexec_load" number="5270"/> + <syscall name="getcpu" number="5271"/> + <syscall name="epoll_pwait" number="5272"/> + <syscall name="ioprio_set" number="5273"/> + <syscall name="ioprio_get" number="5274"/> + <syscall name="utimensat" number="5275"/> + <syscall name="signalfd" number="5276"/> + <syscall name="timerfd" number="5277"/> + <syscall name="eventfd" number="5278"/> + <syscall name="fallocate" number="5279"/> + <syscall name="timerfd_create" number="5280"/> + <syscall name="timerfd_gettime" number="5281"/> + <syscall name="timerfd_settime" number="5282"/> + <syscall name="signalfd4" number="5283"/> + <syscall name="eventfd2" number="5284"/> + <syscall name="epoll_create1" number="5285"/> + <syscall name="dup3" number="5286"/> + <syscall name="pipe2" number="5287"/> + <syscall name="inotify_init1" number="5288"/> + <syscall name="preadv" number="5289"/> + <syscall name="pwritev" number="5290"/> + <syscall name="rt_tgsigqueueinfo" number="5291"/> + <syscall name="perf_event_open" number="5292"/> + <syscall name="accept4" number="5293"/> + <syscall name="recvmmsg" number="5294"/> + <syscall name="fanotify_init" number="5295"/> + <syscall name="fanotify_mark" number="5296"/> + <syscall name="prlimit64" number="5297"/> +</syscalls_info> diff --git a/share/gdb/syscalls/mips-o32-linux.xml b/share/gdb/syscalls/mips-o32-linux.xml new file mode 100644 index 0000000..2b11247 --- /dev/null +++ b/share/gdb/syscalls/mips-o32-linux.xml @@ -0,0 +1,347 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2011-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/mips/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="syscall" number="4000"/> + <syscall name="exit" number="4001"/> + <syscall name="fork" number="4002"/> + <syscall name="read" number="4003"/> + <syscall name="write" number="4004"/> + <syscall name="open" number="4005"/> + <syscall name="close" number="4006"/> + <syscall name="waitpid" number="4007"/> + <syscall name="creat" number="4008"/> + <syscall name="link" number="4009"/> + <syscall name="unlink" number="4010"/> + <syscall name="execve" number="4011"/> + <syscall name="chdir" number="4012"/> + <syscall name="time" number="4013"/> + <syscall name="mknod" number="4014"/> + <syscall name="chmod" number="4015"/> + <syscall name="lchown" number="4016"/> + <syscall name="break" number="4017"/> + <syscall name="lseek" number="4019"/> + <syscall name="getpid" number="4020"/> + <syscall name="mount" number="4021"/> + <syscall name="umount" number="4022"/> + <syscall name="setuid" number="4023"/> + <syscall name="getuid" number="4024"/> + <syscall name="stime" number="4025"/> + <syscall name="ptrace" number="4026"/> + <syscall name="alarm" number="4027"/> + <syscall name="pause" number="4029"/> + <syscall name="utime" number="4030"/> + <syscall name="stty" number="4031"/> + <syscall name="gtty" number="4032"/> + <syscall name="access" number="4033"/> + <syscall name="nice" number="4034"/> + <syscall name="ftime" number="4035"/> + <syscall name="sync" number="4036"/> + <syscall name="kill" number="4037"/> + <syscall name="rename" number="4038"/> + <syscall name="mkdir" number="4039"/> + <syscall name="rmdir" number="4040"/> + <syscall name="dup" number="4041"/> + <syscall name="pipe" number="4042"/> + <syscall name="times" number="4043"/> + <syscall name="prof" number="4044"/> + <syscall name="brk" number="4045"/> + <syscall name="setgid" number="4046"/> + <syscall name="getgid" number="4047"/> + <syscall name="signal" number="4048"/> + <syscall name="geteuid" number="4049"/> + <syscall name="getegid" number="4050"/> + <syscall name="acct" number="4051"/> + <syscall name="umount2" number="4052"/> + <syscall name="lock" number="4053"/> + <syscall name="ioctl" number="4054"/> + <syscall name="fcntl" number="4055"/> + <syscall name="mpx" number="4056"/> + <syscall name="setpgid" number="4057"/> + <syscall name="ulimit" number="4058"/> + <syscall name="umask" number="4060"/> + <syscall name="chroot" number="4061"/> + <syscall name="ustat" number="4062"/> + <syscall name="dup2" number="4063"/> + <syscall name="getppid" number="4064"/> + <syscall name="getpgrp" number="4065"/> + <syscall name="setsid" number="4066"/> + <syscall name="sigaction" number="4067"/> + <syscall name="sgetmask" number="4068"/> + <syscall name="ssetmask" number="4069"/> + <syscall name="setreuid" number="4070"/> + <syscall name="setregid" number="4071"/> + <syscall name="sigsuspend" number="4072"/> + <syscall name="sigpending" number="4073"/> + <syscall name="sethostname" number="4074"/> + <syscall name="setrlimit" number="4075"/> + <syscall name="getrlimit" number="4076"/> + <syscall name="getrusage" number="4077"/> + <syscall name="gettimeofday" number="4078"/> + <syscall name="settimeofday" number="4079"/> + <syscall name="getgroups" number="4080"/> + <syscall name="setgroups" number="4081"/> + <syscall name="symlink" number="4083"/> + <syscall name="readlink" number="4085"/> + <syscall name="uselib" number="4086"/> + <syscall name="swapon" number="4087"/> + <syscall name="reboot" number="4088"/> + <syscall name="readdir" number="4089"/> + <syscall name="mmap" number="4090"/> + <syscall name="munmap" number="4091"/> + <syscall name="truncate" number="4092"/> + <syscall name="ftruncate" number="4093"/> + <syscall name="fchmod" number="4094"/> + <syscall name="fchown" number="4095"/> + <syscall name="getpriority" number="4096"/> + <syscall name="setpriority" number="4097"/> + <syscall name="profil" number="4098"/> + <syscall name="statfs" number="4099"/> + <syscall name="fstatfs" number="4100"/> + <syscall name="ioperm" number="4101"/> + <syscall name="socketcall" number="4102"/> + <syscall name="syslog" number="4103"/> + <syscall name="setitimer" number="4104"/> + <syscall name="getitimer" number="4105"/> + <syscall name="stat" number="4106"/> + <syscall name="lstat" number="4107"/> + <syscall name="fstat" number="4108"/> + <syscall name="iopl" number="4110"/> + <syscall name="vhangup" number="4111"/> + <syscall name="idle" number="4112"/> + <syscall name="vm86" number="4113"/> + <syscall name="wait4" number="4114"/> + <syscall name="swapoff" number="4115"/> + <syscall name="sysinfo" number="4116"/> + <syscall name="ipc" number="4117"/> + <syscall name="fsync" number="4118"/> + <syscall name="sigreturn" number="4119"/> + <syscall name="clone" number="4120"/> + <syscall name="setdomainname" number="4121"/> + <syscall name="uname" number="4122"/> + <syscall name="modify_ldt" number="4123"/> + <syscall name="adjtimex" number="4124"/> + <syscall name="mprotect" number="4125"/> + <syscall name="sigprocmask" number="4126"/> + <syscall name="create_module" number="4127"/> + <syscall name="init_module" number="4128"/> + <syscall name="delete_module" number="4129"/> + <syscall name="get_kernel_syms" number="4130"/> + <syscall name="quotactl" number="4131"/> + <syscall name="getpgid" number="4132"/> + <syscall name="fchdir" number="4133"/> + <syscall name="bdflush" number="4134"/> + <syscall name="sysfs" number="4135"/> + <syscall name="personality" number="4136"/> + <syscall name="afs_syscall" number="4137"/> + <syscall name="setfsuid" number="4138"/> + <syscall name="setfsgid" number="4139"/> + <syscall name="_llseek" number="4140"/> + <syscall name="getdents" number="4141"/> + <syscall name="_newselect" number="4142"/> + <syscall name="flock" number="4143"/> + <syscall name="msync" number="4144"/> + <syscall name="readv" number="4145"/> + <syscall name="writev" number="4146"/> + <syscall name="cacheflush" number="4147"/> + <syscall name="cachectl" number="4148"/> + <syscall name="sysmips" number="4149"/> + <syscall name="getsid" number="4151"/> + <syscall name="fdatasync" number="4152"/> + <syscall name="_sysctl" number="4153"/> + <syscall name="mlock" number="4154"/> + <syscall name="munlock" number="4155"/> + <syscall name="mlockall" number="4156"/> + <syscall name="munlockall" number="4157"/> + <syscall name="sched_setparam" number="4158"/> + <syscall name="sched_getparam" number="4159"/> + <syscall name="sched_setscheduler" number="4160"/> + <syscall name="sched_getscheduler" number="4161"/> + <syscall name="sched_yield" number="4162"/> + <syscall name="sched_get_priority_max" number="4163"/> + <syscall name="sched_get_priority_min" number="4164"/> + <syscall name="sched_rr_get_interval" number="4165"/> + <syscall name="nanosleep" number="4166"/> + <syscall name="mremap" number="4167"/> + <syscall name="accept" number="4168"/> + <syscall name="bind" number="4169"/> + <syscall name="connect" number="4170"/> + <syscall name="getpeername" number="4171"/> + <syscall name="getsockname" number="4172"/> + <syscall name="getsockopt" number="4173"/> + <syscall name="listen" number="4174"/> + <syscall name="recv" number="4175"/> + <syscall name="recvfrom" number="4176"/> + <syscall name="recvmsg" number="4177"/> + <syscall name="send" number="4178"/> + <syscall name="sendmsg" number="4179"/> + <syscall name="sendto" number="4180"/> + <syscall name="setsockopt" number="4181"/> + <syscall name="shutdown" number="4182"/> + <syscall name="socket" number="4183"/> + <syscall name="socketpair" number="4184"/> + <syscall name="setresuid" number="4185"/> + <syscall name="getresuid" number="4186"/> + <syscall name="query_module" number="4187"/> + <syscall name="poll" number="4188"/> + <syscall name="nfsservctl" number="4189"/> + <syscall name="setresgid" number="4190"/> + <syscall name="getresgid" number="4191"/> + <syscall name="prctl" number="4192"/> + <syscall name="rt_sigreturn" number="4193"/> + <syscall name="rt_sigaction" number="4194"/> + <syscall name="rt_sigprocmask" number="4195"/> + <syscall name="rt_sigpending" number="4196"/> + <syscall name="rt_sigtimedwait" number="4197"/> + <syscall name="rt_sigqueueinfo" number="4198"/> + <syscall name="rt_sigsuspend" number="4199"/> + <syscall name="pread64" number="4200"/> + <syscall name="pwrite64" number="4201"/> + <syscall name="chown" number="4202"/> + <syscall name="getcwd" number="4203"/> + <syscall name="capget" number="4204"/> + <syscall name="capset" number="4205"/> + <syscall name="sigaltstack" number="4206"/> + <syscall name="sendfile" number="4207"/> + <syscall name="getpmsg" number="4208"/> + <syscall name="putpmsg" number="4209"/> + <syscall name="mmap2" number="4210"/> + <syscall name="truncate64" number="4211"/> + <syscall name="ftruncate64" number="4212"/> + <syscall name="stat64" number="4213"/> + <syscall name="lstat64" number="4214"/> + <syscall name="fstat64" number="4215"/> + <syscall name="pivot_root" number="4216"/> + <syscall name="mincore" number="4217"/> + <syscall name="madvise" number="4218"/> + <syscall name="getdents64" number="4219"/> + <syscall name="fcntl64" number="4220"/> + <syscall name="gettid" number="4222"/> + <syscall name="readahead" number="4223"/> + <syscall name="setxattr" number="4224"/> + <syscall name="lsetxattr" number="4225"/> + <syscall name="fsetxattr" number="4226"/> + <syscall name="getxattr" number="4227"/> + <syscall name="lgetxattr" number="4228"/> + <syscall name="fgetxattr" number="4229"/> + <syscall name="listxattr" number="4230"/> + <syscall name="llistxattr" number="4231"/> + <syscall name="flistxattr" number="4232"/> + <syscall name="removexattr" number="4233"/> + <syscall name="lremovexattr" number="4234"/> + <syscall name="fremovexattr" number="4235"/> + <syscall name="tkill" number="4236"/> + <syscall name="sendfile64" number="4237"/> + <syscall name="futex" number="4238"/> + <syscall name="sched_setaffinity" number="4239"/> + <syscall name="sched_getaffinity" number="4240"/> + <syscall name="io_setup" number="4241"/> + <syscall name="io_destroy" number="4242"/> + <syscall name="io_getevents" number="4243"/> + <syscall name="io_submit" number="4244"/> + <syscall name="io_cancel" number="4245"/> + <syscall name="exit_group" number="4246"/> + <syscall name="lookup_dcookie" number="4247"/> + <syscall name="epoll_create" number="4248"/> + <syscall name="epoll_ctl" number="4249"/> + <syscall name="epoll_wait" number="4250"/> + <syscall name="remap_file_pages" number="4251"/> + <syscall name="set_tid_address" number="4252"/> + <syscall name="restart_syscall" number="4253"/> + <syscall name="fadvise64" number="4254"/> + <syscall name="statfs64" number="4255"/> + <syscall name="fstatfs64" number="4256"/> + <syscall name="timer_create" number="4257"/> + <syscall name="timer_settime" number="4258"/> + <syscall name="timer_gettime" number="4259"/> + <syscall name="timer_getoverrun" number="4260"/> + <syscall name="timer_delete" number="4261"/> + <syscall name="clock_settime" number="4262"/> + <syscall name="clock_gettime" number="4263"/> + <syscall name="clock_getres" number="4264"/> + <syscall name="clock_nanosleep" number="4265"/> + <syscall name="tgkill" number="4266"/> + <syscall name="utimes" number="4267"/> + <syscall name="mbind" number="4268"/> + <syscall name="get_mempolicy" number="4269"/> + <syscall name="set_mempolicy" number="4270"/> + <syscall name="mq_open" number="4271"/> + <syscall name="mq_unlink" number="4272"/> + <syscall name="mq_timedsend" number="4273"/> + <syscall name="mq_timedreceive" number="4274"/> + <syscall name="mq_notify" number="4275"/> + <syscall name="mq_getsetattr" number="4276"/> + <syscall name="vserver" number="4277"/> + <syscall name="waitid" number="4278"/> + <syscall name="add_key" number="4280"/> + <syscall name="request_key" number="4281"/> + <syscall name="keyctl" number="4282"/> + <syscall name="set_thread_area" number="4283"/> + <syscall name="inotify_init" number="4284"/> + <syscall name="inotify_add_watch" number="4285"/> + <syscall name="inotify_rm_watch" number="4286"/> + <syscall name="migrate_pages" number="4287"/> + <syscall name="openat" number="4288"/> + <syscall name="mkdirat" number="4289"/> + <syscall name="mknodat" number="4290"/> + <syscall name="fchownat" number="4291"/> + <syscall name="futimesat" number="4292"/> + <syscall name="fstatat64" number="4293"/> + <syscall name="unlinkat" number="4294"/> + <syscall name="renameat" number="4295"/> + <syscall name="linkat" number="4296"/> + <syscall name="symlinkat" number="4297"/> + <syscall name="readlinkat" number="4298"/> + <syscall name="fchmodat" number="4299"/> + <syscall name="faccessat" number="4300"/> + <syscall name="pselect6" number="4301"/> + <syscall name="ppoll" number="4302"/> + <syscall name="unshare" number="4303"/> + <syscall name="splice" number="4304"/> + <syscall name="sync_file_range" number="4305"/> + <syscall name="tee" number="4306"/> + <syscall name="vmsplice" number="4307"/> + <syscall name="move_pages" number="4308"/> + <syscall name="set_robust_list" number="4309"/> + <syscall name="get_robust_list" number="4310"/> + <syscall name="kexec_load" number="4311"/> + <syscall name="getcpu" number="4312"/> + <syscall name="epoll_pwait" number="4313"/> + <syscall name="ioprio_set" number="4314"/> + <syscall name="ioprio_get" number="4315"/> + <syscall name="utimensat" number="4316"/> + <syscall name="signalfd" number="4317"/> + <syscall name="timerfd" number="4318"/> + <syscall name="eventfd" number="4319"/> + <syscall name="fallocate" number="4320"/> + <syscall name="timerfd_create" number="4321"/> + <syscall name="timerfd_gettime" number="4322"/> + <syscall name="timerfd_settime" number="4323"/> + <syscall name="signalfd4" number="4324"/> + <syscall name="eventfd2" number="4325"/> + <syscall name="epoll_create1" number="4326"/> + <syscall name="dup3" number="4327"/> + <syscall name="pipe2" number="4328"/> + <syscall name="inotify_init1" number="4329"/> + <syscall name="preadv" number="4330"/> + <syscall name="pwritev" number="4331"/> + <syscall name="rt_tgsigqueueinfo" number="4332"/> + <syscall name="perf_event_open" number="4333"/> + <syscall name="accept4" number="4334"/> + <syscall name="recvmmsg" number="4335"/> + <syscall name="fanotify_init" number="4336"/> + <syscall name="fanotify_mark" number="4337"/> + <syscall name="prlimit64" number="4338"/> +</syscalls_info> diff --git a/share/gdb/syscalls/ppc-linux.xml b/share/gdb/syscalls/ppc-linux.xml new file mode 100644 index 0000000..dd4eba6 --- /dev/null +++ b/share/gdb/syscalls/ppc-linux.xml @@ -0,0 +1,310 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/powerpc/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="restart_syscall" number="0"/> + <syscall name="exit" number="1"/> + <syscall name="fork" number="2"/> + <syscall name="read" number="3"/> + <syscall name="write" number="4"/> + <syscall name="open" number="5"/> + <syscall name="close" number="6"/> + <syscall name="waitpid" number="7"/> + <syscall name="creat" number="8"/> + <syscall name="link" number="9"/> + <syscall name="unlink" number="10"/> + <syscall name="execve" number="11"/> + <syscall name="chdir" number="12"/> + <syscall name="time" number="13"/> + <syscall name="mknod" number="14"/> + <syscall name="chmod" number="15"/> + <syscall name="lchown" number="16"/> + <syscall name="break" number="17"/> + <syscall name="oldstat" number="18"/> + <syscall name="lseek" number="19"/> + <syscall name="getpid" number="20"/> + <syscall name="mount" number="21"/> + <syscall name="umount" number="22"/> + <syscall name="setuid" number="23"/> + <syscall name="getuid" number="24"/> + <syscall name="stime" number="25"/> + <syscall name="ptrace" number="26"/> + <syscall name="alarm" number="27"/> + <syscall name="oldfstat" number="28"/> + <syscall name="pause" number="29"/> + <syscall name="utime" number="30"/> + <syscall name="stty" number="31"/> + <syscall name="gtty" number="32"/> + <syscall name="access" number="33"/> + <syscall name="nice" number="34"/> + <syscall name="ftime" number="35"/> + <syscall name="sync" number="36"/> + <syscall name="kill" number="37"/> + <syscall name="rename" number="38"/> + <syscall name="mkdir" number="39"/> + <syscall name="rmdir" number="40"/> + <syscall name="dup" number="41"/> + <syscall name="pipe" number="42"/> + <syscall name="times" number="43"/> + <syscall name="prof" number="44"/> + <syscall name="brk" number="45"/> + <syscall name="setgid" number="46"/> + <syscall name="getgid" number="47"/> + <syscall name="signal" number="48"/> + <syscall name="geteuid" number="49"/> + <syscall name="getegid" number="50"/> + <syscall name="acct" number="51"/> + <syscall name="umount2" number="52"/> + <syscall name="lock" number="53"/> + <syscall name="ioctl" number="54"/> + <syscall name="fcntl" number="55"/> + <syscall name="mpx" number="56"/> + <syscall name="setpgid" number="57"/> + <syscall name="ulimit" number="58"/> + <syscall name="oldolduname" number="59"/> + <syscall name="umask" number="60"/> + <syscall name="chroot" number="61"/> + <syscall name="ustat" number="62"/> + <syscall name="dup2" number="63"/> + <syscall name="getppid" number="64"/> + <syscall name="getpgrp" number="65"/> + <syscall name="setsid" number="66"/> + <syscall name="sigaction" number="67"/> + <syscall name="sgetmask" number="68"/> + <syscall name="ssetmask" number="69"/> + <syscall name="setreuid" number="70"/> + <syscall name="setregid" number="71"/> + <syscall name="sigsuspend" number="72"/> + <syscall name="sigpending" number="73"/> + <syscall name="sethostname" number="74"/> + <syscall name="setrlimit" number="75"/> + <syscall name="getrlimit" number="76"/> + <syscall name="getrusage" number="77"/> + <syscall name="gettimeofday" number="78"/> + <syscall name="settimeofday" number="79"/> + <syscall name="getgroups" number="80"/> + <syscall name="setgroups" number="81"/> + <syscall name="select" number="82"/> + <syscall name="symlink" number="83"/> + <syscall name="oldlstat" number="84"/> + <syscall name="readlink" number="85"/> + <syscall name="uselib" number="86"/> + <syscall name="swapon" number="87"/> + <syscall name="reboot" number="88"/> + <syscall name="readdir" number="89"/> + <syscall name="mmap" number="90"/> + <syscall name="munmap" number="91"/> + <syscall name="truncate" number="92"/> + <syscall name="ftruncate" number="93"/> + <syscall name="fchmod" number="94"/> + <syscall name="fchown" number="95"/> + <syscall name="getpriority" number="96"/> + <syscall name="setpriority" number="97"/> + <syscall name="profil" number="98"/> + <syscall name="statfs" number="99"/> + <syscall name="fstatfs" number="100"/> + <syscall name="ioperm" number="101"/> + <syscall name="socketcall" number="102"/> + <syscall name="syslog" number="103"/> + <syscall name="setitimer" number="104"/> + <syscall name="getitimer" number="105"/> + <syscall name="stat" number="106"/> + <syscall name="lstat" number="107"/> + <syscall name="fstat" number="108"/> + <syscall name="olduname" number="109"/> + <syscall name="iopl" number="110"/> + <syscall name="vhangup" number="111"/> + <syscall name="idle" number="112"/> + <syscall name="vm86" number="113"/> + <syscall name="wait4" number="114"/> + <syscall name="swapoff" number="115"/> + <syscall name="sysinfo" number="116"/> + <syscall name="ipc" number="117"/> + <syscall name="fsync" number="118"/> + <syscall name="sigreturn" number="119"/> + <syscall name="clone" number="120"/> + <syscall name="setdomainname" number="121"/> + <syscall name="uname" number="122"/> + <syscall name="modify_ldt" number="123"/> + <syscall name="adjtimex" number="124"/> + <syscall name="mprotect" number="125"/> + <syscall name="sigprocmask" number="126"/> + <syscall name="create_module" number="127"/> + <syscall name="init_module" number="128"/> + <syscall name="delete_module" number="129"/> + <syscall name="get_kernel_syms" number="130"/> + <syscall name="quotactl" number="131"/> + <syscall name="getpgid" number="132"/> + <syscall name="fchdir" number="133"/> + <syscall name="bdflush" number="134"/> + <syscall name="sysfs" number="135"/> + <syscall name="personality" number="136"/> + <syscall name="afs_syscall" number="137"/> + <syscall name="setfsuid" number="138"/> + <syscall name="setfsgid" number="139"/> + <syscall name="_llseek" number="140"/> + <syscall name="getdents" number="141"/> + <syscall name="_newselect" number="142"/> + <syscall name="flock" number="143"/> + <syscall name="msync" number="144"/> + <syscall name="readv" number="145"/> + <syscall name="writev" number="146"/> + <syscall name="getsid" number="147"/> + <syscall name="fdatasync" number="148"/> + <syscall name="_sysctl" number="149"/> + <syscall name="mlock" number="150"/> + <syscall name="munlock" number="151"/> + <syscall name="mlockall" number="152"/> + <syscall name="munlockall" number="153"/> + <syscall name="sched_setparam" number="154"/> + <syscall name="sched_getparam" number="155"/> + <syscall name="sched_setscheduler" number="156"/> + <syscall name="sched_getscheduler" number="157"/> + <syscall name="sched_yield" number="158"/> + <syscall name="sched_get_priority_max" number="159"/> + <syscall name="sched_get_priority_min" number="160"/> + <syscall name="sched_rr_get_interval" number="161"/> + <syscall name="nanosleep" number="162"/> + <syscall name="mremap" number="163"/> + <syscall name="setresuid" number="164"/> + <syscall name="getresuid" number="165"/> + <syscall name="query_module" number="166"/> + <syscall name="poll" number="167"/> + <syscall name="nfsservctl" number="168"/> + <syscall name="setresgid" number="169"/> + <syscall name="getresgid" number="170"/> + <syscall name="prctl" number="171"/> + <syscall name="rt_sigreturn" number="172"/> + <syscall name="rt_sigaction" number="173"/> + <syscall name="rt_sigprocmask" number="174"/> + <syscall name="rt_sigpending" number="175"/> + <syscall name="rt_sigtimedwait" number="176"/> + <syscall name="rt_sigqueueinfo" number="177"/> + <syscall name="rt_sigsuspend" number="178"/> + <syscall name="pread64" number="179"/> + <syscall name="pwrite64" number="180"/> + <syscall name="chown" number="181"/> + <syscall name="getcwd" number="182"/> + <syscall name="capget" number="183"/> + <syscall name="capset" number="184"/> + <syscall name="sigaltstack" number="185"/> + <syscall name="sendfile" number="186"/> + <syscall name="getpmsg" number="187"/> + <syscall name="putpmsg" number="188"/> + <syscall name="vfork" number="189"/> + <syscall name="ugetrlimit" number="190"/> + <syscall name="readahead" number="191"/> + <syscall name="mmap2" number="192"/> + <syscall name="truncate64" number="193"/> + <syscall name="ftruncate64" number="194"/> + <syscall name="stat64" number="195"/> + <syscall name="lstat64" number="196"/> + <syscall name="fstat64" number="197"/> + <syscall name="pciconfig_read" number="198"/> + <syscall name="pciconfig_write" number="199"/> + <syscall name="pciconfig_iobase" number="200"/> + <syscall name="multiplexer" number="201"/> + <syscall name="getdents64" number="202"/> + <syscall name="pivot_root" number="203"/> + <syscall name="fcntl64" number="204"/> + <syscall name="madvise" number="205"/> + <syscall name="mincore" number="206"/> + <syscall name="gettid" number="207"/> + <syscall name="tkill" number="208"/> + <syscall name="setxattr" number="209"/> + <syscall name="lsetxattr" number="210"/> + <syscall name="fsetxattr" number="211"/> + <syscall name="getxattr" number="212"/> + <syscall name="lgetxattr" number="213"/> + <syscall name="fgetxattr" number="214"/> + <syscall name="listxattr" number="215"/> + <syscall name="llistxattr" number="216"/> + <syscall name="flistxattr" number="217"/> + <syscall name="removexattr" number="218"/> + <syscall name="lremovexattr" number="219"/> + <syscall name="fremovexattr" number="220"/> + <syscall name="futex" number="221"/> + <syscall name="sched_setaffinity" number="222"/> + <syscall name="sched_getaffinity" number="223"/> + <syscall name="tuxcall" number="225"/> + <syscall name="sendfile64" number="226"/> + <syscall name="io_setup" number="227"/> + <syscall name="io_destroy" number="228"/> + <syscall name="io_getevents" number="229"/> + <syscall name="io_submit" number="230"/> + <syscall name="io_cancel" number="231"/> + <syscall name="set_tid_address" number="232"/> + <syscall name="fadvise64" number="233"/> + <syscall name="exit_group" number="234"/> + <syscall name="lookup_dcookie" number="235"/> + <syscall name="epoll_create" number="236"/> + <syscall name="epoll_ctl" number="237"/> + <syscall name="epoll_wait" number="238"/> + <syscall name="remap_file_pages" number="239"/> + <syscall name="timer_create" number="240"/> + <syscall name="timer_settime" number="241"/> + <syscall name="timer_gettime" number="242"/> + <syscall name="timer_getoverrun" number="243"/> + <syscall name="timer_delete" number="244"/> + <syscall name="clock_settime" number="245"/> + <syscall name="clock_gettime" number="246"/> + <syscall name="clock_getres" number="247"/> + <syscall name="clock_nanosleep" number="248"/> + <syscall name="swapcontext" number="249"/> + <syscall name="tgkill" number="250"/> + <syscall name="utimes" number="251"/> + <syscall name="statfs64" number="252"/> + <syscall name="fstatfs64" number="253"/> + <syscall name="fadvise64_64" number="254"/> + <syscall name="rtas" number="255"/> + <syscall name="sys_debug_setcontext" number="256"/> + <syscall name="mbind" number="259"/> + <syscall name="get_mempolicy" number="260"/> + <syscall name="set_mempolicy" number="261"/> + <syscall name="mq_open" number="262"/> + <syscall name="mq_unlink" number="263"/> + <syscall name="mq_timedsend" number="264"/> + <syscall name="mq_timedreceive" number="265"/> + <syscall name="mq_notify" number="266"/> + <syscall name="mq_getsetattr" number="267"/> + <syscall name="kexec_load" number="268"/> + <syscall name="add_key" number="269"/> + <syscall name="request_key" number="270"/> + <syscall name="keyctl" number="271"/> + <syscall name="waitid" number="272"/> + <syscall name="ioprio_set" number="273"/> + <syscall name="ioprio_get" number="274"/> + <syscall name="inotify_init" number="275"/> + <syscall name="inotify_add_watch" number="276"/> + <syscall name="inotify_rm_watch" number="277"/> + <syscall name="spu_run" number="278"/> + <syscall name="spu_create" number="279"/> + <syscall name="pselect6" number="280"/> + <syscall name="ppoll" number="281"/> + <syscall name="unshare" number="282"/> + <syscall name="openat" number="286"/> + <syscall name="mkdirat" number="287"/> + <syscall name="mknodat" number="288"/> + <syscall name="fchownat" number="289"/> + <syscall name="futimesat" number="290"/> + <syscall name="fstatat64" number="291"/> + <syscall name="unlinkat" number="292"/> + <syscall name="renameat" number="293"/> + <syscall name="linkat" number="294"/> + <syscall name="symlinkat" number="295"/> + <syscall name="readlinkat" number="296"/> + <syscall name="fchmodat" number="297"/> + <syscall name="faccessat" number="298"/> +</syscalls_info> diff --git a/share/gdb/syscalls/ppc64-linux.xml b/share/gdb/syscalls/ppc64-linux.xml new file mode 100644 index 0000000..ad56db1 --- /dev/null +++ b/share/gdb/syscalls/ppc64-linux.xml @@ -0,0 +1,295 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2009-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/powerpc/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="restart_syscall" number="0"/> + <syscall name="exit" number="1"/> + <syscall name="fork" number="2"/> + <syscall name="read" number="3"/> + <syscall name="write" number="4"/> + <syscall name="open" number="5"/> + <syscall name="close" number="6"/> + <syscall name="waitpid" number="7"/> + <syscall name="creat" number="8"/> + <syscall name="link" number="9"/> + <syscall name="unlink" number="10"/> + <syscall name="execve" number="11"/> + <syscall name="chdir" number="12"/> + <syscall name="time" number="13"/> + <syscall name="mknod" number="14"/> + <syscall name="chmod" number="15"/> + <syscall name="lchown" number="16"/> + <syscall name="break" number="17"/> + <syscall name="oldstat" number="18"/> + <syscall name="lseek" number="19"/> + <syscall name="getpid" number="20"/> + <syscall name="mount" number="21"/> + <syscall name="umount" number="22"/> + <syscall name="setuid" number="23"/> + <syscall name="getuid" number="24"/> + <syscall name="stime" number="25"/> + <syscall name="ptrace" number="26"/> + <syscall name="alarm" number="27"/> + <syscall name="oldfstat" number="28"/> + <syscall name="pause" number="29"/> + <syscall name="utime" number="30"/> + <syscall name="stty" number="31"/> + <syscall name="gtty" number="32"/> + <syscall name="access" number="33"/> + <syscall name="nice" number="34"/> + <syscall name="ftime" number="35"/> + <syscall name="sync" number="36"/> + <syscall name="kill" number="37"/> + <syscall name="rename" number="38"/> + <syscall name="mkdir" number="39"/> + <syscall name="rmdir" number="40"/> + <syscall name="dup" number="41"/> + <syscall name="pipe" number="42"/> + <syscall name="times" number="43"/> + <syscall name="prof" number="44"/> + <syscall name="brk" number="45"/> + <syscall name="setgid" number="46"/> + <syscall name="getgid" number="47"/> + <syscall name="signal" number="48"/> + <syscall name="geteuid" number="49"/> + <syscall name="getegid" number="50"/> + <syscall name="acct" number="51"/> + <syscall name="umount2" number="52"/> + <syscall name="lock" number="53"/> + <syscall name="ioctl" number="54"/> + <syscall name="fcntl" number="55"/> + <syscall name="mpx" number="56"/> + <syscall name="setpgid" number="57"/> + <syscall name="ulimit" number="58"/> + <syscall name="oldolduname" number="59"/> + <syscall name="umask" number="60"/> + <syscall name="chroot" number="61"/> + <syscall name="ustat" number="62"/> + <syscall name="dup2" number="63"/> + <syscall name="getppid" number="64"/> + <syscall name="getpgrp" number="65"/> + <syscall name="setsid" number="66"/> + <syscall name="sigaction" number="67"/> + <syscall name="sgetmask" number="68"/> + <syscall name="ssetmask" number="69"/> + <syscall name="setreuid" number="70"/> + <syscall name="setregid" number="71"/> + <syscall name="sigsuspend" number="72"/> + <syscall name="sigpending" number="73"/> + <syscall name="sethostname" number="74"/> + <syscall name="setrlimit" number="75"/> + <syscall name="getrlimit" number="76"/> + <syscall name="getrusage" number="77"/> + <syscall name="gettimeofday" number="78"/> + <syscall name="settimeofday" number="79"/> + <syscall name="getgroups" number="80"/> + <syscall name="setgroups" number="81"/> + <syscall name="select" number="82"/> + <syscall name="symlink" number="83"/> + <syscall name="oldlstat" number="84"/> + <syscall name="readlink" number="85"/> + <syscall name="uselib" number="86"/> + <syscall name="swapon" number="87"/> + <syscall name="reboot" number="88"/> + <syscall name="readdir" number="89"/> + <syscall name="mmap" number="90"/> + <syscall name="munmap" number="91"/> + <syscall name="truncate" number="92"/> + <syscall name="ftruncate" number="93"/> + <syscall name="fchmod" number="94"/> + <syscall name="fchown" number="95"/> + <syscall name="getpriority" number="96"/> + <syscall name="setpriority" number="97"/> + <syscall name="profil" number="98"/> + <syscall name="statfs" number="99"/> + <syscall name="fstatfs" number="100"/> + <syscall name="ioperm" number="101"/> + <syscall name="socketcall" number="102"/> + <syscall name="syslog" number="103"/> + <syscall name="setitimer" number="104"/> + <syscall name="getitimer" number="105"/> + <syscall name="stat" number="106"/> + <syscall name="lstat" number="107"/> + <syscall name="fstat" number="108"/> + <syscall name="olduname" number="109"/> + <syscall name="iopl" number="110"/> + <syscall name="vhangup" number="111"/> + <syscall name="idle" number="112"/> + <syscall name="vm86" number="113"/> + <syscall name="wait4" number="114"/> + <syscall name="swapoff" number="115"/> + <syscall name="sysinfo" number="116"/> + <syscall name="ipc" number="117"/> + <syscall name="fsync" number="118"/> + <syscall name="sigreturn" number="119"/> + <syscall name="clone" number="120"/> + <syscall name="setdomainname" number="121"/> + <syscall name="uname" number="122"/> + <syscall name="modify_ldt" number="123"/> + <syscall name="adjtimex" number="124"/> + <syscall name="mprotect" number="125"/> + <syscall name="sigprocmask" number="126"/> + <syscall name="create_module" number="127"/> + <syscall name="init_module" number="128"/> + <syscall name="delete_module" number="129"/> + <syscall name="get_kernel_syms" number="130"/> + <syscall name="quotactl" number="131"/> + <syscall name="getpgid" number="132"/> + <syscall name="fchdir" number="133"/> + <syscall name="bdflush" number="134"/> + <syscall name="sysfs" number="135"/> + <syscall name="personality" number="136"/> + <syscall name="afs_syscall" number="137"/> + <syscall name="setfsuid" number="138"/> + <syscall name="setfsgid" number="139"/> + <syscall name="_llseek" number="140"/> + <syscall name="getdents" number="141"/> + <syscall name="_newselect" number="142"/> + <syscall name="flock" number="143"/> + <syscall name="msync" number="144"/> + <syscall name="readv" number="145"/> + <syscall name="writev" number="146"/> + <syscall name="getsid" number="147"/> + <syscall name="fdatasync" number="148"/> + <syscall name="_sysctl" number="149"/> + <syscall name="mlock" number="150"/> + <syscall name="munlock" number="151"/> + <syscall name="mlockall" number="152"/> + <syscall name="munlockall" number="153"/> + <syscall name="sched_setparam" number="154"/> + <syscall name="sched_getparam" number="155"/> + <syscall name="sched_setscheduler" number="156"/> + <syscall name="sched_getscheduler" number="157"/> + <syscall name="sched_yield" number="158"/> + <syscall name="sched_get_priority_max" number="159"/> + <syscall name="sched_get_priority_min" number="160"/> + <syscall name="sched_rr_get_interval" number="161"/> + <syscall name="nanosleep" number="162"/> + <syscall name="mremap" number="163"/> + <syscall name="setresuid" number="164"/> + <syscall name="getresuid" number="165"/> + <syscall name="query_module" number="166"/> + <syscall name="poll" number="167"/> + <syscall name="nfsservctl" number="168"/> + <syscall name="setresgid" number="169"/> + <syscall name="getresgid" number="170"/> + <syscall name="prctl" number="171"/> + <syscall name="rt_sigreturn" number="172"/> + <syscall name="rt_sigaction" number="173"/> + <syscall name="rt_sigprocmask" number="174"/> + <syscall name="rt_sigpending" number="175"/> + <syscall name="rt_sigtimedwait" number="176"/> + <syscall name="rt_sigqueueinfo" number="177"/> + <syscall name="rt_sigsuspend" number="178"/> + <syscall name="pread64" number="179"/> + <syscall name="pwrite64" number="180"/> + <syscall name="chown" number="181"/> + <syscall name="getcwd" number="182"/> + <syscall name="capget" number="183"/> + <syscall name="capset" number="184"/> + <syscall name="sigaltstack" number="185"/> + <syscall name="sendfile" number="186"/> + <syscall name="getpmsg" number="187"/> + <syscall name="putpmsg" number="188"/> + <syscall name="vfork" number="189"/> + <syscall name="ugetrlimit" number="190"/> + <syscall name="readahead" number="191"/> + <syscall name="pciconfig_read" number="198"/> + <syscall name="pciconfig_write" number="199"/> + <syscall name="pciconfig_iobase" number="200"/> + <syscall name="multiplexer" number="201"/> + <syscall name="getdents64" number="202"/> + <syscall name="pivot_root" number="203"/> + <syscall name="madvise" number="205"/> + <syscall name="mincore" number="206"/> + <syscall name="gettid" number="207"/> + <syscall name="tkill" number="208"/> + <syscall name="setxattr" number="209"/> + <syscall name="lsetxattr" number="210"/> + <syscall name="fsetxattr" number="211"/> + <syscall name="getxattr" number="212"/> + <syscall name="lgetxattr" number="213"/> + <syscall name="fgetxattr" number="214"/> + <syscall name="listxattr" number="215"/> + <syscall name="llistxattr" number="216"/> + <syscall name="flistxattr" number="217"/> + <syscall name="removexattr" number="218"/> + <syscall name="lremovexattr" number="219"/> + <syscall name="fremovexattr" number="220"/> + <syscall name="futex" number="221"/> + <syscall name="sched_setaffinity" number="222"/> + <syscall name="sched_getaffinity" number="223"/> + <syscall name="tuxcall" number="225"/> + <syscall name="io_setup" number="227"/> + <syscall name="io_destroy" number="228"/> + <syscall name="io_getevents" number="229"/> + <syscall name="io_submit" number="230"/> + <syscall name="io_cancel" number="231"/> + <syscall name="set_tid_address" number="232"/> + <syscall name="fadvise64" number="233"/> + <syscall name="exit_group" number="234"/> + <syscall name="lookup_dcookie" number="235"/> + <syscall name="epoll_create" number="236"/> + <syscall name="epoll_ctl" number="237"/> + <syscall name="epoll_wait" number="238"/> + <syscall name="remap_file_pages" number="239"/> + <syscall name="timer_create" number="240"/> + <syscall name="timer_settime" number="241"/> + <syscall name="timer_gettime" number="242"/> + <syscall name="timer_getoverrun" number="243"/> + <syscall name="timer_delete" number="244"/> + <syscall name="clock_settime" number="245"/> + <syscall name="clock_gettime" number="246"/> + <syscall name="clock_getres" number="247"/> + <syscall name="clock_nanosleep" number="248"/> + <syscall name="swapcontext" number="249"/> + <syscall name="tgkill" number="250"/> + <syscall name="utimes" number="251"/> + <syscall name="statfs64" number="252"/> + <syscall name="fstatfs64" number="253"/> + <syscall name="rtas" number="255"/> + <syscall name="sys_debug_setcontext" number="256"/> + <syscall name="mbind" number="259"/> + <syscall name="get_mempolicy" number="260"/> + <syscall name="set_mempolicy" number="261"/> + <syscall name="mq_open" number="262"/> + <syscall name="mq_unlink" number="263"/> + <syscall name="mq_timedsend" number="264"/> + <syscall name="mq_timedreceive" number="265"/> + <syscall name="mq_notify" number="266"/> + <syscall name="mq_getsetattr" number="267"/> + <syscall name="kexec_load" number="268"/> + <syscall name="add_key" number="269"/> + <syscall name="request_key" number="270"/> + <syscall name="keyctl" number="271"/> + <syscall name="waitid" number="272"/> + <syscall name="ioprio_set" number="273"/> + <syscall name="ioprio_get" number="274"/> + <syscall name="inotify_init" number="275"/> + <syscall name="inotify_add_watch" number="276"/> + <syscall name="inotify_rm_watch" number="277"/> + <syscall name="spu_run" number="278"/> + <syscall name="spu_create" number="279"/> + <syscall name="pselect6" number="280"/> + <syscall name="ppoll" number="281"/> + <syscall name="unshare" number="282"/> + <syscall name="unlinkat" number="286"/> + <syscall name="renameat" number="287"/> + <syscall name="linkat" number="288"/> + <syscall name="symlinkat" number="289"/> + <syscall name="readlinkat" number="290"/> + <syscall name="fchmodat" number="291"/> + <syscall name="faccessat" number="292"/> +</syscalls_info> diff --git a/share/gdb/syscalls/sparc-linux.xml b/share/gdb/syscalls/sparc-linux.xml new file mode 100644 index 0000000..7673621 --- /dev/null +++ b/share/gdb/syscalls/sparc-linux.xml @@ -0,0 +1,344 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/sparc/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="restart_syscall" number="0"/> + <syscall name="exit" number="1"/> + <syscall name="fork" number="2"/> + <syscall name="read" number="3"/> + <syscall name="write" number="4"/> + <syscall name="open" number="5"/> + <syscall name="close" number="6"/> + <syscall name="wait4" number="7"/> + <syscall name="creat" number="8"/> + <syscall name="link" number="9"/> + <syscall name="unlink" number="10"/> + <syscall name="execv" number="11"/> + <syscall name="chdir" number="12"/> + <syscall name="chown" number="13"/> + <syscall name="mknod" number="14"/> + <syscall name="chmod" number="15"/> + <syscall name="lchown" number="16"/> + <syscall name="brk" number="17"/> + <syscall name="perfctr" number="18"/> + <syscall name="lseek" number="19"/> + <syscall name="getpid" number="20"/> + <syscall name="capget" number="21"/> + <syscall name="capset" number="22"/> + <syscall name="setuid" number="23"/> + <syscall name="getuid" number="24"/> + <syscall name="vmsplice" number="25"/> + <syscall name="ptrace" number="26"/> + <syscall name="alarm" number="27"/> + <syscall name="sigaltstack" number="28"/> + <syscall name="pause" number="29"/> + <syscall name="utime" number="30"/> + <syscall name="lchown32" number="31"/> + <syscall name="fchown32" number="32"/> + <syscall name="access" number="33"/> + <syscall name="nice" number="34"/> + <syscall name="chown32" number="35"/> + <syscall name="sync" number="36"/> + <syscall name="kill" number="37"/> + <syscall name="stat" number="38"/> + <syscall name="sendfile" number="39"/> + <syscall name="lstat" number="40"/> + <syscall name="dup" number="41"/> + <syscall name="pipe" number="42"/> + <syscall name="times" number="43"/> + <syscall name="getuid32" number="44"/> + <syscall name="umount2" number="45"/> + <syscall name="setgid" number="46"/> + <syscall name="getgid" number="47"/> + <syscall name="signal" number="48"/> + <syscall name="geteuid" number="49"/> + <syscall name="getegid" number="50"/> + <syscall name="acct" number="51"/> + <syscall name="getgid32" number="53"/> + <syscall name="ioctl" number="54"/> + <syscall name="reboot" number="55"/> + <syscall name="mmap2" number="56"/> + <syscall name="symlink" number="57"/> + <syscall name="readlink" number="58"/> + <syscall name="execve" number="59"/> + <syscall name="umask" number="60"/> + <syscall name="chroot" number="61"/> + <syscall name="fstat" number="62"/> + <syscall name="fstat64" number="63"/> + <syscall name="getpagesize" number="64"/> + <syscall name="msync" number="65"/> + <syscall name="vfork" number="66"/> + <syscall name="pread64" number="67"/> + <syscall name="pwrite64" number="68"/> + <syscall name="geteuid32" number="69"/> + <syscall name="getegid32" number="70"/> + <syscall name="mmap" number="71"/> + <syscall name="setreuid32" number="72"/> + <syscall name="munmap" number="73"/> + <syscall name="mprotect" number="74"/> + <syscall name="madvise" number="75"/> + <syscall name="vhangup" number="76"/> + <syscall name="truncate64" number="77"/> + <syscall name="mincore" number="78"/> + <syscall name="getgroups" number="79"/> + <syscall name="setgroups" number="80"/> + <syscall name="getpgrp" number="81"/> + <syscall name="setgroups32" number="82"/> + <syscall name="setitimer" number="83"/> + <syscall name="ftruncate64" number="84"/> + <syscall name="swapon" number="85"/> + <syscall name="getitimer" number="86"/> + <syscall name="setuid32" number="87"/> + <syscall name="sethostname" number="88"/> + <syscall name="setgid32" number="89"/> + <syscall name="dup2" number="90"/> + <syscall name="setfsuid32" number="91"/> + <syscall name="fcntl" number="92"/> + <syscall name="select" number="93"/> + <syscall name="setfsgid32" number="94"/> + <syscall name="fsync" number="95"/> + <syscall name="setpriority" number="96"/> + <syscall name="socket" number="97"/> + <syscall name="connect" number="98"/> + <syscall name="accept" number="99"/> + <syscall name="getpriority" number="100"/> + <syscall name="rt_sigreturn" number="101"/> + <syscall name="rt_sigaction" number="102"/> + <syscall name="rt_sigprocmask" number="103"/> + <syscall name="rt_sigpending" number="104"/> + <syscall name="rt_sigtimedwait" number="105"/> + <syscall name="rt_sigqueueinfo" number="106"/> + <syscall name="rt_sigsuspend" number="107"/> + <syscall name="setresuid32" number="108"/> + <syscall name="getresuid32" number="109"/> + <syscall name="setresgid32" number="110"/> + <syscall name="getresgid32" number="111"/> + <syscall name="setregid32" number="112"/> + <syscall name="recvmsg" number="113"/> + <syscall name="sendmsg" number="114"/> + <syscall name="getgroups32" number="115"/> + <syscall name="gettimeofday" number="116"/> + <syscall name="getrusage" number="117"/> + <syscall name="getsockopt" number="118"/> + <syscall name="getcwd" number="119"/> + <syscall name="readv" number="120"/> + <syscall name="writev" number="121"/> + <syscall name="settimeofday" number="122"/> + <syscall name="fchown" number="123"/> + <syscall name="fchmod" number="124"/> + <syscall name="recvfrom" number="125"/> + <syscall name="setreuid" number="126"/> + <syscall name="setregid" number="127"/> + <syscall name="rename" number="128"/> + <syscall name="truncate" number="129"/> + <syscall name="ftruncate" number="130"/> + <syscall name="flock" number="131"/> + <syscall name="lstat64" number="132"/> + <syscall name="sendto" number="133"/> + <syscall name="shutdown" number="134"/> + <syscall name="socketpair" number="135"/> + <syscall name="mkdir" number="136"/> + <syscall name="rmdir" number="137"/> + <syscall name="utimes" number="138"/> + <syscall name="stat64" number="139"/> + <syscall name="sendfile64" number="140"/> + <syscall name="getpeername" number="141"/> + <syscall name="futex" number="142"/> + <syscall name="gettid" number="143"/> + <syscall name="getrlimit" number="144"/> + <syscall name="setrlimit" number="145"/> + <syscall name="pivot_root" number="146"/> + <syscall name="prctl" number="147"/> + <syscall name="pciconfig_read" number="148"/> + <syscall name="pciconfig_write" number="149"/> + <syscall name="getsockname" number="150"/> + <syscall name="inotify_init" number="151"/> + <syscall name="inotify_add_watch" number="152"/> + <syscall name="poll" number="153"/> + <syscall name="getdents64" number="154"/> + <syscall name="fcntl64" number="155"/> + <syscall name="inotify_rm_watch" number="156"/> + <syscall name="statfs" number="157"/> + <syscall name="fstatfs" number="158"/> + <syscall name="umount" number="159"/> + <syscall name="sched_set_affinity" number="160"/> + <syscall name="sched_get_affinity" number="161"/> + <syscall name="getdomainname" number="162"/> + <syscall name="setdomainname" number="163"/> + <syscall name="quotactl" number="165"/> + <syscall name="set_tid_address" number="166"/> + <syscall name="mount" number="167"/> + <syscall name="ustat" number="168"/> + <syscall name="setxattr" number="169"/> + <syscall name="lsetxattr" number="170"/> + <syscall name="fsetxattr" number="171"/> + <syscall name="getxattr" number="172"/> + <syscall name="lgetxattr" number="173"/> + <syscall name="getdents" number="174"/> + <syscall name="setsid" number="175"/> + <syscall name="fchdir" number="176"/> + <syscall name="fgetxattr" number="177"/> + <syscall name="listxattr" number="178"/> + <syscall name="llistxattr" number="179"/> + <syscall name="flistxattr" number="180"/> + <syscall name="removexattr" number="181"/> + <syscall name="lremovexattr" number="182"/> + <syscall name="sigpending" number="183"/> + <syscall name="query_module" number="184"/> + <syscall name="setpgid" number="185"/> + <syscall name="fremovexattr" number="186"/> + <syscall name="tkill" number="187"/> + <syscall name="exit_group" number="188"/> + <syscall name="uname" number="189"/> + <syscall name="init_module" number="190"/> + <syscall name="personality" number="191"/> + <syscall name="remap_file_pages" number="192"/> + <syscall name="epoll_create" number="193"/> + <syscall name="epoll_ctl" number="194"/> + <syscall name="epoll_wait" number="195"/> + <syscall name="ioprio_set" number="196"/> + <syscall name="getppid" number="197"/> + <syscall name="sigaction" number="198"/> + <syscall name="sgetmask" number="199"/> + <syscall name="ssetmask" number="200"/> + <syscall name="sigsuspend" number="201"/> + <syscall name="oldlstat" number="202"/> + <syscall name="uselib" number="203"/> + <syscall name="readdir" number="204"/> + <syscall name="readahead" number="205"/> + <syscall name="socketcall" number="206"/> + <syscall name="syslog" number="207"/> + <syscall name="lookup_dcookie" number="208"/> + <syscall name="fadvise64" number="209"/> + <syscall name="fadvise64_64" number="210"/> + <syscall name="tgkill" number="211"/> + <syscall name="waitpid" number="212"/> + <syscall name="swapoff" number="213"/> + <syscall name="sysinfo" number="214"/> + <syscall name="ipc" number="215"/> + <syscall name="sigreturn" number="216"/> + <syscall name="clone" number="217"/> + <syscall name="ioprio_get" number="218"/> + <syscall name="adjtimex" number="219"/> + <syscall name="sigprocmask" number="220"/> + <syscall name="create_module" number="221"/> + <syscall name="delete_module" number="222"/> + <syscall name="get_kernel_syms" number="223"/> + <syscall name="getpgid" number="224"/> + <syscall name="bdflush" number="225"/> + <syscall name="sysfs" number="226"/> + <syscall name="afs_syscall" number="227"/> + <syscall name="setfsuid" number="228"/> + <syscall name="setfsgid" number="229"/> + <syscall name="_newselect" number="230"/> + <syscall name="time" number="231"/> + <syscall name="splice" number="232"/> + <syscall name="stime" number="233"/> + <syscall name="statfs64" number="234"/> + <syscall name="fstatfs64" number="235"/> + <syscall name="_llseek" number="236"/> + <syscall name="mlock" number="237"/> + <syscall name="munlock" number="238"/> + <syscall name="mlockall" number="239"/> + <syscall name="munlockall" number="240"/> + <syscall name="sched_setparam" number="241"/> + <syscall name="sched_getparam" number="242"/> + <syscall name="sched_setscheduler" number="243"/> + <syscall name="sched_getscheduler" number="244"/> + <syscall name="sched_yield" number="245"/> + <syscall name="sched_get_priority_max" number="246"/> + <syscall name="sched_get_priority_min" number="247"/> + <syscall name="sched_rr_get_interval" number="248"/> + <syscall name="nanosleep" number="249"/> + <syscall name="mremap" number="250"/> + <syscall name="_sysctl" number="251"/> + <syscall name="getsid" number="252"/> + <syscall name="fdatasync" number="253"/> + <syscall name="nfsservctl" number="254"/> + <syscall name="sync_file_range" number="255"/> + <syscall name="clock_settime" number="256"/> + <syscall name="clock_gettime" number="257"/> + <syscall name="clock_getres" number="258"/> + <syscall name="clock_nanosleep" number="259"/> + <syscall name="sched_getaffinity" number="260"/> + <syscall name="sched_setaffinity" number="261"/> + <syscall name="timer_settime" number="262"/> + <syscall name="timer_gettime" number="263"/> + <syscall name="timer_getoverrun" number="264"/> + <syscall name="timer_delete" number="265"/> + <syscall name="timer_create" number="266"/> + <syscall name="vserver" number="267"/> + <syscall name="io_setup" number="268"/> + <syscall name="io_destroy" number="269"/> + <syscall name="io_submit" number="270"/> + <syscall name="io_cancel" number="271"/> + <syscall name="io_getevents" number="272"/> + <syscall name="mq_open" number="273"/> + <syscall name="mq_unlink" number="274"/> + <syscall name="mq_timedsend" number="275"/> + <syscall name="mq_timedreceive" number="276"/> + <syscall name="mq_notify" number="277"/> + <syscall name="mq_getsetattr" number="278"/> + <syscall name="waitid" number="279"/> + <syscall name="tee" number="280"/> + <syscall name="add_key" number="281"/> + <syscall name="request_key" number="282"/> + <syscall name="keyctl" number="283"/> + <syscall name="openat" number="284"/> + <syscall name="mkdirat" number="285"/> + <syscall name="mknodat" number="286"/> + <syscall name="fchownat" number="287"/> + <syscall name="futimesat" number="288"/> + <syscall name="fstatat64" number="289"/> + <syscall name="unlinkat" number="290"/> + <syscall name="renameat" number="291"/> + <syscall name="linkat" number="292"/> + <syscall name="symlinkat" number="293"/> + <syscall name="readlinkat" number="294"/> + <syscall name="fchmodat" number="295"/> + <syscall name="faccessat" number="296"/> + <syscall name="pselect6" number="297"/> + <syscall name="ppoll" number="298"/> + <syscall name="unshare" number="299"/> + <syscall name="set_robust_list" number="300"/> + <syscall name="get_robust_list" number="301"/> + <syscall name="migrate_pages" number="302"/> + <syscall name="mbind" number="303"/> + <syscall name="get_mempolicy" number="304"/> + <syscall name="set_mempolicy" number="305"/> + <syscall name="kexec_load" number="306"/> + <syscall name="move_pages" number="307"/> + <syscall name="getcpu" number="308"/> + <syscall name="epoll_pwait" number="309"/> + <syscall name="utimensat" number="310"/> + <syscall name="signalfd" number="311"/> + <syscall name="timerfd_create" number="312"/> + <syscall name="eventfd" number="313"/> + <syscall name="fallocate" number="314"/> + <syscall name="timerfd_settime" number="315"/> + <syscall name="timerfd_gettime" number="316"/> + <syscall name="signalfd4" number="317"/> + <syscall name="eventfd2" number="318"/> + <syscall name="epoll_create1" number="319"/> + <syscall name="dup3" number="320"/> + <syscall name="pipe2" number="321"/> + <syscall name="inotify_init1" number="322"/> + <syscall name="accept4" number="323"/> + <syscall name="preadv" number="324"/> + <syscall name="pwritev" number="325"/> + <syscall name="rt_tgsigqueueinfo" number="326"/> + <syscall name="perf_event_open" number="327"/> + <syscall name="recvmmsg" number="328"/> +</syscalls_info> diff --git a/share/gdb/syscalls/sparc64-linux.xml b/share/gdb/syscalls/sparc64-linux.xml new file mode 100644 index 0000000..4403ca3 --- /dev/null +++ b/share/gdb/syscalls/sparc64-linux.xml @@ -0,0 +1,326 @@ +<?xml version="1.0"?> +<!-- Copyright (C) 2010-2013 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. --> + +<!DOCTYPE feature SYSTEM "gdb-syscalls.dtd"> + +<!-- This file was generated using the following file: + + /usr/src/linux/arch/sparc/include/asm/unistd.h + + The file mentioned above belongs to the Linux Kernel. --> + +<syscalls_info> + <syscall name="restart_syscall" number="0"/> + <syscall name="exit" number="1"/> + <syscall name="fork" number="2"/> + <syscall name="read" number="3"/> + <syscall name="write" number="4"/> + <syscall name="open" number="5"/> + <syscall name="close" number="6"/> + <syscall name="wait4" number="7"/> + <syscall name="creat" number="8"/> + <syscall name="link" number="9"/> + <syscall name="unlink" number="10"/> + <syscall name="execv" number="11"/> + <syscall name="chdir" number="12"/> + <syscall name="chown" number="13"/> + <syscall name="mknod" number="14"/> + <syscall name="chmod" number="15"/> + <syscall name="lchown" number="16"/> + <syscall name="brk" number="17"/> + <syscall name="perfctr" number="18"/> + <syscall name="lseek" number="19"/> + <syscall name="getpid" number="20"/> + <syscall name="capget" number="21"/> + <syscall name="capset" number="22"/> + <syscall name="setuid" number="23"/> + <syscall name="getuid" number="24"/> + <syscall name="vmsplice" number="25"/> + <syscall name="ptrace" number="26"/> + <syscall name="alarm" number="27"/> + <syscall name="sigaltstack" number="28"/> + <syscall name="pause" number="29"/> + <syscall name="utime" number="30"/> + <syscall name="access" number="33"/> + <syscall name="nice" number="34"/> + <syscall name="sync" number="36"/> + <syscall name="kill" number="37"/> + <syscall name="stat" number="38"/> + <syscall name="sendfile" number="39"/> + <syscall name="lstat" number="40"/> + <syscall name="dup" number="41"/> + <syscall name="pipe" number="42"/> + <syscall name="times" number="43"/> + <syscall name="umount2" number="45"/> + <syscall name="setgid" number="46"/> + <syscall name="getgid" number="47"/> + <syscall name="signal" number="48"/> + <syscall name="geteuid" number="49"/> + <syscall name="getegid" number="50"/> + <syscall name="acct" number="51"/> + <syscall name="memory_ordering" number="52"/> + <syscall name="ioctl" number="54"/> + <syscall name="reboot" number="55"/> + <syscall name="symlink" number="57"/> + <syscall name="readlink" number="58"/> + <syscall name="execve" number="59"/> + <syscall name="umask" number="60"/> + <syscall name="chroot" number="61"/> + <syscall name="fstat" number="62"/> + <syscall name="fstat64" number="63"/> + <syscall name="getpagesize" number="64"/> + <syscall name="msync" number="65"/> + <syscall name="vfork" number="66"/> + <syscall name="pread64" number="67"/> + <syscall name="pwrite64" number="68"/> + <syscall name="mmap" number="71"/> + <syscall name="munmap" number="73"/> + <syscall name="mprotect" number="74"/> + <syscall name="madvise" number="75"/> + <syscall name="vhangup" number="76"/> + <syscall name="mincore" number="78"/> + <syscall name="getgroups" number="79"/> + <syscall name="setgroups" number="80"/> + <syscall name="getpgrp" number="81"/> + <syscall name="setitimer" number="83"/> + <syscall name="swapon" number="85"/> + <syscall name="getitimer" number="86"/> + <syscall name="sethostname" number="88"/> + <syscall name="dup2" number="90"/> + <syscall name="fcntl" number="92"/> + <syscall name="select" number="93"/> + <syscall name="fsync" number="95"/> + <syscall name="setpriority" number="96"/> + <syscall name="socket" number="97"/> + <syscall name="connect" number="98"/> + <syscall name="accept" number="99"/> + <syscall name="getpriority" number="100"/> + <syscall name="rt_sigreturn" number="101"/> + <syscall name="rt_sigaction" number="102"/> + <syscall name="rt_sigprocmask" number="103"/> + <syscall name="rt_sigpending" number="104"/> + <syscall name="rt_sigtimedwait" number="105"/> + <syscall name="rt_sigqueueinfo" number="106"/> + <syscall name="rt_sigsuspend" number="107"/> + <syscall name="setresuid" number="108"/> + <syscall name="getresuid" number="109"/> + <syscall name="setresgid" number="110"/> + <syscall name="getresgid" number="111"/> + <syscall name="recvmsg" number="113"/> + <syscall name="sendmsg" number="114"/> + <syscall name="gettimeofday" number="116"/> + <syscall name="getrusage" number="117"/> + <syscall name="getsockopt" number="118"/> + <syscall name="getcwd" number="119"/> + <syscall name="readv" number="120"/> + <syscall name="writev" number="121"/> + <syscall name="settimeofday" number="122"/> + <syscall name="fchown" number="123"/> + <syscall name="fchmod" number="124"/> + <syscall name="recvfrom" number="125"/> + <syscall name="setreuid" number="126"/> + <syscall name="setregid" number="127"/> + <syscall name="rename" number="128"/> + <syscall name="truncate" number="129"/> + <syscall name="ftruncate" number="130"/> + <syscall name="flock" number="131"/> + <syscall name="lstat64" number="132"/> + <syscall name="sendto" number="133"/> + <syscall name="shutdown" number="134"/> + <syscall name="socketpair" number="135"/> + <syscall name="mkdir" number="136"/> + <syscall name="rmdir" number="137"/> + <syscall name="utimes" number="138"/> + <syscall name="stat64" number="139"/> + <syscall name="sendfile64" number="140"/> + <syscall name="getpeername" number="141"/> + <syscall name="futex" number="142"/> + <syscall name="gettid" number="143"/> + <syscall name="getrlimit" number="144"/> + <syscall name="setrlimit" number="145"/> + <syscall name="pivot_root" number="146"/> + <syscall name="prctl" number="147"/> + <syscall name="pciconfig_read" number="148"/> + <syscall name="pciconfig_write" number="149"/> + <syscall name="getsockname" number="150"/> + <syscall name="inotify_init" number="151"/> + <syscall name="inotify_add_watch" number="152"/> + <syscall name="poll" number="153"/> + <syscall name="getdents64" number="154"/> + <syscall name="inotify_rm_watch" number="156"/> + <syscall name="statfs" number="157"/> + <syscall name="fstatfs" number="158"/> + <syscall name="umount" number="159"/> + <syscall name="sched_set_affinity" number="160"/> + <syscall name="sched_get_affinity" number="161"/> + <syscall name="getdomainname" number="162"/> + <syscall name="setdomainname" number="163"/> + <syscall name="utrap_install" number="164"/> + <syscall name="quotactl" number="165"/> + <syscall name="set_tid_address" number="166"/> + <syscall name="mount" number="167"/> + <syscall name="ustat" number="168"/> + <syscall name="setxattr" number="169"/> + <syscall name="lsetxattr" number="170"/> + <syscall name="fsetxattr" number="171"/> + <syscall name="getxattr" number="172"/> + <syscall name="lgetxattr" number="173"/> + <syscall name="getdents" number="174"/> + <syscall name="setsid" number="175"/> + <syscall name="fchdir" number="176"/> + <syscall name="fgetxattr" number="177"/> + <syscall name="listxattr" number="178"/> + <syscall name="llistxattr" number="179"/> + <syscall name="flistxattr" number="180"/> + <syscall name="removexattr" number="181"/> + <syscall name="lremovexattr" number="182"/> + <syscall name="sigpending" number="183"/> + <syscall name="query_module" number="184"/> + <syscall name="setpgid" number="185"/> + <syscall name="fremovexattr" number="186"/> + <syscall name="tkill" number="187"/> + <syscall name="exit_group" number="188"/> + <syscall name="uname" number="189"/> + <syscall name="init_module" number="190"/> + <syscall name="personality" number="191"/> + <syscall name="remap_file_pages" number="192"/> + <syscall name="epoll_create" number="193"/> + <syscall name="epoll_ctl" number="194"/> + <syscall name="epoll_wait" number="195"/> + <syscall name="ioprio_set" number="196"/> + <syscall name="getppid" number="197"/> + <syscall name="sigaction" number="198"/> + <syscall name="sgetmask" number="199"/> + <syscall name="ssetmask" number="200"/> + <syscall name="sigsuspend" number="201"/> + <syscall name="oldlstat" number="202"/> + <syscall name="uselib" number="203"/> + <syscall name="readdir" number="204"/> + <syscall name="readahead" number="205"/> + <syscall name="socketcall" number="206"/> + <syscall name="syslog" number="207"/> + <syscall name="lookup_dcookie" number="208"/> + <syscall name="fadvise64" number="209"/> + <syscall name="fadvise64_64" number="210"/> + <syscall name="tgkill" number="211"/> + <syscall name="waitpid" number="212"/> + <syscall name="swapoff" number="213"/> + <syscall name="sysinfo" number="214"/> + <syscall name="ipc" number="215"/> + <syscall name="sigreturn" number="216"/> + <syscall name="clone" number="217"/> + <syscall name="ioprio_get" number="218"/> + <syscall name="adjtimex" number="219"/> + <syscall name="sigprocmask" number="220"/> + <syscall name="create_module" number="221"/> + <syscall name="delete_module" number="222"/> + <syscall name="get_kernel_syms" number="223"/> + <syscall name="getpgid" number="224"/> + <syscall name="bdflush" number="225"/> + <syscall name="sysfs" number="226"/> + <syscall name="afs_syscall" number="227"/> + <syscall name="setfsuid" number="228"/> + <syscall name="setfsgid" number="229"/> + <syscall name="_newselect" number="230"/> + <syscall name="splice" number="232"/> + <syscall name="stime" number="233"/> + <syscall name="statfs64" number="234"/> + <syscall name="fstatfs64" number="235"/> + <syscall name="_llseek" number="236"/> + <syscall name="mlock" number="237"/> + <syscall name="munlock" number="238"/> + <syscall name="mlockall" number="239"/> + <syscall name="munlockall" number="240"/> + <syscall name="sched_setparam" number="241"/> + <syscall name="sched_getparam" number="242"/> + <syscall name="sched_setscheduler" number="243"/> + <syscall name="sched_getscheduler" number="244"/> + <syscall name="sched_yield" number="245"/> + <syscall name="sched_get_priority_max" number="246"/> + <syscall name="sched_get_priority_min" number="247"/> + <syscall name="sched_rr_get_interval" number="248"/> + <syscall name="nanosleep" number="249"/> + <syscall name="mremap" number="250"/> + <syscall name="_sysctl" number="251"/> + <syscall name="getsid" number="252"/> + <syscall name="fdatasync" number="253"/> + <syscall name="nfsservctl" number="254"/> + <syscall name="sync_file_range" number="255"/> + <syscall name="clock_settime" number="256"/> + <syscall name="clock_gettime" number="257"/> + <syscall name="clock_getres" number="258"/> + <syscall name="clock_nanosleep" number="259"/> + <syscall name="sched_getaffinity" number="260"/> + <syscall name="sched_setaffinity" number="261"/> + <syscall name="timer_settime" number="262"/> + <syscall name="timer_gettime" number="263"/> + <syscall name="timer_getoverrun" number="264"/> + <syscall name="timer_delete" number="265"/> + <syscall name="timer_create" number="266"/> + <syscall name="vserver" number="267"/> + <syscall name="io_setup" number="268"/> + <syscall name="io_destroy" number="269"/> + <syscall name="io_submit" number="270"/> + <syscall name="io_cancel" number="271"/> + <syscall name="io_getevents" number="272"/> + <syscall name="mq_open" number="273"/> + <syscall name="mq_unlink" number="274"/> + <syscall name="mq_timedsend" number="275"/> + <syscall name="mq_timedreceive" number="276"/> + <syscall name="mq_notify" number="277"/> + <syscall name="mq_getsetattr" number="278"/> + <syscall name="waitid" number="279"/> + <syscall name="tee" number="280"/> + <syscall name="add_key" number="281"/> + <syscall name="request_key" number="282"/> + <syscall name="keyctl" number="283"/> + <syscall name="openat" number="284"/> + <syscall name="mkdirat" number="285"/> + <syscall name="mknodat" number="286"/> + <syscall name="fchownat" number="287"/> + <syscall name="futimesat" number="288"/> + <syscall name="fstatat64" number="289"/> + <syscall name="unlinkat" number="290"/> + <syscall name="renameat" number="291"/> + <syscall name="linkat" number="292"/> + <syscall name="symlinkat" number="293"/> + <syscall name="readlinkat" number="294"/> + <syscall name="fchmodat" number="295"/> + <syscall name="faccessat" number="296"/> + <syscall name="pselect6" number="297"/> + <syscall name="ppoll" number="298"/> + <syscall name="unshare" number="299"/> + <syscall name="set_robust_list" number="300"/> + <syscall name="get_robust_list" number="301"/> + <syscall name="migrate_pages" number="302"/> + <syscall name="mbind" number="303"/> + <syscall name="get_mempolicy" number="304"/> + <syscall name="set_mempolicy" number="305"/> + <syscall name="kexec_load" number="306"/> + <syscall name="move_pages" number="307"/> + <syscall name="getcpu" number="308"/> + <syscall name="epoll_pwait" number="309"/> + <syscall name="utimensat" number="310"/> + <syscall name="signalfd" number="311"/> + <syscall name="timerfd_create" number="312"/> + <syscall name="eventfd" number="313"/> + <syscall name="fallocate" number="314"/> + <syscall name="timerfd_settime" number="315"/> + <syscall name="timerfd_gettime" number="316"/> + <syscall name="signalfd4" number="317"/> + <syscall name="eventfd2" number="318"/> + <syscall name="epoll_create1" number="319"/> + <syscall name="dup3" number="320"/> + <syscall name="pipe2" number="321"/> + <syscall name="inotify_init1" number="322"/> + <syscall name="accept4" number="323"/> + <syscall name="preadv" number="324"/> + <syscall name="pwritev" number="325"/> + <syscall name="rt_tgsigqueueinfo" number="326"/> + <syscall name="perf_event_open" number="327"/> + <syscall name="recvmmsg" number="328"/> +</syscalls_info> |