diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/bfd/version.h ./bfd/version.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/bfd/version.h	2017-05-02 02:06:02.000000000 +0000
+++ ./bfd/version.h	2017-05-09 02:06:11.000000000 +0000
@@ -1,4 +1,4 @@
-#define BFD_VERSION_DATE 20170502
+#define BFD_VERSION_DATE 20170509
 #define BFD_VERSION @bfd_version@
 #define BFD_VERSION_STRING  @bfd_version_package@ @bfd_version_string@
 #define REPORT_BUGS_TO @report_bugs_to@
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/djunpack.bat ./djunpack.bat
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/djunpack.bat	2017-05-02 02:10:47.000000000 +0000
+++ ./djunpack.bat	2017-05-09 02:11:20.000000000 +0000
@@ -17,8 +17,8 @@ Rem
 Rem The following 2 lines need to be changed with each new GDB release, to
 Rem be identical to the name of the top-level directory where the GDB
 Rem distribution unpacks itself.
-set GDBVER=$package-7.99.90.20170502
-if "%GDBVER%"=="$package-7.99.90.20170502" GoTo EnvOk
+set GDBVER=$package-7.99.91.20170509
+if "%GDBVER%"=="$package-7.99.91.20170509" GoTo EnvOk
 Rem If their environment space is too small, re-exec with a larger one
 command.com /e:4096 /c %0 %1
 GoTo End
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/btrace.c ./gdb/btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/btrace.c	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/btrace.c	2017-05-09 02:06:13.000000000 +0000
@@ -1797,11 +1797,17 @@ btrace_fetch (struct thread_info *tp)
   if (btinfo->replay != NULL)
     return;
 
+  /* With CLI usage, TP->PTID always equals INFERIOR_PTID here.  Now that we
+     can store a gdb.Record object in Python referring to a different thread
+     than the current one, temporarily set INFERIOR_PTID.  */
+  cleanup = save_inferior_ptid ();
+  inferior_ptid = tp->ptid;
+
   /* We should not be called on running or exited threads.  */
   gdb_assert (can_access_registers_ptid (tp->ptid));
 
   btrace_data_init (&btrace);
-  cleanup = make_cleanup_btrace_data (&btrace);
+  make_cleanup_btrace_data (&btrace);
 
   /* Let's first try to extend the trace we already have.  */
   if (btinfo->end != NULL)
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/ChangeLog ./gdb/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/ChangeLog	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/ChangeLog	2017-05-09 02:06:12.000000000 +0000
@@ -1,3 +1,141 @@
+2017-05-04  Joel Brobecker  <brobecker@adacore.com>
+
+	* version.in: Set GDB version number to 7.99.91.DATE-git.
+	* PROBLEMS: Likewise.
+
+2017-05-04  Joel Brobecker  <brobecker@adacore.com>
+
+	GDB 7.99.91 released.
+
+2017-05-04  Joel Brobecker  <brobecker@adacore.com>
+
+	* version.in: Set GDB version number to 7.99.91.
+	* PROBLEMS: Likewise.
+
+2017-05-04  Joel Brobecker  <brobecker@adacore.com>
+
+	* NEWS: Rename the "Changes since GDB 7.12" section into
+	"Changes in GDB 8.0".
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* Makefile.in (SUBDIR_PYTHON_OBS): Add py-instruction.o.
+	(SUBDIR_PYTHON_SRCS): Add py-instruction.c.
+	* python/py-instruction.c, python/py-instruction.h: New file.
+	* python/py-record.c: Add py-instruction.h include.
+	(gdbpy_initialize_record): Make gdb.Instruction a super class of
+	gdb.RecordInstruction.
+	* python/python-internal.h: Add gdbpy_initialize_instruction
+	declaration.
+	* python/python.c (do_start_initialization): Add
+	gdbpy_initialize_instruction.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python/py-record-btrace.c (BTPY_REQUIRE_VALID_CALL, btpy_call_type):
+	Remove.
+	(btrace_func_from_recpy_func): New function.
+	(btpy_call_new, btpy_number, btpy_hash, btpy_richcompare): Remove.
+	(btpy_call_level, btpy_call_symbol, btpy_call_instructions,
+	btpy_call_up, btpy_call_prev_sibling, btpy_call_next_sibling): Rename to ...
+	(recpy_bt_func_level, recpy_bt_func_symbol, recpy_bt_func_instructions,
+	recpy_bt_func_up, recpy_bt_func_prev, recpy_bt_func_next): This.
+	Also, use new helper functions.
+	(btpy_list_item): Use new helper functions.
+	(recpy_bt_function_call_history): Use new type name.
+	(btpy_call_getset): Remove.
+	(gdbpy_initialize_btrace): Remove code to initialize
+	gdb.BtraceFunctionCall.
+	* python/py-record-btrace.h (recpy_bt_func_number, recpy_btb_func_level,
+	recpy_btb_func_symbol, recpy_bt_func_instructions, recpy_bt_func_up,
+	recpy_bt_func_prev, recpy_bt_func_next): New export.
+	* python/py-record.c (recpy_func_type): New static object.
+	(recpy_func_new, recpy_func_level, recpy_func_symbol,
+	recpy_func_instructions, recpy_func_up, recpy_func_prev,
+	recpy_func_next): New function.
+	(recpy_element_hash, recpy_element_richcompare): Updated comment.
+	(recpy_func_getset): New static object.
+	(gdbpy_initialize_record): Add code to initialize gdb.RecordInstruction.
+	* python/py-record.h (recpy_func_type, recpy_func_new): New export.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python/py-record-btrace.c (BTPY_REQUIRE_VALID_INSN): Remove.
+	(btpy_object, btpy_insn_type, btpy_new): Remove.
+	(btpy_list_object): Use gdb.RecordInstruction type instead of
+	gdb.BtraceInstruction type.
+	(btrace_insn_from_recpy_insn): New function.
+	(btpy_insn_or_gap_new): Adjust comment. Use recpy_insn_new instead of
+	btpy_new.
+	(btpy_call_new, btpy_list_item): Do not use btpy_new anymore.
+	(btpy_number, btpy_hash, btpy_call_level, btpy_call_symbol,
+	btpy_call_instructions, btpy_call_up, btpy_call_prev_sibling,
+	btpy_call_next_sibling, btpy_richcompare): Use recpy_element_object
+	instead of btpy_object.
+	(btpy_insn_sal, btpy_insn_pc, btpy_insn_size, btpy_insn_is_speculative,
+	btpy_insn_data, btpy_insn_decode): Rename to ...
+	(recpy_bt_insn_sal, recpy_bt_insn_pc, recpy_bt_insn_size,
+	recpy_bt_insn_is_speculative, recpy_bt_insn_data,
+	recpy_bt_insn_decode): This.  Also, use new helper functions.
+	(btpy_list_position, recpy_bt_goto): Use recpy_element_object and
+	recpy_insn_type.
+	(btpy_insn_getset): Remove.
+	(gdbpy_initialize_btrace): Remove code to initialize
+	gdb.BtraceInstruction.  Use recpy_element_object.
+	* python/py-record-btrace.h (recpy_bt_insn_number, recpy_bt_insn_sal,
+	recpy_bt_insn_pc, recpy_bt_insn_data, recpy_bt_insn_decoded,
+	recpy_bt_insn_size, recpy_bt_insn_is_speculative): New export.
+	* python/py-record.c (recpy_insn_type): New static object.
+	(recpy_insn_new, recpy_insn_sal, recpy_insn_pc, recpy_insn_data,
+	recpy_insn_decoded, recpy_insn_size, recpy_insn_is_speculative,
+	recpy_element_number, recpy_element_hash, recpy_element_richcompare):
+	New function.
+	(recpy_insn_getset): New static object.
+	(gdbpy_initialize_record): Initialize gdb.RecordInstruction.
+	* python/py-record.h (recpy_element_object): New typedef.
+	(recpy_insn_type, recpy_insn_new): New export.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* py-record-btrace.c (btpy_insn_new): Removed.
+	(btpy_insn_or_gap_new): New function.
+	(btpy_insn_error): Removed.
+	(btpy_insn_sal, btpy_insn_pc, btpy_insn_size, btpy_insn_is_speculative,
+	btpy_insn_data, btpy_insn_decode): Remove code path for gaps.
+	(recpy_bt_replay_position, recpy_bt_begin, recpy_bt_end): Call
+	btpy_insn_or_gap_new instead of btpy_insn_new.
+	(btpy_insn_getset): Remove btpy_insn_error.
+	* py-record.c (recpy_gap_type): New static object.
+	(recpy_gap_object): New typedef.
+	(recpy_gap_new, recpy_gap_number, recpy_gap_reason_code,
+	recpy_gap_reason_string): New function.
+	(recpy_gap_getset): New static object.
+	(gdbpy_initialize_record): Initialize gdb.RecordGap type.
+	* py-record.h (recpy_gap_new): New export.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python/py-record.c (recpy_ptid): Remove.
+	(recpy_record_getset): Remove recpy_ptid.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* btrace.c (btrace_fetch): Set inferior_ptid.
+	* python/py-record-btrace.c: Add "py-record.h" include.
+	(recpy_bt_format, recpy_bt_replay_position, recpy_bt_begin,
+	recpy_bt_end, recpy_bt_instruction_history,
+	recpy_bt_function_call_history, recpy_bt_goto): Use ptid stored
+	in gdb.Record object instead of current ptid.
+	* python/py-record.c: Include new "py-record.h" file.
+	(recpy_record_object): Moved to py-record.h.
+	* python/py-record.h: New file.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python/py-record-btrace.c (BTPY_REQUIRE_VALID_INSN,
+	BTPY_REQUIRE_VALID_CALL, recpy_bt_function_call_history): Fix
+	indentation.
+
 2017-04-28  Yao Qi  <yao.qi@linaro.org>
 
 	* mips-linux-nat.c (mips_linux_new_thread): Use ptid method
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/ChangeLog ./gdb/doc/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/ChangeLog	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/doc/ChangeLog	2017-05-09 02:06:13.000000000 +0000
@@ -1,3 +1,29 @@
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python.texi (Recording in Python): Factor out the documentation of
+	gdb.RecordInstruction's super class.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python.texi (Recording in Python): Replace gdb.BtraceFunction with
+	gdb.RecordFunctionSegment.  Rename prev_sibling and next_sibling to
+	prev and next.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python.texi (Recording in Python): Replace gdb.BtraceInstruction with
+	gdb.RecordInstruction
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* python.texi (Recording in Python): Add documentation for
+	gdb.RecordGap and remove documentation of special cases for
+	gdb.BtraceInstruction.
+
+2017-05-04  Tim Wiederhake <tim.wiederhake@intel.com>
+
+	* python.texi (Recording in Python): Remove Record.ptid defvar.
+
 2017-03-28  Anton Kolesov  <anton.kolesov@synopsys.com>
 
 	* gdb.texinfo (Synopsys ARC): Document "set debug arc 2".
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gcore.1 ./gdb/doc/gcore.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gcore.1	2017-05-02 02:10:36.000000000 +0000
+++ ./gdb/doc/gcore.1	2017-05-09 02:11:12.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GCORE 1"
-.TH GCORE 1 "2017-05-02" "gdb-7.99.90.20170502-git" "GNU Development Tools"
+.TH GCORE 1 "2017-05-09" "gdb-7.99.91.20170509-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.1 ./gdb/doc/gdb.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.1	2017-05-02 02:10:34.000000000 +0000
+++ ./gdb/doc/gdb.1	2017-05-09 02:11:11.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDB 1"
-.TH GDB 1 "2017-05-02" "gdb-7.99.90.20170502-git" "GNU Development Tools"
+.TH GDB 1 "2017-05-09" "gdb-7.99.91.20170509-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info ./gdb/doc/gdb.info
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info	2017-05-02 02:10:31.000000000 +0000
+++ ./gdb/doc/gdb.info	2017-05-09 02:11:08.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -42,9 +42,9 @@ gdb.info-1: 1717
 gdb.info-2: 302362
 gdb.info-3: 619464
 gdb.info-4: 908678
-gdb.info-5: 1203123
-gdb.info-6: 1502020
-gdb.info-7: 1802156
+gdb.info-5: 1202821
+gdb.info-6: 1501718
+gdb.info-7: 1801854
 
 Tag Table:
 (Indirect)
@@ -415,354 +415,354 @@ Node: Inferiors In Python976068
 Node: Events In Python978975
 Node: Threads In Python986818
 Node: Recordings In Python989705
-Node: Commands In Python997341
-Node: Parameters In Python1006754
-Node: Functions In Python1012214
-Node: Progspaces In Python1014431
-Node: Objfiles In Python1017932
-Node: Frames In Python1023711
-Node: Blocks In Python1030554
-Node: Symbols In Python1034916
-Node: Symbol Tables In Python1042143
-Node: Line Tables In Python1045366
-Node: Breakpoints In Python1048203
-Ref: python_breakpoint_thread1053337
-Node: Finish Breakpoints in Python1056374
-Node: Lazy Strings In Python1058480
-Node: Architectures In Python1060710
-Node: Python Auto-loading1062899
-Ref: set auto-load python-scripts1063528
-Ref: show auto-load python-scripts1063628
-Ref: info auto-load python-scripts1063734
-Node: Python modules1064868
-Node: gdb.printing1065254
-Node: gdb.types1066681
-Node: gdb.prompt1069693
-Node: Guile1071342
-Node: Guile Introduction1072001
-Node: Guile Commands1072872
-Node: Guile API1074726
-Node: Basic Guile1076723
-Node: Guile Configuration1082405
-Node: GDB Scheme Data Types1083381
-Node: Guile Exception Handling1085213
-Node: Values From Inferior In Guile1089247
-Node: Arithmetic In Guile1104782
-Node: Types In Guile1106413
-Ref: Fields of a type in Guile1114354
-Node: Guile Pretty Printing API1115742
-Node: Selecting Guile Pretty-Printers1121344
-Node: Writing a Guile Pretty-Printer1123720
-Node: Commands In Guile1128905
-Node: Parameters In Guile1139685
-Ref: Parameters In Guile-Footnote-11146566
-Node: Progspaces In Guile1146682
-Node: Objfiles In Guile1149270
-Node: Frames In Guile1151551
-Node: Blocks In Guile1158129
-Node: Symbols In Guile1162937
-Node: Symbol Tables In Guile1170271
-Node: Breakpoints In Guile1173234
-Node: Lazy Strings In Guile1183495
-Node: Architectures In Guile1185786
-Node: Disassembly In Guile1190093
-Node: I/O Ports in Guile1193295
-Node: Memory Ports in Guile1193851
-Node: Iterators In Guile1197117
-Node: Guile Auto-loading1203123
-Ref: set auto-load guile-scripts1203746
-Ref: show auto-load guile-scripts1203844
-Ref: info auto-load guile-scripts1203948
-Node: Guile Modules1204907
-Node: Guile Printing Module1205229
-Node: Guile Types Module1206048
-Node: Auto-loading extensions1207341
-Node: objfile-gdbdotext file1208539
-Ref: set auto-load scripts-directory1209975
-Ref: with-auto-load-dir1210351
-Ref: show auto-load scripts-directory1211169
-Ref: add-auto-load-scripts-directory1211249
-Node: dotdebug_gdb_scripts section1211725
-Node: Which flavor to choose?1215475
-Node: Multiple Extension Languages1217296
-Node: Aliases1218360
-Node: Interpreters1221225
-Node: TUI1224318
-Node: TUI Overview1225316
-Node: TUI Keys1227749
-Node: TUI Single Key Mode1230053
-Node: TUI Commands1230928
-Node: TUI Configuration1234867
-Node: Emacs1236173
-Node: GDB/MI1241610
-Node: GDB/MI General Design1243584
-Node: Context management1246104
-Node: Asynchronous and non-stop modes1249891
-Node: Thread groups1252865
-Node: GDB/MI Command Syntax1255143
-Node: GDB/MI Input Syntax1255386
-Node: GDB/MI Output Syntax1256936
-Node: GDB/MI Compatibility with CLI1260521
-Node: GDB/MI Development and Front Ends1261258
-Node: GDB/MI Output Records1262912
-Node: GDB/MI Result Records1263318
-Node: GDB/MI Stream Records1264668
-Node: GDB/MI Async Records1265933
-Node: GDB/MI Breakpoint Information1276370
-Node: GDB/MI Frame Information1280321
-Node: GDB/MI Thread Information1281407
-Node: GDB/MI Ada Exception Information1282394
-Node: GDB/MI Simple Examples1282817
-Node: GDB/MI Command Description Format1285025
-Node: GDB/MI Breakpoint Commands1285905
-Ref: -break-insert1293013
-Node: GDB/MI Catchpoint Commands1306468
-Node: Shared Library GDB/MI Catchpoint Commands1306836
-Node: Ada Exception GDB/MI Catchpoint Commands1308494
-Node: GDB/MI Program Context1310898
-Node: GDB/MI Thread Commands1315166
-Node: GDB/MI Ada Tasking Commands1319229
-Node: GDB/MI Program Execution1321501
-Node: GDB/MI Stack Manipulation1333535
-Ref: -stack-list-arguments1335434
-Ref: -stack-list-frames1339139
-Ref: -stack-list-locals1343002
-Ref: -stack-list-variables1344492
-Node: GDB/MI Variable Objects1346026
-Ref: -var-set-format1355991
-Ref: -var-list-children1357372
-Ref: -var-update1366180
-Ref: -var-set-frozen1369178
-Ref: -var-set-update-range1369975
-Ref: -var-set-visualizer1370504
-Node: GDB/MI Data Manipulation1371994
-Node: GDB/MI Tracepoint Commands1392168
-Node: GDB/MI Symbol Query1403959
-Node: GDB/MI File Commands1404648
-Node: GDB/MI Target Manipulation1409082
-Node: GDB/MI File Transfer Commands1415740
-Node: GDB/MI Ada Exceptions Commands1417063
-Node: GDB/MI Support Commands1418416
-Node: GDB/MI Miscellaneous Commands1422989
-Ref: -interpreter-exec1433323
-Node: Annotations1435663
-Node: Annotations Overview1436582
-Node: Server Prefix1439045
-Node: Prompting1439779
-Node: Errors1441296
-Node: Invalidation1442192
-Node: Annotations for Running1442671
-Node: Source Annotations1444205
-Node: JIT Interface1445134
-Node: Declarations1446933
-Node: Registering Code1448320
-Node: Unregistering Code1449292
-Node: Custom Debug Info1449919
-Node: Using JIT Debug Info Readers1451215
-Node: Writing JIT Debug Info Readers1452227
-Node: In-Process Agent1454422
-Ref: Control Agent1456365
-Node: In-Process Agent Protocol1457232
-Node: IPA Protocol Objects1458023
-Ref: agent expression object1459021
-Ref: tracepoint action object1459226
-Ref: tracepoint object1459306
-Node: IPA Protocol Commands1461836
-Node: GDB Bugs1463306
-Node: Bug Criteria1464038
-Node: Bug Reporting1464915
-Node: Command Line Editing1472744
-Node: Introduction and Notation1473396
-Node: Readline Interaction1475017
-Node: Readline Bare Essentials1476206
-Node: Readline Movement Commands1477987
-Node: Readline Killing Commands1478945
-Node: Readline Arguments1480861
-Node: Searching1481903
-Node: Readline Init File1484053
-Node: Readline Init File Syntax1485204
-Node: Conditional Init Constructs1502020
-Node: Sample Init File1504543
-Node: Bindable Readline Commands1507657
-Node: Commands For Moving1508709
-Node: Commands For History1509567
-Node: Commands For Text1512962
-Node: Commands For Killing1515685
-Node: Numeric Arguments1517825
-Node: Commands For Completion1518961
-Node: Keyboard Macros1520927
-Node: Miscellaneous Commands1521495
-Node: Readline vi Mode1525343
-Node: Using History Interactively1526253
-Node: History Interaction1526768
-Node: Event Designators1528190
-Node: Word Designators1529327
-Node: Modifiers1530962
-Node: In Memoriam1532183
-Node: Formatting Documentation1533066
-Ref: Formatting Documentation-Footnote-11536446
-Node: Installing GDB1536544
-Node: Requirements1537116
-Ref: Expat1537685
-Node: Running Configure1540305
-Node: Separate Objdir1544099
-Node: Config Names1547084
-Node: Configure Options1548563
-Node: System-wide configuration1550934
-Node: System-wide Configuration Scripts1552894
-Node: Maintenance Commands1554078
-Ref: maint info breakpoints1555733
-Node: Remote Protocol1575631
-Node: Overview1576323
-Ref: Binary Data1578868
-Node: Packets1581393
-Ref: thread-id syntax1582293
-Ref: extended mode1583738
-Ref: ? packet1583996
-Ref: bc1585462
-Ref: bs1585672
-Ref: read registers packet1587289
-Ref: cycle step packet1589144
-Ref: write register packet1591855
-Ref: step with signal packet1592834
-Ref: vCont packet1594310
-Ref: vCtrlC packet1597543
-Ref: vKill packet1599961
-Ref: X packet1600891
-Ref: insert breakpoint or watchpoint packet1601260
-Node: Stop Reply Packets1605589
-Ref: swbreak stop reason1608840
-Ref: thread create event1612437
-Ref: thread exit event1613640
-Node: General Query Packets1615849
-Ref: qCRC packet1618679
-Ref: QNonStop1626502
-Ref: QCatchSyscalls1627178
-Ref: QPassSignals1628715
-Ref: QProgramSignals1629922
-Ref: QThreadEvents1631489
-Ref: qSearch memory1633507
-Ref: QStartNoAckMode1634015
-Ref: qSupported1634546
-Ref: multiprocess extensions1650553
-Ref: install tracepoint in tracing1652583
-Ref: qXfer read1657106
-Ref: qXfer auxiliary vector read1658713
-Ref: qXfer btrace read1659061
-Ref: qXfer btrace-conf read1660126
-Ref: qXfer executable filename read1660477
-Ref: qXfer target description read1661092
-Ref: qXfer library list read1661526
-Ref: qXfer svr4 library list read1662182
-Ref: qXfer memory map read1664035
-Ref: qXfer sdata read1664422
-Ref: qXfer siginfo read1664888
-Ref: qXfer spu read1665285
-Ref: qXfer threads read1665809
-Ref: qXfer traceframe info read1666212
-Ref: qXfer unwind info block1666630
-Ref: qXfer fdpic loadmap read1666864
-Ref: qXfer osdata read1667280
-Ref: qXfer write1667434
-Ref: qXfer siginfo write1668526
-Ref: qXfer spu write1668923
-Ref: General Query Packets-Footnote-11671779
-Node: Architecture-Specific Protocol Details1672106
-Node: ARM-Specific Protocol Details1672615
-Node: ARM Breakpoint Kinds1672863
-Node: MIPS-Specific Protocol Details1673194
-Node: MIPS Register packet Format1673477
-Node: MIPS Breakpoint Kinds1674404
-Node: Tracepoint Packets1674822
-Ref: QTEnable1684136
-Ref: QTDisable1684332
-Ref: qTfSTM1689869
-Ref: qTsSTM1689869
-Ref: qTSTMat1690946
-Ref: QTBuffer-size1692097
-Node: Host I/O Packets1694070
-Node: Interrupts1699650
-Ref: interrupting remote targets1699794
-Node: Notification Packets1701962
-Node: Remote Non-Stop1707387
-Node: Packet Acknowledgment1710503
-Node: Examples1712618
-Node: File-I/O Remote Protocol Extension1713212
-Node: File-I/O Overview1713674
-Node: Protocol Basics1715873
-Node: The F Request Packet1718102
-Node: The F Reply Packet1719003
-Node: The Ctrl-C Message1719921
-Node: Console I/O1721547
-Node: List of Supported Calls1722763
-Node: open1723125
-Node: close1725633
-Node: read1726016
-Node: write1726625
-Node: lseek1727396
-Node: rename1728280
-Node: unlink1729687
-Node: stat/fstat1730634
-Node: gettimeofday1731527
-Node: isatty1731963
-Node: system1732559
-Node: Protocol-specific Representation of Datatypes1734101
-Node: Integral Datatypes1734478
-Node: Pointer Values1735285
-Node: Memory Transfer1735989
-Node: struct stat1736609
-Node: struct timeval1738811
-Node: Constants1739328
-Node: Open Flags1739777
-Node: mode_t Values1740118
-Node: Errno Values1740610
-Node: Lseek Flags1741420
-Node: Limits1741605
-Node: File-I/O Examples1741965
-Node: Library List Format1743053
-Node: Library List Format for SVR4 Targets1745835
-Node: Memory Map Format1748302
-Node: Thread List Format1750877
-Node: Traceframe Info Format1751790
-Node: Branch Trace Format1753476
-Node: Branch Trace Configuration Format1755176
-Node: Agent Expressions1756350
-Node: General Bytecode Design1759171
-Node: Bytecode Descriptions1763965
-Node: Using Agent Expressions1777268
-Node: Varying Target Capabilities1779245
-Node: Rationale1780406
-Node: Target Descriptions1787795
-Node: Retrieving Descriptions1789738
-Node: Target Description Format1790823
-Node: Predefined Target Types1802156
-Node: Enum Target Types1803584
-Node: Standard Target Features1804579
-Node: AArch64 Features1806516
-Node: ARC Features1806939
-Node: ARM Features1809000
-Node: i386 Features1810514
-Node: MicroBlaze Features1812729
-Node: MIPS Features1813306
-Node: M68K Features1814497
-Node: NDS32 Features1815158
-Node: Nios II Features1816182
-Node: PowerPC Features1816581
-Node: S/390 and System z Features1817906
-Node: Sparc Features1819732
-Node: TIC6x Features1820637
-Node: Operating System Information1821186
-Node: Process list1822021
-Node: Trace File Format1823084
-Node: Index Section Format1826298
-Node: Man Pages1834224
-Node: gdb man1834630
-Node: gdbserver man1840666
-Node: gcore man1847863
-Node: gdbinit man1848520
-Node: Copying1849403
-Node: GNU Free Documentation License1886964
-Node: Concept Index1912111
-Node: Command and Variable Index2046257
+Node: Commands In Python997039
+Node: Parameters In Python1006452
+Node: Functions In Python1011912
+Node: Progspaces In Python1014129
+Node: Objfiles In Python1017630
+Node: Frames In Python1023409
+Node: Blocks In Python1030252
+Node: Symbols In Python1034614
+Node: Symbol Tables In Python1041841
+Node: Line Tables In Python1045064
+Node: Breakpoints In Python1047901
+Ref: python_breakpoint_thread1053035
+Node: Finish Breakpoints in Python1056072
+Node: Lazy Strings In Python1058178
+Node: Architectures In Python1060408
+Node: Python Auto-loading1062597
+Ref: set auto-load python-scripts1063226
+Ref: show auto-load python-scripts1063326
+Ref: info auto-load python-scripts1063432
+Node: Python modules1064566
+Node: gdb.printing1064952
+Node: gdb.types1066379
+Node: gdb.prompt1069391
+Node: Guile1071040
+Node: Guile Introduction1071699
+Node: Guile Commands1072570
+Node: Guile API1074424
+Node: Basic Guile1076421
+Node: Guile Configuration1082103
+Node: GDB Scheme Data Types1083079
+Node: Guile Exception Handling1084911
+Node: Values From Inferior In Guile1088945
+Node: Arithmetic In Guile1104480
+Node: Types In Guile1106111
+Ref: Fields of a type in Guile1114052
+Node: Guile Pretty Printing API1115440
+Node: Selecting Guile Pretty-Printers1121042
+Node: Writing a Guile Pretty-Printer1123418
+Node: Commands In Guile1128603
+Node: Parameters In Guile1139383
+Ref: Parameters In Guile-Footnote-11146264
+Node: Progspaces In Guile1146380
+Node: Objfiles In Guile1148968
+Node: Frames In Guile1151249
+Node: Blocks In Guile1157827
+Node: Symbols In Guile1162635
+Node: Symbol Tables In Guile1169969
+Node: Breakpoints In Guile1172932
+Node: Lazy Strings In Guile1183193
+Node: Architectures In Guile1185484
+Node: Disassembly In Guile1189791
+Node: I/O Ports in Guile1192993
+Node: Memory Ports in Guile1193549
+Node: Iterators In Guile1196815
+Node: Guile Auto-loading1202821
+Ref: set auto-load guile-scripts1203444
+Ref: show auto-load guile-scripts1203542
+Ref: info auto-load guile-scripts1203646
+Node: Guile Modules1204605
+Node: Guile Printing Module1204927
+Node: Guile Types Module1205746
+Node: Auto-loading extensions1207039
+Node: objfile-gdbdotext file1208237
+Ref: set auto-load scripts-directory1209673
+Ref: with-auto-load-dir1210049
+Ref: show auto-load scripts-directory1210867
+Ref: add-auto-load-scripts-directory1210947
+Node: dotdebug_gdb_scripts section1211423
+Node: Which flavor to choose?1215173
+Node: Multiple Extension Languages1216994
+Node: Aliases1218058
+Node: Interpreters1220923
+Node: TUI1224016
+Node: TUI Overview1225014
+Node: TUI Keys1227447
+Node: TUI Single Key Mode1229751
+Node: TUI Commands1230626
+Node: TUI Configuration1234565
+Node: Emacs1235871
+Node: GDB/MI1241308
+Node: GDB/MI General Design1243282
+Node: Context management1245802
+Node: Asynchronous and non-stop modes1249589
+Node: Thread groups1252563
+Node: GDB/MI Command Syntax1254841
+Node: GDB/MI Input Syntax1255084
+Node: GDB/MI Output Syntax1256634
+Node: GDB/MI Compatibility with CLI1260219
+Node: GDB/MI Development and Front Ends1260956
+Node: GDB/MI Output Records1262610
+Node: GDB/MI Result Records1263016
+Node: GDB/MI Stream Records1264366
+Node: GDB/MI Async Records1265631
+Node: GDB/MI Breakpoint Information1276068
+Node: GDB/MI Frame Information1280019
+Node: GDB/MI Thread Information1281105
+Node: GDB/MI Ada Exception Information1282092
+Node: GDB/MI Simple Examples1282515
+Node: GDB/MI Command Description Format1284723
+Node: GDB/MI Breakpoint Commands1285603
+Ref: -break-insert1292711
+Node: GDB/MI Catchpoint Commands1306166
+Node: Shared Library GDB/MI Catchpoint Commands1306534
+Node: Ada Exception GDB/MI Catchpoint Commands1308192
+Node: GDB/MI Program Context1310596
+Node: GDB/MI Thread Commands1314864
+Node: GDB/MI Ada Tasking Commands1318927
+Node: GDB/MI Program Execution1321199
+Node: GDB/MI Stack Manipulation1333233
+Ref: -stack-list-arguments1335132
+Ref: -stack-list-frames1338837
+Ref: -stack-list-locals1342700
+Ref: -stack-list-variables1344190
+Node: GDB/MI Variable Objects1345724
+Ref: -var-set-format1355689
+Ref: -var-list-children1357070
+Ref: -var-update1365878
+Ref: -var-set-frozen1368876
+Ref: -var-set-update-range1369673
+Ref: -var-set-visualizer1370202
+Node: GDB/MI Data Manipulation1371692
+Node: GDB/MI Tracepoint Commands1391866
+Node: GDB/MI Symbol Query1403657
+Node: GDB/MI File Commands1404346
+Node: GDB/MI Target Manipulation1408780
+Node: GDB/MI File Transfer Commands1415438
+Node: GDB/MI Ada Exceptions Commands1416761
+Node: GDB/MI Support Commands1418114
+Node: GDB/MI Miscellaneous Commands1422687
+Ref: -interpreter-exec1433021
+Node: Annotations1435361
+Node: Annotations Overview1436280
+Node: Server Prefix1438743
+Node: Prompting1439477
+Node: Errors1440994
+Node: Invalidation1441890
+Node: Annotations for Running1442369
+Node: Source Annotations1443903
+Node: JIT Interface1444832
+Node: Declarations1446631
+Node: Registering Code1448018
+Node: Unregistering Code1448990
+Node: Custom Debug Info1449617
+Node: Using JIT Debug Info Readers1450913
+Node: Writing JIT Debug Info Readers1451925
+Node: In-Process Agent1454120
+Ref: Control Agent1456063
+Node: In-Process Agent Protocol1456930
+Node: IPA Protocol Objects1457721
+Ref: agent expression object1458719
+Ref: tracepoint action object1458924
+Ref: tracepoint object1459004
+Node: IPA Protocol Commands1461534
+Node: GDB Bugs1463004
+Node: Bug Criteria1463736
+Node: Bug Reporting1464613
+Node: Command Line Editing1472442
+Node: Introduction and Notation1473094
+Node: Readline Interaction1474715
+Node: Readline Bare Essentials1475904
+Node: Readline Movement Commands1477685
+Node: Readline Killing Commands1478643
+Node: Readline Arguments1480559
+Node: Searching1481601
+Node: Readline Init File1483751
+Node: Readline Init File Syntax1484902
+Node: Conditional Init Constructs1501718
+Node: Sample Init File1504241
+Node: Bindable Readline Commands1507355
+Node: Commands For Moving1508407
+Node: Commands For History1509265
+Node: Commands For Text1512660
+Node: Commands For Killing1515383
+Node: Numeric Arguments1517523
+Node: Commands For Completion1518659
+Node: Keyboard Macros1520625
+Node: Miscellaneous Commands1521193
+Node: Readline vi Mode1525041
+Node: Using History Interactively1525951
+Node: History Interaction1526466
+Node: Event Designators1527888
+Node: Word Designators1529025
+Node: Modifiers1530660
+Node: In Memoriam1531881
+Node: Formatting Documentation1532764
+Ref: Formatting Documentation-Footnote-11536144
+Node: Installing GDB1536242
+Node: Requirements1536814
+Ref: Expat1537383
+Node: Running Configure1540003
+Node: Separate Objdir1543797
+Node: Config Names1546782
+Node: Configure Options1548261
+Node: System-wide configuration1550632
+Node: System-wide Configuration Scripts1552592
+Node: Maintenance Commands1553776
+Ref: maint info breakpoints1555431
+Node: Remote Protocol1575329
+Node: Overview1576021
+Ref: Binary Data1578566
+Node: Packets1581091
+Ref: thread-id syntax1581991
+Ref: extended mode1583436
+Ref: ? packet1583694
+Ref: bc1585160
+Ref: bs1585370
+Ref: read registers packet1586987
+Ref: cycle step packet1588842
+Ref: write register packet1591553
+Ref: step with signal packet1592532
+Ref: vCont packet1594008
+Ref: vCtrlC packet1597241
+Ref: vKill packet1599659
+Ref: X packet1600589
+Ref: insert breakpoint or watchpoint packet1600958
+Node: Stop Reply Packets1605287
+Ref: swbreak stop reason1608538
+Ref: thread create event1612135
+Ref: thread exit event1613338
+Node: General Query Packets1615547
+Ref: qCRC packet1618377
+Ref: QNonStop1626200
+Ref: QCatchSyscalls1626876
+Ref: QPassSignals1628413
+Ref: QProgramSignals1629620
+Ref: QThreadEvents1631187
+Ref: qSearch memory1633205
+Ref: QStartNoAckMode1633713
+Ref: qSupported1634244
+Ref: multiprocess extensions1650251
+Ref: install tracepoint in tracing1652281
+Ref: qXfer read1656804
+Ref: qXfer auxiliary vector read1658411
+Ref: qXfer btrace read1658759
+Ref: qXfer btrace-conf read1659824
+Ref: qXfer executable filename read1660175
+Ref: qXfer target description read1660790
+Ref: qXfer library list read1661224
+Ref: qXfer svr4 library list read1661880
+Ref: qXfer memory map read1663733
+Ref: qXfer sdata read1664120
+Ref: qXfer siginfo read1664586
+Ref: qXfer spu read1664983
+Ref: qXfer threads read1665507
+Ref: qXfer traceframe info read1665910
+Ref: qXfer unwind info block1666328
+Ref: qXfer fdpic loadmap read1666562
+Ref: qXfer osdata read1666978
+Ref: qXfer write1667132
+Ref: qXfer siginfo write1668224
+Ref: qXfer spu write1668621
+Ref: General Query Packets-Footnote-11671477
+Node: Architecture-Specific Protocol Details1671804
+Node: ARM-Specific Protocol Details1672313
+Node: ARM Breakpoint Kinds1672561
+Node: MIPS-Specific Protocol Details1672892
+Node: MIPS Register packet Format1673175
+Node: MIPS Breakpoint Kinds1674102
+Node: Tracepoint Packets1674520
+Ref: QTEnable1683834
+Ref: QTDisable1684030
+Ref: qTfSTM1689567
+Ref: qTsSTM1689567
+Ref: qTSTMat1690644
+Ref: QTBuffer-size1691795
+Node: Host I/O Packets1693768
+Node: Interrupts1699348
+Ref: interrupting remote targets1699492
+Node: Notification Packets1701660
+Node: Remote Non-Stop1707085
+Node: Packet Acknowledgment1710201
+Node: Examples1712316
+Node: File-I/O Remote Protocol Extension1712910
+Node: File-I/O Overview1713372
+Node: Protocol Basics1715571
+Node: The F Request Packet1717800
+Node: The F Reply Packet1718701
+Node: The Ctrl-C Message1719619
+Node: Console I/O1721245
+Node: List of Supported Calls1722461
+Node: open1722823
+Node: close1725331
+Node: read1725714
+Node: write1726323
+Node: lseek1727094
+Node: rename1727978
+Node: unlink1729385
+Node: stat/fstat1730332
+Node: gettimeofday1731225
+Node: isatty1731661
+Node: system1732257
+Node: Protocol-specific Representation of Datatypes1733799
+Node: Integral Datatypes1734176
+Node: Pointer Values1734983
+Node: Memory Transfer1735687
+Node: struct stat1736307
+Node: struct timeval1738509
+Node: Constants1739026
+Node: Open Flags1739475
+Node: mode_t Values1739816
+Node: Errno Values1740308
+Node: Lseek Flags1741118
+Node: Limits1741303
+Node: File-I/O Examples1741663
+Node: Library List Format1742751
+Node: Library List Format for SVR4 Targets1745533
+Node: Memory Map Format1748000
+Node: Thread List Format1750575
+Node: Traceframe Info Format1751488
+Node: Branch Trace Format1753174
+Node: Branch Trace Configuration Format1754874
+Node: Agent Expressions1756048
+Node: General Bytecode Design1758869
+Node: Bytecode Descriptions1763663
+Node: Using Agent Expressions1776966
+Node: Varying Target Capabilities1778943
+Node: Rationale1780104
+Node: Target Descriptions1787493
+Node: Retrieving Descriptions1789436
+Node: Target Description Format1790521
+Node: Predefined Target Types1801854
+Node: Enum Target Types1803282
+Node: Standard Target Features1804277
+Node: AArch64 Features1806214
+Node: ARC Features1806637
+Node: ARM Features1808698
+Node: i386 Features1810212
+Node: MicroBlaze Features1812427
+Node: MIPS Features1813004
+Node: M68K Features1814195
+Node: NDS32 Features1814856
+Node: Nios II Features1815880
+Node: PowerPC Features1816279
+Node: S/390 and System z Features1817604
+Node: Sparc Features1819430
+Node: TIC6x Features1820335
+Node: Operating System Information1820884
+Node: Process list1821719
+Node: Trace File Format1822782
+Node: Index Section Format1825996
+Node: Man Pages1833922
+Node: gdb man1834328
+Node: gdbserver man1840364
+Node: gcore man1847561
+Node: gdbinit man1848218
+Node: Copying1849101
+Node: GNU Free Documentation License1886662
+Node: Concept Index1911809
+Node: Command and Variable Index2045955
 
 End Tag Table
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-1 ./gdb/doc/gdb.info-1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-1	2017-05-02 02:10:18.000000000 +0000
+++ ./gdb/doc/gdb.info-1	2017-05-09 02:10:56.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -45,7 +45,7 @@ Debugging with GDB
 This file describes GDB, the GNU symbolic debugger.
 
    This is the Tenth Edition, for GDB (GDB) Version
-7.99.90.20170502-git.
+7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -497,7 +497,7 @@ Let us use GDB to try to see what is goi
      There is absolutely no warranty for GDB; type "show warranty"
       for details.
 
-     GDB 7.99.90.20170502-git, Copyright 1999 Free Software Foundation, Inc...
+     GDB 7.99.91.20170509-git, Copyright 1999 Free Software Foundation, Inc...
      (gdb)
 
 GDB reads only enough symbol data to know where to find the rest when
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-2 ./gdb/doc/gdb.info-2
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-2	2017-05-02 02:10:20.000000000 +0000
+++ ./gdb/doc/gdb.info-2	2017-05-09 02:10:58.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-3 ./gdb/doc/gdb.info-3
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-3	2017-05-02 02:10:22.000000000 +0000
+++ ./gdb/doc/gdb.info-3	2017-05-09 02:11:00.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-4 ./gdb/doc/gdb.info-4
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-4	2017-05-02 02:10:24.000000000 +0000
+++ ./gdb/doc/gdb.info-4	2017-05-09 02:11:03.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -2060,13 +2060,6 @@ Replay::) are available in the 'gdb' mod
 
    A 'gdb.Record' object has the following attributes:
 
- -- Variable: Record.ptid
-     ID of the thread associated with this object as a tuple of three
-     integers.  The first is the Process ID (PID); the second is the
-     Lightweight Process ID (LWPID), and the third is the Thread ID
-     (TID). Either the LWPID or TID may be 0, which indicates that the
-     operating system does not use that identifier.
-
  -- Variable: Record.method
      A string with the current recording method, e.g. 'full' or
      'btrace'.
@@ -2098,84 +2091,86 @@ Replay::) are available in the 'gdb' mod
  -- Function: Record.goto (instruction)
      Move the replay position to the given INSTRUCTION.
 
-   The attributes and methods of instruction objects depend on the
-current recording method.  Currently, only btrace instructions are
-supported.
+   The common 'gdb.Instruction' class that recording method specific
+instruction objects inherit from, has the following attributes:
 
-   A 'gdb.BtraceInstruction' object has the following attributes:
+ -- Variable: Instruction.pc
+     An integer representing this instruction's address.
 
- -- Variable: BtraceInstruction.number
-     An integer identifying this instruction.  NUMBER corresponds to the
-     numbers seen in 'record instruction-history' (*note Process Record
-     and Replay::).
+ -- Variable: Instruction.data
+     A buffer with the raw instruction data.  In Python 3, the return
+     value is a 'memoryview' object.
 
- -- Variable: BtraceInstruction.error
-     An integer identifying the error code for gaps in the history.
-     'None' for regular instructions.
+ -- Variable: Instruction.decoded
+     A human readable string with the disassembled instruction.
 
- -- Variable: BtraceInstruction.sal
-     A 'gdb.Symtab_and_line' object representing the associated symtab
-     and line of this instruction.  May be 'None' if the instruction is
-     a gap.
+ -- Variable: Instruction.size
+     The size of the instruction in bytes.
 
- -- Variable: BtraceInstruction.pc
-     An integer representing this instruction's address.  May be 'None'
-     if the instruction is a gap or the debug symbols could not be read.
-
- -- Variable: BtraceInstruction.data
-     A buffer with the raw instruction data.  May be 'None' if the
-     instruction is a gap.  In Python 3, the return value is a
-     'memoryview' object.
+   Additionally 'gdb.RecordInstruction' has the following attributes:
 
- -- Variable: BtraceInstruction.decoded
-     A human readable string with the disassembled instruction.
-     Contains the error message for gaps.
+ -- Variable: RecordInstruction.number
+     An integer identifying this instruction.  'number' corresponds to
+     the numbers seen in 'record instruction-history' (*note Process
+     Record and Replay::).
 
- -- Variable: BtraceInstruction.size
-     The size of the instruction in bytes.  Will be 'None' if the
-     instruction is a gap.
+ -- Variable: RecordInstruction.sal
+     A 'gdb.Symtab_and_line' object representing the associated symtab
+     and line of this instruction.  May be 'None' if no debug
+     information is available.
 
- -- Variable: BtraceInstruction.is_speculative
+ -- Variable: RecordInstruction.is_speculative
      A boolean indicating whether the instruction was executed
-     speculatively.  Will be 'None' for gaps.
+     speculatively.
 
-   The attributes and methods of function call objects depend on the
-current recording format.  Currently, only btrace function calls are
-supported.
+   If an error occured during recording or decoding a recording, this
+error is represented by a 'gdb.RecordGap' object in the instruction
+list.  It has the following attributes:
 
-   A 'gdb.BtraceFunctionCall' object has the following attributes:
+ -- Variable: RecordGap.number
+     An integer identifying this gap.  'number' corresponds to the
+     numbers seen in 'record instruction-history' (*note Process Record
+     and Replay::).
 
- -- Variable: BtraceFunctionCall.number
-     An integer identifying this function call.  NUMBER corresponds to
-     the numbers seen in 'record function-call-history' (*note Process
-     Record and Replay::).
+ -- Variable: RecordGap.error_code
+     A numerical representation of the reason for the gap.  The value is
+     specific to the current recording method.
+
+ -- Variable: RecordGap.error_string
+     A human readable string with the reason for the gap.
 
- -- Variable: BtraceFunctionCall.symbol
+   A 'gdb.RecordFunctionSegment' object has the following attributes:
+
+ -- Variable: RecordFunctionSegment.number
+     An integer identifying this function segment.  'number' corresponds
+     to the numbers seen in 'record function-call-history' (*note
+     Process Record and Replay::).
+
+ -- Variable: RecordFunctionSegment.symbol
      A 'gdb.Symbol' object representing the associated symbol.  May be
-     'None' if the function call is a gap or the debug symbols could not
-     be read.
+     'None' if no debug information is available.
 
- -- Variable: BtraceFunctionCall.level
+ -- Variable: RecordFunctionSegment.level
      An integer representing the function call's stack level.  May be
      'None' if the function call is a gap.
 
- -- Variable: BtraceFunctionCall.instructions
-     A list of 'gdb.BtraceInstruction' objects associated with this
-     function call.
+ -- Variable: RecordFunctionSegment.instructions
+     A list of 'gdb.RecordInstruction' or 'gdb.RecordGap' objects
+     associated with this function call.
 
- -- Variable: BtraceFunctionCall.up
-     A 'gdb.BtraceFunctionCall' object representing the caller's
+ -- Variable: RecordFunctionSegment.up
+     A 'gdb.RecordFunctionSegment' object representing the caller's
      function segment.  If the call has not been recorded, this will be
      the function segment to which control returns.  If neither the call
      nor the return have been recorded, this will be 'None'.
 
- -- Variable: BtraceFunctionCall.prev_sibling
-     A 'gdb.BtraceFunctionCall' object representing the previous segment
-     of this function call.  May be 'None'.
+ -- Variable: RecordFunctionSegment.prev
+     A 'gdb.RecordFunctionSegment' object representing the previous
+     segment of this function call.  May be 'None'.
 
- -- Variable: BtraceFunctionCall.next_sibling
-     A 'gdb.BtraceFunctionCall' object representing the next segment of
-     this function call.  May be 'None'.
+ -- Variable: RecordFunctionSegment.next
+     A 'gdb.RecordFunctionSegment' object representing the next segment
+     of this function call.  May be 'None'.
 
    The following example demonstrates the usage of these objects and
 functions to create a function that will rewind a record to the last
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-5 ./gdb/doc/gdb.info-5
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-5	2017-05-02 02:10:27.000000000 +0000
+++ ./gdb/doc/gdb.info-5	2017-05-09 02:11:05.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-6 ./gdb/doc/gdb.info-6
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-6	2017-05-02 02:10:29.000000000 +0000
+++ ./gdb/doc/gdb.info-6	2017-05-09 02:11:07.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -918,7 +918,7 @@ and TeX (or 'texi2roff') to typeset the 
 
    GDB includes an already formatted copy of the on-line Info version of
 this manual in the 'gdb' subdirectory.  The main Info file is
-'gdb-7.99.90.20170502-git/gdb/gdb.info', and it refers to subordinate
+'gdb-7.99.91.20170509-git/gdb/gdb.info', and it refers to subordinate
 files matching 'gdb.info*' in the same directory.  If necessary, you can
 print out these files, or read them with any editor; but they are easier
 to read using the 'info' subsystem in GNU Emacs or the standalone 'info'
@@ -928,8 +928,8 @@ program, available as part of the GNU Te
 Info formatting programs, such as 'texinfo-format-buffer' or 'makeinfo'.
 
    If you have 'makeinfo' installed, and are in the top level GDB source
-directory ('gdb-7.99.90.20170502-git', in the case of version
-7.99.90.20170502-git), you can make the Info file by typing:
+directory ('gdb-7.99.91.20170509-git', in the case of version
+7.99.91.20170509-git), you can make the Info file by typing:
 
      cd gdb
      make gdb.info
@@ -954,7 +954,7 @@ On its own, TeX cannot either read or ty
 
    If you have TeX and a DVI printer program installed, you can typeset
 and print this manual.  First switch to the 'gdb' subdirectory of the
-main source directory (for example, to 'gdb-7.99.90.20170502-git/gdb')
+main source directory (for example, to 'gdb-7.99.91.20170509-git/gdb')
 and type:
 
      make gdb.dvi
@@ -963,8 +963,8 @@ and type:
 
    ---------- Footnotes ----------
 
-   (1) In 'gdb-7.99.90.20170502-git/gdb/refcard.ps' of the version
-7.99.90.20170502-git release.
+   (1) In 'gdb-7.99.91.20170509-git/gdb/refcard.ps' of the version
+7.99.91.20170509-git release.
 
 
 File: gdb.info,  Node: Installing GDB,  Next: Maintenance Commands,  Prev: Formatting Documentation,  Up: Top
@@ -1068,39 +1068,39 @@ preparing GDB for installation; you can 
 a single directory, whose name is usually composed by appending the
 version number to 'gdb'.
 
-   For example, the GDB version 7.99.90.20170502-git distribution is in
-the 'gdb-7.99.90.20170502-git' directory.  That directory contains:
+   For example, the GDB version 7.99.91.20170509-git distribution is in
+the 'gdb-7.99.91.20170509-git' directory.  That directory contains:
 
-'gdb-7.99.90.20170502-git/configure (and supporting files)'
+'gdb-7.99.91.20170509-git/configure (and supporting files)'
      script for configuring GDB and all its supporting libraries
 
-'gdb-7.99.90.20170502-git/gdb'
+'gdb-7.99.91.20170509-git/gdb'
      the source specific to GDB itself
 
-'gdb-7.99.90.20170502-git/bfd'
+'gdb-7.99.91.20170509-git/bfd'
      source for the Binary File Descriptor library
 
-'gdb-7.99.90.20170502-git/include'
+'gdb-7.99.91.20170509-git/include'
      GNU include files
 
-'gdb-7.99.90.20170502-git/libiberty'
+'gdb-7.99.91.20170509-git/libiberty'
      source for the '-liberty' free software library
 
-'gdb-7.99.90.20170502-git/opcodes'
+'gdb-7.99.91.20170509-git/opcodes'
      source for the library of opcode tables and disassemblers
 
-'gdb-7.99.90.20170502-git/readline'
+'gdb-7.99.91.20170509-git/readline'
      source for the GNU command-line interface
 
-'gdb-7.99.90.20170502-git/glob'
+'gdb-7.99.91.20170509-git/glob'
      source for the GNU filename pattern-matching subroutine
 
-'gdb-7.99.90.20170502-git/mmalloc'
+'gdb-7.99.91.20170509-git/mmalloc'
      source for the GNU memory-mapped malloc package
 
    The simplest way to configure and build GDB is to run 'configure'
 from the 'gdb-VERSION-NUMBER' source directory, which in this example is
-the 'gdb-7.99.90.20170502-git' directory.
+the 'gdb-7.99.91.20170509-git' directory.
 
    First switch to the 'gdb-VERSION-NUMBER' source directory if you are
 not already in it; then run 'configure'.  Pass the identifier for the
@@ -1108,7 +1108,7 @@ platform on which GDB will run as an arg
 
    For example:
 
-     cd gdb-7.99.90.20170502-git
+     cd gdb-7.99.91.20170509-git
      ./configure HOST
      make
 
@@ -1130,8 +1130,8 @@ need to run 'sh' on it explicitly:
 
    If you run 'configure' from a directory that contains source
 directories for multiple libraries or programs, such as the
-'gdb-7.99.90.20170502-git' source directory for version
-7.99.90.20170502-git, 'configure' creates configuration files for every
+'gdb-7.99.91.20170509-git' source directory for version
+7.99.91.20170509-git, 'configure' creates configuration files for every
 directory level underneath (unless you tell it not to, with the
 '--norecursion' option).
 
@@ -1171,13 +1171,13 @@ to specify a path to find 'configure' it
 directory.  If the path to 'configure' would be the same as the argument
 to '--srcdir', you can leave out the '--srcdir' option; it is assumed.)
 
-   For example, with version 7.99.90.20170502-git, you can build GDB in
+   For example, with version 7.99.91.20170509-git, you can build GDB in
 a separate directory for a Sun 4 like this:
 
-     cd gdb-7.99.90.20170502-git
+     cd gdb-7.99.91.20170509-git
      mkdir ../gdb-sun4
      cd ../gdb-sun4
-     ../gdb-7.99.90.20170502-git/configure sun4
+     ../gdb-7.99.91.20170509-git/configure sun4
      make
 
    When 'configure' builds a configuration using a remote source
@@ -1188,7 +1188,7 @@ the example, you'd find the Sun 4 librar
 
    Make sure that your path to the 'configure' script has just one
 instance of 'gdb' in it.  If your path to 'configure' looks like
-'../gdb-7.99.90.20170502-git/gdb/configure', you are configuring only
+'../gdb-7.99.91.20170509-git/gdb/configure', you are configuring only
 one subdirectory of GDB, not the whole package.  This leads to build
 errors about missing include files such as 'bfd/bfd.h'.
 
@@ -1204,8 +1204,8 @@ a configured directory--whatever directo
 
    The 'Makefile' that 'configure' generates in each source directory
 also runs recursively.  If you type 'make' in a source directory such as
-'gdb-7.99.90.20170502-git' (or in a separate configured directory
-configured with '--srcdir=DIRNAME/gdb-7.99.90.20170502-git'), you will
+'gdb-7.99.91.20170509-git' (or in a separate configured directory
+configured with '--srcdir=DIRNAME/gdb-7.99.91.20170509-git'), you will
 build all the required libraries, and then build GDB.
 
    When you have multiple hosts or targets configured in separate
@@ -1250,7 +1250,7 @@ you can use it to test your guesses on a
      Invalid configuration `i986v': machine `i986v' not recognized
 
 'config.sub' is also distributed in the GDB source directory
-('gdb-7.99.90.20170502-git', for version 7.99.90.20170502-git).
+('gdb-7.99.91.20170509-git', for version 7.99.91.20170509-git).
 
 
 File: gdb.info,  Node: Configure Options,  Next: System-wide configuration,  Prev: Config Names,  Up: Installing GDB
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-7 ./gdb/doc/gdb.info-7
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdb.info-7	2017-05-02 02:10:31.000000000 +0000
+++ ./gdb/doc/gdb.info-7	2017-05-09 02:11:08.000000000 +0000
@@ -21,7 +21,7 @@ END-INFO-DIR-ENTRY
    This file documents the GNU debugger GDB.
 
    This is the Tenth Edition, of 'Debugging with GDB: the GNU
-Source-Level Debugger' for GDB (GDB) Version 7.99.90.20170502-git.
+Source-Level Debugger' for GDB (GDB) Version 7.99.91.20170509-git.
 
    Copyright (C) 1988-2017 Free Software Foundation, Inc.
 
@@ -4918,36 +4918,6 @@ Command, Variable, and Function Index
                                                               (line 104)
 * breakpoints-invalid annotation:        Invalidation.        (line  14)
 * bt (backtrace):                        Backtrace.           (line  11)
-* BtraceFunctionCall.instructions:       Recordings In Python.
-                                                              (line 131)
-* BtraceFunctionCall.level:              Recordings In Python.
-                                                              (line 127)
-* BtraceFunctionCall.next_sibling:       Recordings In Python.
-                                                              (line 145)
-* BtraceFunctionCall.number:             Recordings In Python.
-                                                              (line 117)
-* BtraceFunctionCall.prev_sibling:       Recordings In Python.
-                                                              (line 141)
-* BtraceFunctionCall.symbol:             Recordings In Python.
-                                                              (line 122)
-* BtraceFunctionCall.up:                 Recordings In Python.
-                                                              (line 135)
-* BtraceInstruction.data:                Recordings In Python.
-                                                              (line  94)
-* BtraceInstruction.decoded:             Recordings In Python.
-                                                              (line  99)
-* BtraceInstruction.error:               Recordings In Python.
-                                                              (line  81)
-* BtraceInstruction.is_speculative:      Recordings In Python.
-                                                              (line 107)
-* BtraceInstruction.number:              Recordings In Python.
-                                                              (line  76)
-* BtraceInstruction.pc:                  Recordings In Python.
-                                                              (line  90)
-* BtraceInstruction.sal:                 Recordings In Python.
-                                                              (line  85)
-* BtraceInstruction.size:                Recordings In Python.
-                                                              (line 103)
 * c (continue):                          Continuing and Stepping.
                                                               (line  16)
 * c (SingleKey TUI key):                 TUI Single Key Mode. (line  10)
@@ -5702,6 +5672,14 @@ Command, Variable, and Function Index
                                                               (line  18)
 * inspect:                               Data.                (line   6)
 * instantiate on type_printer:           Type Printing API.   (line  22)
+* Instruction.data:                      Recordings In Python.
+                                                              (line  69)
+* Instruction.decoded:                   Recordings In Python.
+                                                              (line  73)
+* Instruction.pc:                        Recordings In Python.
+                                                              (line  66)
+* Instruction.size:                      Recordings In Python.
+                                                              (line  76)
 * interpreter-exec:                      Interpreters.        (line  36)
 * interrupt:                             Background Execution.
                                                               (line  59)
@@ -6245,23 +6223,47 @@ Command, Variable, and Function Index
 * record stop:                           Process Record and Replay.
                                                               (line 100)
 * Record.begin:                          Recordings In Python.
-                                                              (line  47)
+                                                              (line  40)
 * Record.end:                            Recordings In Python.
-                                                              (line  51)
+                                                              (line  44)
 * Record.format:                         Recordings In Python.
-                                                              (line  43)
+                                                              (line  36)
 * Record.function_call_history:          Recordings In Python.
-                                                              (line  62)
+                                                              (line  55)
 * Record.goto:                           Recordings In Python.
-                                                              (line  67)
+                                                              (line  60)
 * Record.instruction_history:            Recordings In Python.
-                                                              (line  59)
+                                                              (line  52)
 * Record.method:                         Recordings In Python.
-                                                              (line  39)
-* Record.ptid:                           Recordings In Python.
                                                               (line  32)
 * Record.replay_position:                Recordings In Python.
-                                                              (line  55)
+                                                              (line  48)
+* RecordFunctionSegment.instructions:    Recordings In Python.
+                                                              (line 126)
+* RecordFunctionSegment.level:           Recordings In Python.
+                                                              (line 122)
+* RecordFunctionSegment.next:            Recordings In Python.
+                                                              (line 140)
+* RecordFunctionSegment.number:          Recordings In Python.
+                                                              (line 113)
+* RecordFunctionSegment.prev:            Recordings In Python.
+                                                              (line 136)
+* RecordFunctionSegment.symbol:          Recordings In Python.
+                                                              (line 118)
+* RecordFunctionSegment.up:              Recordings In Python.
+                                                              (line 130)
+* RecordGap.error_code:                  Recordings In Python.
+                                                              (line 104)
+* RecordGap.error_string:                Recordings In Python.
+                                                              (line 108)
+* RecordGap.number:                      Recordings In Python.
+                                                              (line  99)
+* RecordInstruction.is_speculative:      Recordings In Python.
+                                                              (line  91)
+* RecordInstruction.number:              Recordings In Python.
+                                                              (line  81)
+* RecordInstruction.sal:                 Recordings In Python.
+                                                              (line  86)
 * redraw-current-line ():                Commands For Moving. (line  30)
 * refresh:                               TUI Commands.        (line  77)
 * register-breakpoint!:                  Breakpoints In Guile.
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdbinit.5 ./gdb/doc/gdbinit.5
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdbinit.5	2017-05-02 02:10:37.000000000 +0000
+++ ./gdb/doc/gdbinit.5	2017-05-09 02:11:12.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBINIT 5"
-.TH GDBINIT 5 "2017-05-02" "gdb-7.99.90.20170502-git" "GNU Development Tools"
+.TH GDBINIT 5 "2017-05-09" "gdb-7.99.91.20170509-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdbserver.1 ./gdb/doc/gdbserver.1
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/gdbserver.1	2017-05-02 02:10:36.000000000 +0000
+++ ./gdb/doc/gdbserver.1	2017-05-09 02:11:12.000000000 +0000
@@ -124,7 +124,7 @@
 .\" ========================================================================
 .\"
 .IX Title "GDBSERVER 1"
-.TH GDBSERVER 1 "2017-05-02" "gdb-7.99.90.20170502-git" "GNU Development Tools"
+.TH GDBSERVER 1 "2017-05-09" "gdb-7.99.91.20170509-git" "GNU Development Tools"
 .\" For nroff, turn off justification.  Always turn off hyphenation; it makes
 .\" way too many mistakes in technical documents.
 .if n .ad l
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/python.texi ./gdb/doc/python.texi
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/doc/python.texi	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/doc/python.texi	2017-05-09 02:06:13.000000000 +0000
@@ -3110,13 +3110,6 @@ currently active.  All record objects be
 
 A @code{gdb.Record} object has the following attributes:
 
-@defvar Record.ptid
-ID of the thread associated with this object as a tuple of three integers.  The
-first is the Process ID (PID); the second is the Lightweight Process ID (LWPID),
-and the third is the Thread ID (TID). Either the LWPID or TID may be 0, which
-indicates that the operating system does not use that identifier.
-@end defvar
-
 @defvar Record.method
 A string with the current recording method, e.g.@: @code{full} or
 @code{btrace}.
@@ -3156,96 +3149,99 @@ A @code{gdb.Record} object has the follo
 Move the replay position to the given @var{instruction}.
 @end defun
 
-The attributes and methods of instruction objects depend on the current
-recording method.  Currently, only btrace instructions are supported.
+The common @code{gdb.Instruction} class that recording method specific
+instruction objects inherit from, has the following attributes:
 
-A @code{gdb.BtraceInstruction} object has the following attributes:
+@defvar Instruction.pc
+An integer representing this instruction's address.
+@end defvar
 
-@defvar BtraceInstruction.number
-An integer identifying this instruction.  @var{number} corresponds to
-the numbers seen in @code{record instruction-history}
-(@pxref{Process Record and Replay}).
+@defvar Instruction.data
+A buffer with the raw instruction data.  In Python 3, the return value is a
+@code{memoryview} object.
 @end defvar
 
-@defvar BtraceInstruction.error
-An integer identifying the error code for gaps in the history.
-@code{None} for regular instructions.
+@defvar Instruction.decoded
+A human readable string with the disassembled instruction.
 @end defvar
 
-@defvar BtraceInstruction.sal
-A @code{gdb.Symtab_and_line} object representing the associated symtab
-and line of this instruction.  May be @code{None} if the instruction
-is a gap.
+@defvar Instruction.size
+The size of the instruction in bytes.
 @end defvar
 
-@defvar BtraceInstruction.pc
-An integer representing this instruction's address.  May be @code{None}
-if the instruction is a gap or the debug symbols could not be read.
+Additionally @code{gdb.RecordInstruction} has the following attributes:
+
+@defvar RecordInstruction.number
+An integer identifying this instruction.  @code{number} corresponds to
+the numbers seen in @code{record instruction-history}
+(@pxref{Process Record and Replay}).
 @end defvar
 
-@defvar BtraceInstruction.data
-A buffer with the raw instruction data.  May be @code{None} if the
-instruction is a gap.  In Python 3, the return value is a @code{memoryview}
-object.
+@defvar RecordInstruction.sal
+A @code{gdb.Symtab_and_line} object representing the associated symtab
+and line of this instruction.  May be @code{None} if no debug information is
+available.
 @end defvar
 
-@defvar BtraceInstruction.decoded
-A human readable string with the disassembled instruction.  Contains the
-error message for gaps.
+@defvar RecordInstruction.is_speculative
+A boolean indicating whether the instruction was executed speculatively.
 @end defvar
 
-@defvar BtraceInstruction.size
-The size of the instruction in bytes.  Will be @code{None} if the
-instruction is a gap.
+If an error occured during recording or decoding a recording, this error is
+represented by a @code{gdb.RecordGap} object in the instruction list.  It has
+the following attributes:
+
+@defvar RecordGap.number
+An integer identifying this gap.  @code{number} corresponds to the numbers seen
+in @code{record instruction-history} (@pxref{Process Record and Replay}).
 @end defvar
 
-@defvar BtraceInstruction.is_speculative
-A boolean indicating whether the instruction was executed
-speculatively.  Will be @code{None} for gaps.
+@defvar RecordGap.error_code
+A numerical representation of the reason for the gap.  The value is specific to
+the current recording method.
 @end defvar
 
-The attributes and methods of function call objects depend on the
-current recording format.  Currently, only btrace function calls are
-supported.
+@defvar RecordGap.error_string
+A human readable string with the reason for the gap.
+@end defvar
 
-A @code{gdb.BtraceFunctionCall} object has the following attributes:
+A @code{gdb.RecordFunctionSegment} object has the following attributes:
 
-@defvar BtraceFunctionCall.number
-An integer identifying this function call.  @var{number} corresponds to
+@defvar RecordFunctionSegment.number
+An integer identifying this function segment.  @code{number} corresponds to
 the numbers seen in @code{record function-call-history}
 (@pxref{Process Record and Replay}).
 @end defvar
 
-@defvar BtraceFunctionCall.symbol
+@defvar RecordFunctionSegment.symbol
 A @code{gdb.Symbol} object representing the associated symbol.  May be
-@code{None} if the function call is a gap or the debug symbols could
-not be read.
+@code{None} if no debug information is available.
 @end defvar
 
-@defvar BtraceFunctionCall.level
+@defvar RecordFunctionSegment.level
 An integer representing the function call's stack level.  May be
 @code{None} if the function call is a gap.
 @end defvar
 
-@defvar BtraceFunctionCall.instructions
-A list of @code{gdb.BtraceInstruction} objects associated with this function
-call.
+@defvar RecordFunctionSegment.instructions
+A list of @code{gdb.RecordInstruction} or @code{gdb.RecordGap} objects
+associated with this function call.
 @end defvar
 
-@defvar BtraceFunctionCall.up
-A @code{gdb.BtraceFunctionCall} object representing the caller's
+@defvar RecordFunctionSegment.up
+A @code{gdb.RecordFunctionSegment} object representing the caller's
 function segment.  If the call has not been recorded, this will be the
 function segment to which control returns.  If neither the call nor the
 return have been recorded, this will be @code{None}.
 @end defvar
 
-@defvar BtraceFunctionCall.prev_sibling
-A @code{gdb.BtraceFunctionCall} object representing the previous
+@defvar RecordFunctionSegment.prev
+A @code{gdb.RecordFunctionSegment} object representing the previous
 segment of this function call.  May be @code{None}.
 @end defvar
 
-@defvar BtraceFunctionCall.next_sibling
-A @code{gdb.BtraceFunctionCall} object representing the next segment of
+@defvar RecordFunctionSegment.next
+A @code{gdb.RecordFunctionSegment} object representing the next segment of
 this function call.  May be @code{None}.
 @end defvar
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/Makefile.in ./gdb/Makefile.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/Makefile.in	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/Makefile.in	2017-05-09 02:06:13.000000000 +0000
@@ -453,6 +453,7 @@ SUBDIR_PYTHON_OBS = \
 	py-inferior.o \
 	py-infevents.o \
 	py-infthread.o \
+	py-instruction.o \
 	py-lazy-string.o \
 	py-linetable.o \
 	py-newobjfileevent.o \
@@ -496,6 +497,7 @@ SUBDIR_PYTHON_SRCS = \
 	python/py-inferior.c \
 	python/py-infevents.c \
 	python/py-infthread.c \
+	python/py-instruction.c \
 	python/py-lazy-string.c \
 	python/py-linetable.c \
 	python/py-newobjfileevent.c \
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/NEWS ./gdb/NEWS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/NEWS	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/NEWS	2017-05-09 02:06:13.000000000 +0000
@@ -1,7 +1,7 @@
 		What has changed in GDB?
 	     (Organized release by release)
 
-*** Changes since GDB 7.12
+*** Changes in GDB 8.0
 
 * GDB now supports access to the PKU register on GNU/Linux. The register is
   added by the Memory Protection Keys for Userspace feature which will be
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/po/gdb.pot ./gdb/po/gdb.pot
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/po/gdb.pot	2017-05-02 02:10:07.000000000 +0000
+++ ./gdb/po/gdb.pot	2017-05-09 02:10:45.000000000 +0000
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2017-05-02 02:10+0000\n"
+"POT-Creation-Date: 2017-05-09 02:10+0000\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -4639,7 +4639,7 @@ msgstr ""
 msgid "Recorded trace may be incomplete at instruction %u (pc = %s)."
 msgstr ""
 
-#: btrace.c:1148 btrace.c:2956
+#: btrace.c:1148 btrace.c:2962
 #, possible-c-format
 msgid "Failed to synchronize onto the Intel Processor Trace stream: %s."
 msgstr ""
@@ -4663,12 +4663,12 @@ msgid ""
 "<PRIx64>): %s."
 msgstr ""
 
-#: btrace.c:1326 btrace.c:1343 btrace.c:2990
+#: btrace.c:1326 btrace.c:1343 btrace.c:2996
 #, possible-c-format
 msgid "Failed to configure the Intel Processor Trace decoder: %s."
 msgstr ""
 
-#: btrace.c:1331 btrace.c:2995
+#: btrace.c:1331 btrace.c:3001
 msgid "Failed to allocate the Intel Processor Trace decoder."
 msgstr ""
 
@@ -4718,156 +4718,156 @@ msgstr ""
 msgid "overflow"
 msgstr ""
 
-#: btrace.c:1837
+#: btrace.c:1843
 msgid "Failed to read branch trace."
 msgstr ""
 
-#: btrace.c:1924
+#: btrace.c:1930
 #, possible-c-format
 msgid "Unsupported btrace version: \"%s\""
 msgstr ""
 
-#: btrace.c:1951
+#: btrace.c:1957
 msgid "Btrace format error."
 msgstr ""
 
-#: btrace.c:1974
+#: btrace.c:1980
 msgid "Bad raw data size."
 msgstr ""
 
-#: btrace.c:1990
+#: btrace.c:1996
 msgid "Bad hex encoding."
 msgstr ""
 
-#: btrace.c:2120
+#: btrace.c:2126
 msgid "btrace"
 msgstr ""
 
-#: btrace.c:2123
+#: btrace.c:2129
 msgid "Error parsing branch trace."
 msgstr ""
 
-#: btrace.c:2130
+#: btrace.c:2136
 msgid "Cannot process branch trace.  XML parsing is not supported."
 msgstr ""
 
-#: btrace.c:2215
+#: btrace.c:2221
 msgid "btrace-conf"
 msgstr ""
 
-#: btrace.c:2218
+#: btrace.c:2224
 msgid "Error parsing branch trace configuration."
 msgstr ""
 
-#: btrace.c:2222
+#: btrace.c:2228
 msgid "XML parsing is not supported."
 msgstr ""
 
-#: btrace.c:2276 btrace.c:2293 btrace.c:2558 btrace.c:2574 record-btrace.c:125
+#: btrace.c:2282 btrace.c:2299 btrace.c:2564 btrace.c:2580 record-btrace.c:125
 #: record-btrace.c:1961 record-btrace.c:2747
 msgid "No trace."
 msgstr ""
 
-#: btrace.c:2951
+#: btrace.c:2957
 #, possible-c-format
 msgid "Error at trace offset 0x%<PRIx64>: %s."
 msgstr ""
 
-#: btrace.c:3133 btrace.c:3155 record.c:437 record.c:457
+#: btrace.c:3139 btrace.c:3161 record.c:437 record.c:457
 #, possible-c-format
 msgid "Expected positive number, got: %s."
 msgstr ""
 
-#: btrace.c:3137
+#: btrace.c:3143
 msgid "Number too big."
 msgstr ""
 
-#: btrace.c:3166 record.c:407 record.c:419 record.c:468
+#: btrace.c:3172 record.c:407 record.c:419 record.c:468
 #, possible-c-format
 msgid "Junk after argument: %s."
 msgstr ""
 
-#: btrace.c:3180 btrace.c:3287 btrace.c:3309 btrace.c:3373 record-btrace.c:118
+#: btrace.c:3186 btrace.c:3293 btrace.c:3315 btrace.c:3379 record-btrace.c:118
 #: record-btrace.c:420 record-btrace.c:1270
 msgid "No thread."
 msgstr ""
 
-#: btrace.c:3188
+#: btrace.c:3194
 msgid "No trace.\n"
 msgstr ""
 
-#: btrace.c:3212
+#: btrace.c:3218
 #, possible-c-format
 msgid "'%u' is out of range."
 msgstr ""
 
-#: btrace.c:3283 btrace.c:3305 btrace.c:3369 record-btrace.c:2894
+#: btrace.c:3289 btrace.c:3311 btrace.c:3375 record-btrace.c:2894
 #: record-btrace.c:2916 record-btrace.c:2938
 msgid "Invalid argument."
 msgstr ""
 
-#: btrace.c:3379
+#: btrace.c:3385
 msgid "No btrace configuration."
 msgstr ""
 
-#: btrace.c:3381
+#: btrace.c:3387
 #, possible-c-format
 msgid "Format: %s.\n"
 msgstr ""
 
-#: btrace.c:3390 btrace.c:3406
+#: btrace.c:3396 btrace.c:3412
 #, possible-c-format
 msgid "Number of packets: %u.\n"
 msgstr ""
 
-#: btrace.c:3401
+#: btrace.c:3407
 #, possible-c-format
 msgid "Version: %u.%u.%u%s.\n"
 msgstr ""
 
-#: btrace.c:3422
+#: btrace.c:3428
 #, possible-c-format
 msgid "Skip PAD packets is %s.\n"
 msgstr ""
 
-#: btrace.c:3433
+#: btrace.c:3439
 msgid "Info about branch tracing data."
 msgstr ""
 
-#: btrace.c:3436
+#: btrace.c:3442
 msgid "Branch tracing maintenance commands."
 msgstr ""
 
-#: btrace.c:3440
+#: btrace.c:3446
 msgid "Set branch tracing specific variables."
 msgstr ""
 
-#: btrace.c:3445
+#: btrace.c:3451
 msgid "Set Intel Processor Trace specific variables."
 msgstr ""
 
-#: btrace.c:3450
+#: btrace.c:3456
 msgid "Show branch tracing specific variables."
 msgstr ""
 
-#: btrace.c:3455
+#: btrace.c:3461
 msgid "Show Intel Processor Trace specific variables."
 msgstr ""
 
-#: btrace.c:3461
+#: btrace.c:3467
 msgid "Set whether PAD packets should be skipped in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3462
+#: btrace.c:3468
 msgid ""
 "Show whether PAD packets should be skipped in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3463
+#: btrace.c:3469
 msgid "When enabled, PAD packets are ignored in the btrace packet history."
 msgstr ""
 
-#: btrace.c:3470
+#: btrace.c:3476
 msgid ""
 "Print the raw branch tracing data.\n"
 "With no argument, print ten more packets after the previous ten-line print.\n"
@@ -4879,13 +4879,13 @@ msgid ""
 "first.\n"
 msgstr ""
 
-#: btrace.c:3482
+#: btrace.c:3488
 msgid ""
 "Clears the branch tracing packet history.\n"
 "Discards the raw branch tracing data but not the execution history data.\n"
 msgstr ""
 
-#: btrace.c:3488
+#: btrace.c:3494
 msgid ""
 "Clears the branch tracing data.\n"
 "Discards the raw branch tracing data and the execution history data.\n"
@@ -13041,7 +13041,7 @@ msgstr ""
 msgid "Show the mode of Guile exception printing on error."
 msgstr ""
 
-#: guile/guile.c:810 python/python.c:1763
+#: guile/guile.c:810 python/python.c:1764
 msgid ""
 "none  == no stack or message will be printed.\n"
 "full == a message and a stack will be printed.\n"
@@ -20960,7 +20960,7 @@ msgstr ""
 msgid "Python not initialized"
 msgstr ""
 
-#: python/python.c:233 python/python.c:1856
+#: python/python.c:233 python/python.c:1857
 msgid "internal error: Unhandled Python exception"
 msgstr ""
 
@@ -21003,7 +21003,7 @@ msgstr ""
 msgid "Python scripting is not supported in this copy of GDB."
 msgstr ""
 
-#: python/python.c:1704
+#: python/python.c:1705
 msgid ""
 "Start an interactive Python prompt.\n"
 "\n"
@@ -21018,7 +21018,7 @@ msgid ""
 "    5\n"
 msgstr ""
 
-#: python/python.c:1718
+#: python/python.c:1719
 msgid ""
 "Start a Python interactive prompt.\n"
 "\n"
@@ -21026,7 +21026,7 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: python/python.c:1729
+#: python/python.c:1730
 msgid ""
 "Evaluate a Python command.\n"
 "\n"
@@ -21039,7 +21039,7 @@ msgid ""
 "the end of the command."
 msgstr ""
 
-#: python/python.c:1740
+#: python/python.c:1741
 msgid ""
 "Evaluate a Python command.\n"
 "\n"
@@ -21047,21 +21047,21 @@ msgid ""
 "This command is only a placeholder."
 msgstr ""
 
-#: python/python.c:1751 python/python.c:1756
+#: python/python.c:1752 python/python.c:1757
 msgid "Prefix command for python preference settings."
 msgstr ""
 
-#: python/python.c:1761
+#: python/python.c:1762
 msgid "Set mode for Python stack dump on error."
 msgstr ""
 
-#: python/python.c:1762
+#: python/python.c:1763
 msgid "Show the mode of Python stack printing on error."
 msgstr ""
 
 #. This is passed in one call to warning so that blank lines aren't
 #. inserted between each line of text.
-#: python/python.c:1829
+#: python/python.c:1830
 #, possible-c-format
 msgid ""
 "\n"
@@ -21167,9 +21167,13 @@ msgstr ""
 msgid "FrameDecorator.function: expecting a String, integer or None."
 msgstr ""
 
-#: python/py-record.c:70 python/py-record.c:86 python/py-record.c:99
-#: python/py-record.c:112 python/py-record.c:125 python/py-record.c:138
-#: python/py-record.c:151 python/py-record.c:164
+#: python/py-record.c:79 python/py-record.c:95 python/py-record.c:108
+#: python/py-record.c:121 python/py-record.c:134 python/py-record.c:147
+#: python/py-record.c:160 python/py-record.c:173 python/py-record.c:204
+#: python/py-record.c:217 python/py-record.c:230 python/py-record.c:243
+#: python/py-record.c:256 python/py-record.c:269 python/py-record.c:300
+#: python/py-record.c:313 python/py-record.c:326 python/py-record.c:339
+#: python/py-record.c:352 python/py-record.c:365 python/py-instruction.c:40
 msgid "Not implemented."
 msgstr ""
 
@@ -21185,33 +21189,49 @@ msgstr ""
 msgid "Symbol Table and Line is invalid."
 msgstr ""
 
-#: python/py-record-btrace.c:42 python/py-record-btrace.c:52
-#: python/py-record-btrace.c:876
-msgid "Empty branch trace."
+#: python/py-record-btrace.c:79
+msgid "Must be gdb.RecordInstruction"
 msgstr ""
 
-#: python/py-record-btrace.c:45 record-btrace.c:2787
+#: python/py-record-btrace.c:88 python/py-record-btrace.c:94
+#: record-btrace.c:2787
 msgid "No such instruction."
 msgstr ""
 
-#: python/py-record-btrace.c:55
-msgid "No such call segment."
+#: python/py-record-btrace.c:101
+msgid "Not a valid instruction."
+msgstr ""
+
+#: python/py-record-btrace.c:122
+msgid "Must be gdb.RecordFunctionSegment"
+msgstr ""
+
+#: python/py-record-btrace.c:131 python/py-record-btrace.c:137
+msgid "No such function segment."
+msgstr ""
+
+#: python/py-record-btrace.c:144
+msgid "Not a valid function segment."
 msgstr ""
 
-#: python/py-record-btrace.c:577
+#: python/py-record-btrace.c:471
 #, possible-c-format
 msgid "Index out of range: %zd."
 msgstr ""
 
-#: python/py-record-btrace.c:605
+#: python/py-record-btrace.c:503
 msgid "Index must be int or slice."
 msgstr ""
 
-#: python/py-record-btrace.c:662
+#: python/py-record-btrace.c:560
 msgid "Not in list."
 msgstr ""
 
-#: python/py-record-btrace.c:882
+#: python/py-record-btrace.c:781
+msgid "Empty branch trace."
+msgstr ""
+
+#: python/py-record-btrace.c:787
 msgid "Argument must be instruction."
 msgstr ""
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/PROBLEMS ./gdb/PROBLEMS
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/PROBLEMS	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/PROBLEMS	2017-05-09 02:06:13.000000000 +0000
@@ -1,5 +1,5 @@
 
-			Known problems in GDB 7.2.50
+			Known problems in GDB 7.99.91.DATE-git
 
 		See also: http://www.gnu.org/software/gdb/bugs/
 
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-instruction.c ./gdb/python/py-instruction.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-instruction.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/python/py-instruction.c	2017-05-09 02:06:13.000000000 +0000
@@ -0,0 +1,67 @@
+/* Python interface to instruction objects.
+
+   Copyright 2017 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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/>.  */
+
+#include "defs.h"
+#include "py-instruction.h"
+
+/* See py-instruction.h.  */
+
+PyTypeObject py_insn_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+};
+
+/* Python instruction object.  */
+
+typedef struct {
+  PyObject_HEAD
+} py_insn_obj;
+
+/* Getter function for gdb.Instruction attributes.  */
+
+static PyObject *
+py_insn_getter (PyObject *self, void *closure)
+{
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Instruction members.  */
+
+static gdb_PyGetSetDef py_insn_getset[] =
+{
+  { "pc", py_insn_getter, NULL, "instruction address", NULL},
+  { "data", py_insn_getter, NULL, "instruction memory", NULL},
+  { "decoded", py_insn_getter, NULL, "decoded instruction", NULL},
+  { "size", py_insn_getter, NULL, "instruction size in bytes", NULL},
+  {NULL}
+};
+
+/* Sets up the gdb.Instruction type.  */
+
+int
+gdbpy_initialize_instruction (void)
+{
+  py_insn_type.tp_new = PyType_GenericNew;
+  py_insn_type.tp_flags = Py_TPFLAGS_DEFAULT;
+  py_insn_type.tp_basicsize = sizeof (py_insn_obj);
+  py_insn_type.tp_name = "gdb.Instruction";
+  py_insn_type.tp_doc = "GDB instruction object";
+  py_insn_type.tp_getset = py_insn_getset;
+
+  return PyType_Ready (&py_insn_type);
+}
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-instruction.h ./gdb/python/py-instruction.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-instruction.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/python/py-instruction.h	2017-05-09 02:06:13.000000000 +0000
@@ -0,0 +1,30 @@
+/* Python interface to instruction objects.
+
+   Copyright 2017 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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/>.  */
+
+#ifndef GDB_PY_INSTRUCTION_H
+#define GDB_PY_INSTRUCTION_H
+
+#include "python-internal.h"
+
+/* Python type object for the abstract gdb.Instruction class.  This class
+   contains getters for four elements: "pc" (int), "data" (buffer), "decode"
+   (str) and "size" (int) that must be overriden by sub classes.  */
+extern PyTypeObject py_insn_type;
+
+#endif /* GDB_PY_INSTRUCTION_H */
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record-btrace.c ./gdb/python/py-record-btrace.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record-btrace.c	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/python/py-record-btrace.c	2017-05-09 02:06:13.000000000 +0000
@@ -22,6 +22,7 @@
 #include "gdbcmd.h"
 #include "gdbthread.h"
 #include "btrace.h"
+#include "py-record.h"
 #include "py-record-btrace.h"
 #include "disasm.h"
 
@@ -35,40 +36,6 @@
 
 #endif
 
-#define BTPY_REQUIRE_VALID_INSN(obj, iter)				\
-    do {								\
-      struct thread_info *tinfo = find_thread_ptid (obj->ptid);		\
-      if (tinfo == NULL || btrace_is_empty (tinfo))			\
-	return PyErr_Format (gdbpy_gdb_error, _("Empty branch trace."));\
-      if (0 == btrace_find_insn_by_number (&iter, &tinfo->btrace,	\
-					   obj->number))		\
-	return PyErr_Format (gdbpy_gdb_error, _("No such instruction."));\
-    } while (0)
-
-#define BTPY_REQUIRE_VALID_CALL(obj, iter)				\
-    do {								\
-      struct thread_info *tinfo = find_thread_ptid (obj->ptid);		\
-      if (tinfo == NULL || btrace_is_empty (tinfo))			\
-	return PyErr_Format (gdbpy_gdb_error, _("Empty branch trace."));\
-      if (0 == btrace_find_call_by_number (&iter, &tinfo->btrace,	\
-					   obj->number))		\
-	return PyErr_Format (gdbpy_gdb_error, _("No such call segment."));\
-    } while (0)
-
-/* This can either be a btrace instruction or a function call segment,
-   depending on the chosen type.  */
-
-typedef struct {
-  PyObject_HEAD
-
-  /* The thread this object belongs to.  */
-  ptid_t ptid;
-
-  /* Instruction number or function call segment number, depending on the type
-     of this object.  */
-  Py_ssize_t number;
-} btpy_object;
-
 /* Python object for btrace record lists.  */
 
 typedef struct {
@@ -86,59 +53,125 @@ typedef struct {
   /* Stride size.  */
   Py_ssize_t step;
 
-  /* Either &BTPY_CALL_TYPE or &BTPY_INSN_TYPE.  */
+  /* Either &BTPY_CALL_TYPE or &RECPY_INSN_TYPE.  */
   PyTypeObject* element_type;
 } btpy_list_object;
 
-/* Python type for btrace instructions.  */
-
-static PyTypeObject btpy_insn_type = {
-  PyVarObject_HEAD_INIT (NULL, 0)
-};
-
-/* Python type for btrace function-calls.  */
-
-static PyTypeObject btpy_call_type = {
-  PyVarObject_HEAD_INIT (NULL, 0)
-};
-
 /* Python type for btrace lists.  */
 
 static PyTypeObject btpy_list_type = {
   PyVarObject_HEAD_INIT (NULL, 0)
 };
 
-/* Create a new gdb.BtraceInstruction or gdb.BtraceFunctionCall object,
-   depending on TYPE.  */
+/* Returns either a btrace_insn for the given Python gdb.RecordInstruction
+   object or sets an appropriate Python exception and returns NULL.  */
 
-static PyObject *
-btpy_new (ptid_t ptid, Py_ssize_t number, PyTypeObject* type)
+static const btrace_insn *
+btrace_insn_from_recpy_insn (const PyObject * const pyobject)
 {
-  btpy_object * const obj = PyObject_New (btpy_object, type);
+  const btrace_insn *insn;
+  const recpy_element_object *obj;
+  thread_info *tinfo;
+  btrace_insn_iterator iter;
 
-  if (obj == NULL)
-    return NULL;
+  if (Py_TYPE (pyobject) != &recpy_insn_type)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("Must be gdb.RecordInstruction"));
+      return NULL;
+    }
 
-  obj->ptid = ptid;
-  obj->number = number;
+  obj = (const recpy_element_object *) pyobject;
+  tinfo = find_thread_ptid (obj->ptid);
 
-  return (PyObject *) obj;
+  if (tinfo == NULL || btrace_is_empty (tinfo))
+    {
+      PyErr_Format (gdbpy_gdb_error, _("No such instruction."));
+      return NULL;
+    }
+
+  if (btrace_find_insn_by_number (&iter, &tinfo->btrace, obj->number) == 0)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("No such instruction."));
+      return NULL;
+    }
+
+  insn = btrace_insn_get (&iter);
+  if (insn == NULL)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("Not a valid instruction."));
+      return NULL;
+    }
+
+  return insn;
 }
 
-/* Create a new gdb.BtraceInstruction object.  */
+/* Returns either a btrace_function for the given Python
+   gdb.RecordFunctionSegment object or sets an appropriate Python exception and
+   returns NULL.  */
 
-static PyObject *
-btpy_insn_new (ptid_t ptid, Py_ssize_t number)
+static const btrace_function *
+btrace_func_from_recpy_func (const PyObject * const pyobject)
 {
-  return btpy_new (ptid, number, &btpy_insn_type);
+  const btrace_function *func;
+  const recpy_element_object *obj;
+  thread_info *tinfo;
+  btrace_call_iterator iter;
+
+  if (Py_TYPE (pyobject) != &recpy_func_type)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("Must be gdb.RecordFunctionSegment"));
+      return NULL;
+    }
+
+  obj = (const recpy_element_object *) pyobject;
+  tinfo = find_thread_ptid (obj->ptid);
+
+  if (tinfo == NULL || btrace_is_empty (tinfo))
+    {
+      PyErr_Format (gdbpy_gdb_error, _("No such function segment."));
+      return NULL;
+    }
+
+  if (btrace_find_call_by_number (&iter, &tinfo->btrace, obj->number) == 0)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("No such function segment."));
+      return NULL;
+    }
+
+  func = btrace_call_get (&iter);
+  if (func == NULL)
+    {
+      PyErr_Format (gdbpy_gdb_error, _("Not a valid function segment."));
+      return NULL;
+    }
+
+  return func;
 }
 
-/* Create a new gdb.BtraceFunctionCall object.  */
+/* Looks at the recorded item with the number NUMBER and create a
+   gdb.RecordInstruction or gdb.RecordGap object for it accordingly.  */
 
 static PyObject *
-btpy_call_new (ptid_t ptid, Py_ssize_t number)
+btpy_insn_or_gap_new (const thread_info *tinfo, Py_ssize_t number)
 {
-  return btpy_new (ptid, number, &btpy_call_type);
+  btrace_insn_iterator iter;
+  int err_code;
+
+  btrace_find_insn_by_number (&iter, &tinfo->btrace, number);
+  err_code = btrace_insn_get_error (&iter);
+
+  if (err_code != 0)
+    {
+      const btrace_config *config;
+      const char *err_string;
+
+      config = btrace_conf (&tinfo->btrace);
+      err_string = btrace_decode_error (config->format, err_code);
+
+      return recpy_gap_new (err_code, err_string, number);
+    }
+
+  return recpy_insn_new (tinfo->ptid, RECORD_METHOD_BTRACE, number);
 }
 
 /* Create a new gdb.BtraceList object.  */
@@ -162,64 +195,17 @@ btpy_list_new (ptid_t ptid, Py_ssize_t f
   return (PyObject *) obj;
 }
 
-/* Implementation of BtraceInstruction.number [int] and
-   BtraceFunctionCall.number [int].  */
-
-static PyObject *
-btpy_number (PyObject *self, void *closure)
-{
-  const btpy_object * const obj = (btpy_object *) self;
-
-  return PyInt_FromSsize_t (obj->number);
-}
-
-/* Implementation of BtraceInstruction.__hash__ () -> int and
-   BtraceFunctionCall.__hash__ () -> int.  */
-
-static Py_hash_t
-btpy_hash (PyObject *self)
-{
-  const btpy_object * const obj = (btpy_object *) self;
-
-  return obj->number;
-}
-
-/* Implementation of BtraceInstruction.error [int].  Returns the
-   error code for gaps.  */
-
-static PyObject *
-btpy_insn_error (PyObject *self, void *closure)
-{
-  const btpy_object * const obj = (btpy_object *) self;
-  struct btrace_insn_iterator iter;
-  int error;
+/* Implementation of RecordInstruction.sal [gdb.Symtab_and_line] for btrace.
+   Returns the SAL associated with this instruction.  */
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  error = btrace_insn_get_error (&iter);
-
-  if (error == 0)
-    Py_RETURN_NONE;
-
-  return PyInt_FromLong (error);
-}
-
-/* Implementation of BtraceInstruction.sal [gdb.Symtab_and_line].
-   Return the SAL associated with this instruction.  */
-
-static PyObject *
-btpy_insn_sal (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_sal (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
   PyObject *result = NULL;
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   TRY
     {
@@ -234,59 +220,44 @@ btpy_insn_sal (PyObject *self, void *clo
   return result;
 }
 
-/* Implementation of BtraceInstruction.pc [int].  Returns
-   the instruction address.  */
+/* Implementation of RecordInstruction.pc [int] for btrace.
+   Returns the instruction address.  */
 
-static PyObject *
-btpy_insn_pc (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_pc (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
-
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
 
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   return gdb_py_long_from_ulongest (insn->pc);
 }
 
-/* Implementation of BtraceInstruction.size [int].  Returns
-   the instruction size.  */
+/* Implementation of RecordInstruction.size [int] for btrace.
+   Returns the instruction size.  */
 
-static PyObject *
-btpy_insn_size (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_size (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   return PyInt_FromLong (insn->size);
 }
 
-/* Implementation of BtraceInstruction.is_speculative [bool].
+/* Implementation of RecordInstruction.is_speculative [bool] for btrace.
    Returns if this instruction was executed speculatively.  */
 
-static PyObject *
-btpy_insn_is_speculative (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_is_speculative (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   if (insn->flags & BTRACE_INSN_FLAG_SPECULATIVE)
     Py_RETURN_TRUE;
@@ -294,23 +265,18 @@ btpy_insn_is_speculative (PyObject *self
     Py_RETURN_FALSE;
 }
 
-/* Implementation of BtraceInstruction.data [buffer].
+/* Implementation of RecordInstruction.data [buffer] for btrace.
    Returns raw instruction data.  */
 
-static PyObject *
-btpy_insn_data (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_data (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
   gdb_byte *buffer = NULL;
   PyObject *object;
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   TRY
     {
@@ -338,29 +304,17 @@ btpy_insn_data (PyObject *self, void *cl
 
 }
 
-/* Implementation of BtraceInstruction.decode [str].  Returns
-   the instruction as human readable string.  */
+/* Implementation of RecordInstruction.decoded [str] for btrace.
+   Returns the instruction as human readable string.  */
 
-static PyObject *
-btpy_insn_decode (PyObject *self, void *closure)
+PyObject *
+recpy_bt_insn_decoded (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_insn *insn;
-  struct btrace_insn_iterator iter;
+  const btrace_insn * const insn = btrace_insn_from_recpy_insn (self);
   string_file strfile;
 
-  BTPY_REQUIRE_VALID_INSN (obj, iter);
-
-  insn = btrace_insn_get (&iter);
   if (insn == NULL)
-    {
-      int error_code = btrace_insn_get_error (&iter);
-      const struct btrace_config *config;
-
-      config = btrace_conf (&find_thread_ptid (obj->ptid)->btrace);
-      return PyBytes_FromString (btrace_decode_error (config->format,
-						      error_code));
-    }
+    return NULL;
 
   TRY
     {
@@ -377,40 +331,32 @@ btpy_insn_decode (PyObject *self, void *
   return PyBytes_FromString (strfile.string ().c_str ());
 }
 
-/* Implementation of BtraceFunctionCall.level [int].  Returns the
-   call level.  */
+/* Implementation of RecordFunctionSegment.level [int] for btrace.
+   Returns the call level.  */
 
-static PyObject *
-btpy_call_level (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_level (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
-
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
+  thread_info *tinfo;
 
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
-  return PyInt_FromLong (iter.btinfo->level + func->level);
+  tinfo = find_thread_ptid (((recpy_element_object *) self)->ptid);
+  return PyInt_FromLong (tinfo->btrace.level + func->level);
 }
 
-/* Implementation of BtraceFunctionCall.symbol [gdb.Symbol].  Returns
-   the symbol associated with this function call.  */
+/* Implementation of RecordFunctionSegment.symbol [gdb.Symbol] for btrace.
+   Returns the symbol associated with this function call.  */
 
-static PyObject *
-btpy_call_symbol (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_symbol (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
-
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
 
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   if (func->sym == NULL)
     Py_RETURN_NONE;
@@ -418,22 +364,17 @@ btpy_call_symbol (PyObject *self, void *
   return symbol_to_symbol_object (func->sym);
 }
 
-/* Implementation of BtraceFunctionCall.instructions [list].
-   Return the list of instructions that belong to this function call.  */
+/* Implementation of RecordFunctionSegment.instructions [list] for btrace.
+   Returns the list of instructions that belong to this function call.  */
 
-static PyObject *
-btpy_call_instructions (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_instructions (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
   unsigned int len;
 
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
-
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   len = VEC_length (btrace_insn_s, func->insn);
 
@@ -441,111 +382,63 @@ btpy_call_instructions (PyObject *self, 
   if (len == 0)
     len = 1;
 
-  return btpy_list_new (obj->ptid, func->insn_offset, func->insn_offset + len,
-			1, &btpy_insn_type);
+  return btpy_list_new (((recpy_element_object *) self)->ptid,
+			func->insn_offset, func->insn_offset + len, 1,
+			&recpy_insn_type);
 }
 
-/* Implementation of BtraceFunctionCall.up [gdb.BtraceRecordCall].
-   Return the caller / returnee of this function.  */
+/* Implementation of RecordFunctionSegment.up [RecordFunctionSegment] for
+   btrace.  Returns the caller / returnee of this function.  */
 
-static PyObject *
-btpy_call_up (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_up (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
-
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
 
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   if (func->up == NULL)
     Py_RETURN_NONE;
 
-  return btpy_call_new (obj->ptid, func->up->number);
+  return recpy_func_new (((recpy_element_object *) self)->ptid,
+			 RECORD_METHOD_BTRACE, func->up->number);
 }
 
-/* Implementation of BtraceFunctionCall.prev_sibling [BtraceFunctionCall].
-   Return a previous segment of this function.  */
+/* Implementation of RecordFunctionSegment.prev [RecordFunctionSegment] for
+   btrace.  Returns a previous segment of this function.  */
 
-static PyObject *
-btpy_call_prev_sibling (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_prev (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
 
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
-
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   if (func->segment.prev == NULL)
     Py_RETURN_NONE;
 
-  return btpy_call_new (obj->ptid, func->segment.prev->number);
+  return recpy_func_new (((recpy_element_object *) self)->ptid,
+			 RECORD_METHOD_BTRACE, func->segment.prev->number);
 }
 
-/* Implementation of BtraceFunctionCall.next_sibling [BtraceFunctionCall].
-   Return a following segment of this function.  */
+/* Implementation of RecordFunctionSegment.next [RecordFunctionSegment] for
+   btrace.  Returns a following segment of this function.  */
 
-static PyObject *
-btpy_call_next_sibling (PyObject *self, void *closure)
+PyObject *
+recpy_bt_func_next (PyObject *self, void *closure)
 {
-  const btpy_object * const obj = (btpy_object *) self;
-  const struct btrace_function *func;
-  struct btrace_call_iterator iter;
-
-  BTPY_REQUIRE_VALID_CALL (obj, iter);
+  const btrace_function * const func = btrace_func_from_recpy_func (self);
 
-  func = btrace_call_get (&iter);
   if (func == NULL)
-    Py_RETURN_NONE;
+    return NULL;
 
   if (func->segment.next == NULL)
     Py_RETURN_NONE;
 
-  return btpy_call_new (obj->ptid, func->segment.next->number);
-}
-
-/* Python rich compare function to allow for equality and inequality checks
-   in Python.  */
-
-static PyObject *
-btpy_richcompare (PyObject *self, PyObject *other, int op)
-{
-  const btpy_object * const obj1 = (btpy_object *) self;
-  const btpy_object * const obj2 = (btpy_object *) other;
-
-  if (Py_TYPE (self) != Py_TYPE (other))
-    {
-      Py_INCREF (Py_NotImplemented);
-      return Py_NotImplemented;
-    }
-
-  switch (op)
-  {
-    case Py_EQ:
-      if (ptid_equal (obj1->ptid, obj2->ptid) && obj1->number == obj2->number)
-	Py_RETURN_TRUE;
-      else
-	Py_RETURN_FALSE;
-
-    case Py_NE:
-      if (!ptid_equal (obj1->ptid, obj2->ptid) || obj1->number != obj2->number)
-	Py_RETURN_TRUE;
-      else
-	Py_RETURN_FALSE;
-
-    default:
-      break;
-  }
-
-  Py_INCREF (Py_NotImplemented);
-  return Py_NotImplemented;
+  return recpy_func_new (((recpy_element_object *) self)->ptid,
+			 RECORD_METHOD_BTRACE, func->segment.next->number);
 }
 
 /* Implementation of BtraceList.__len__ (self) -> int.  */
@@ -572,13 +465,18 @@ btpy_list_item (PyObject *self, Py_ssize
 {
   const btpy_list_object * const obj = (btpy_list_object *) self;
   struct thread_info * const tinfo = find_thread_ptid (obj->ptid);
+  Py_ssize_t number;
 
   if (index < 0 || index >= btpy_list_length (self))
     return PyErr_Format (PyExc_IndexError, _("Index out of range: %zd."),
 			 index);
 
-  return btpy_new (obj->ptid, obj->first + (obj->step * index),
-		   obj->element_type);
+  number = obj->first + (obj->step * index);
+
+  if (obj->element_type == &recpy_insn_type)
+    return recpy_insn_new (obj->ptid, RECORD_METHOD_BTRACE, number);
+  else
+    return recpy_func_new (obj->ptid, RECORD_METHOD_BTRACE, number);
 }
 
 /* Implementation of BtraceList.__getitem__ (self, slice) -> BtraceList.  */
@@ -620,7 +518,7 @@ static LONGEST
 btpy_list_position (PyObject *self, PyObject *value)
 {
   const btpy_list_object * const list_obj = (btpy_list_object *) self;
-  const btpy_object * const obj = (btpy_object *) value;
+  const recpy_element_object * const obj = (const recpy_element_object *) value;
   Py_ssize_t index = obj->number;
 
   if (list_obj->element_type != Py_TYPE (value))
@@ -734,7 +632,8 @@ recpy_bt_method (PyObject *self, void *c
 PyObject *
 recpy_bt_format (PyObject *self, void *closure)
 {
-  const struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  const struct thread_info * const tinfo = find_thread_ptid (record->ptid);
   const struct btrace_config * config;
 
   if (tinfo == NULL)
@@ -754,7 +653,8 @@ recpy_bt_format (PyObject *self, void *c
 PyObject *
 recpy_bt_replay_position (PyObject *self, void *closure)
 {
-  const struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  const struct thread_info * const tinfo = find_thread_ptid (record->ptid);
 
   if (tinfo == NULL)
     Py_RETURN_NONE;
@@ -762,8 +662,8 @@ recpy_bt_replay_position (PyObject *self
   if (tinfo->btrace.replay == NULL)
     Py_RETURN_NONE;
 
-  return btpy_insn_new (inferior_ptid,
-			btrace_insn_number (tinfo->btrace.replay));
+  return btpy_insn_or_gap_new (tinfo,
+			       btrace_insn_number (tinfo->btrace.replay));
 }
 
 /* Implementation of
@@ -772,7 +672,8 @@ recpy_bt_replay_position (PyObject *self
 PyObject *
 recpy_bt_begin (PyObject *self, void *closure)
 {
-  struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  struct thread_info * const tinfo = find_thread_ptid (record->ptid);
   struct btrace_insn_iterator iterator;
 
   if (tinfo == NULL)
@@ -784,7 +685,7 @@ recpy_bt_begin (PyObject *self, void *cl
     Py_RETURN_NONE;
 
   btrace_insn_begin (&iterator, &tinfo->btrace);
-  return btpy_insn_new (inferior_ptid, btrace_insn_number (&iterator));
+  return btpy_insn_or_gap_new (tinfo, btrace_insn_number (&iterator));
 }
 
 /* Implementation of
@@ -793,7 +694,8 @@ recpy_bt_begin (PyObject *self, void *cl
 PyObject *
 recpy_bt_end (PyObject *self, void *closure)
 {
-  struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  struct thread_info * const tinfo = find_thread_ptid (record->ptid);
   struct btrace_insn_iterator iterator;
 
   if (tinfo == NULL)
@@ -805,7 +707,7 @@ recpy_bt_end (PyObject *self, void *clos
     Py_RETURN_NONE;
 
   btrace_insn_end (&iterator, &tinfo->btrace);
-  return btpy_insn_new (inferior_ptid, btrace_insn_number (&iterator));
+  return btpy_insn_or_gap_new (tinfo, btrace_insn_number (&iterator));
 }
 
 /* Implementation of
@@ -814,7 +716,8 @@ recpy_bt_end (PyObject *self, void *clos
 PyObject *
 recpy_bt_instruction_history (PyObject *self, void *closure)
 {
-  struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  struct thread_info * const tinfo = find_thread_ptid (record->ptid);
   struct btrace_insn_iterator iterator;
   unsigned long first = 0;
   unsigned long last = 0;
@@ -833,7 +736,7 @@ recpy_bt_instruction_history (PyObject *
    btrace_insn_end (&iterator, &tinfo->btrace);
    last = btrace_insn_number (&iterator);
 
-   return btpy_list_new (inferior_ptid, first, last, 1, &btpy_insn_type);
+   return btpy_list_new (record->ptid, first, last, 1, &recpy_insn_type);
 }
 
 /* Implementation of
@@ -842,26 +745,27 @@ recpy_bt_instruction_history (PyObject *
 PyObject *
 recpy_bt_function_call_history (PyObject *self, void *closure)
 {
-    struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
-    struct btrace_call_iterator iterator;
-    unsigned long first = 0;
-    unsigned long last = 0;
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  struct thread_info * const tinfo = find_thread_ptid (record->ptid);
+  struct btrace_call_iterator iterator;
+  unsigned long first = 0;
+  unsigned long last = 0;
 
-    if (tinfo == NULL)
-      Py_RETURN_NONE;
+  if (tinfo == NULL)
+    Py_RETURN_NONE;
 
-    btrace_fetch (tinfo);
+  btrace_fetch (tinfo);
 
-    if (btrace_is_empty (tinfo))
-      Py_RETURN_NONE;
+  if (btrace_is_empty (tinfo))
+    Py_RETURN_NONE;
 
-    btrace_call_begin (&iterator, &tinfo->btrace);
-    first = btrace_call_number (&iterator);
+  btrace_call_begin (&iterator, &tinfo->btrace);
+  first = btrace_call_number (&iterator);
 
-    btrace_call_end (&iterator, &tinfo->btrace);
-    last = btrace_call_number (&iterator);
+  btrace_call_end (&iterator, &tinfo->btrace);
+  last = btrace_call_number (&iterator);
 
-    return btpy_list_new (inferior_ptid, first, last, 1, &btpy_call_type);
+  return btpy_list_new (record->ptid, first, last, 1, &recpy_func_type);
 }
 
 /* Implementation of BtraceRecord.goto (self, BtraceInstruction) -> None.  */
@@ -869,8 +773,9 @@ recpy_bt_function_call_history (PyObject
 PyObject *
 recpy_bt_goto (PyObject *self, PyObject *args)
 {
-  struct thread_info * const tinfo = find_thread_ptid (inferior_ptid);
-  const btpy_object *obj;
+  const recpy_record_object * const record = (recpy_record_object *) self;
+  struct thread_info * const tinfo = find_thread_ptid (record->ptid);
+  const recpy_element_object *obj;
 
   if (tinfo == NULL || btrace_is_empty (tinfo))
 	return PyErr_Format (gdbpy_gdb_error, _("Empty branch trace."));
@@ -878,7 +783,7 @@ recpy_bt_goto (PyObject *self, PyObject 
   if (!PyArg_ParseTuple (args, "O", &obj))
     return NULL;
 
-  if (Py_TYPE (obj) != &btpy_insn_type)
+  if (Py_TYPE (obj) != &recpy_insn_type)
     return PyErr_Format (PyExc_TypeError, _("Argument must be instruction."));
 
   TRY
@@ -901,40 +806,6 @@ recpy_bt_goto (PyObject *self, PyObject 
   Py_RETURN_NONE;
 }
 
-/* BtraceInstruction members.  */
-
-struct gdb_PyGetSetDef btpy_insn_getset[] =
-{
-  { "number", btpy_number, NULL, "instruction number", NULL},
-  { "error", btpy_insn_error, NULL, "error number for gaps", NULL},
-  { "sal", btpy_insn_sal, NULL, "associated symbol and line", NULL},
-  { "pc", btpy_insn_pc, NULL, "instruction address", NULL},
-  { "data", btpy_insn_data, NULL, "raw instruction data", NULL},
-  { "decoded", btpy_insn_decode, NULL, "decoded instruction or error message \
-if the instruction is a gap", NULL},
-  { "size", btpy_insn_size, NULL, "instruction size in byte", NULL},
-  { "is_speculative", btpy_insn_is_speculative, NULL, "if the instruction was \
-executed speculatively", NULL},
-  {NULL}
-};
-
-/* BtraceFunctionCall members.  */
-
-static gdb_PyGetSetDef btpy_call_getset[] =
-{
-  { "number", btpy_number, NULL, "function call number", NULL},
-  { "level", btpy_call_level, NULL, "call stack level", NULL},
-  { "symbol", btpy_call_symbol, NULL, "associated line and symbol", NULL},
-  { "instructions", btpy_call_instructions, NULL, "list of instructions in \
-this function segment", NULL},
-  { "up", btpy_call_up, NULL, "caller or returned-to function segment", NULL},
-  { "prev_sibling", btpy_call_prev_sibling, NULL, "previous segment of this \
-function", NULL},
-  { "next_sibling", btpy_call_next_sibling, NULL, "next segment of this \
-function", NULL},
-  {NULL}
-};
-
 /* BtraceList methods.  */
 
 struct PyMethodDef btpy_list_methods[] =
@@ -963,24 +834,6 @@ static PyMappingMethods btpy_list_mappin
 int
 gdbpy_initialize_btrace (void)
 {
-  btpy_insn_type.tp_new = PyType_GenericNew;
-  btpy_insn_type.tp_flags = Py_TPFLAGS_DEFAULT;
-  btpy_insn_type.tp_basicsize = sizeof (btpy_object);
-  btpy_insn_type.tp_name = "gdb.BtraceInstruction";
-  btpy_insn_type.tp_doc = "GDB btrace instruction object";
-  btpy_insn_type.tp_getset = btpy_insn_getset;
-  btpy_insn_type.tp_richcompare = btpy_richcompare;
-  btpy_insn_type.tp_hash = btpy_hash;
-
-  btpy_call_type.tp_new = PyType_GenericNew;
-  btpy_call_type.tp_flags = Py_TPFLAGS_DEFAULT;
-  btpy_call_type.tp_basicsize = sizeof (btpy_object);
-  btpy_call_type.tp_name = "gdb.BtraceFunctionCall";
-  btpy_call_type.tp_doc = "GDB btrace call object";
-  btpy_call_type.tp_getset = btpy_call_getset;
-  btpy_call_type.tp_richcompare = btpy_richcompare;
-  btpy_call_type.tp_hash = btpy_hash;
-
   btpy_list_type.tp_new = PyType_GenericNew;
   btpy_list_type.tp_flags = Py_TPFLAGS_DEFAULT;
   btpy_list_type.tp_basicsize = sizeof (btpy_list_object);
@@ -997,10 +850,5 @@ gdbpy_initialize_btrace (void)
 
   btpy_list_mapping_methods.mp_subscript = btpy_list_slice;
 
-  if (PyType_Ready (&btpy_insn_type) < 0
-      || PyType_Ready (&btpy_call_type) < 0
-      || PyType_Ready (&btpy_list_type) < 0)
-    return -1;
-  else
-    return 0;
+  return PyType_Ready (&btpy_list_type);
 }
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record-btrace.h ./gdb/python/py-record-btrace.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record-btrace.h	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/python/py-record-btrace.h	2017-05-09 02:06:13.000000000 +0000
@@ -46,4 +46,46 @@ extern PyObject *recpy_bt_begin (PyObjec
 /* Implementation of record.end [instruction].  */
 extern PyObject *recpy_bt_end (PyObject *self, void *closure);
 
+/* Implementation of RecordInstruction.number [int].  */
+extern PyObject *recpy_bt_insn_number (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.sal [gdb.Symtab_and_line].  */
+extern PyObject *recpy_bt_insn_sal (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.pc [int].  */
+extern PyObject *recpy_bt_insn_pc (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.data [buffer].  */
+extern PyObject *recpy_bt_insn_data (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.decoded [str].  */
+extern PyObject *recpy_bt_insn_decoded (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.size [int].  */
+extern PyObject *recpy_bt_insn_size (PyObject *self, void *closure);
+
+/* Implementation of RecordInstruction.is_speculative [bool].  */
+extern PyObject *recpy_bt_insn_is_speculative (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.number [int].  */
+extern PyObject *recpy_bt_func_number (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.number [int].  */
+extern PyObject *recpy_bt_func_level (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.symbol [gdb.Symbol].  */
+extern PyObject *recpy_bt_func_symbol (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.instructions [list].  */
+extern PyObject *recpy_bt_func_instructions (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.up [RecordFunctionSegment].  */
+extern PyObject *recpy_bt_func_up (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.prev [RecordFunctionSegment].  */
+extern PyObject *recpy_bt_func_prev (PyObject *self, void *closure);
+
+/* Implementation of RecordFunctionSegment.next [RecordFunctionSegment].  */
+extern PyObject *recpy_bt_func_next (PyObject *self, void *closure);
+
 #endif /* GDB_PY_RECORD_BTRACE_H */
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record.c ./gdb/python/py-record.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record.c	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/python/py-record.c	2017-05-09 02:06:13.000000000 +0000
@@ -18,41 +18,50 @@
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #include "defs.h"
-#include "inferior.h"
-#include "record.h"
-#include "python-internal.h"
+#include "py-instruction.h"
+#include "py-record.h"
 #include "py-record-btrace.h"
 #include "py-record-full.h"
 #include "target.h"
 
-/* Python Record object.  */
+/* Python Record type.  */
 
-typedef struct
-{
-  PyObject_HEAD
+static PyTypeObject recpy_record_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+};
 
-  /* The ptid this object refers to.  */
-  ptid_t ptid;
+/* Python RecordInstruction type.  */
 
-  /* The current recording method.  */
-  enum record_method method;
-} recpy_record_object;
+PyTypeObject recpy_insn_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+};
 
-/* Python Record type.  */
+/* Python RecordFunctionSegment type.  */
 
-static PyTypeObject recpy_record_type = {
+PyTypeObject recpy_func_type = {
   PyVarObject_HEAD_INIT (NULL, 0)
 };
 
-/* Implementation of record.ptid.  */
+/* Python RecordGap type.  */
 
-static PyObject *
-recpy_ptid (PyObject *self, void* closure)
+PyTypeObject recpy_gap_type = {
+  PyVarObject_HEAD_INIT (NULL, 0)
+};
+
+/* Python RecordGap object.  */
+typedef struct
 {
-  const recpy_record_object * const obj = (recpy_record_object *) self;
+  PyObject_HEAD
 
-  return gdbpy_create_ptid_object (obj->ptid);
-}
+  /* Reason code.  */
+  int reason_code;
+
+  /* Reason message.  */
+  const char *reason_string;
+
+  /* Element number.  */
+  Py_ssize_t number;
+} recpy_gap_object;
 
 /* Implementation of record.method.  */
 
@@ -164,6 +173,309 @@ recpy_end (PyObject *self, void* closure
   return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
 }
 
+/* Create a new gdb.RecordInstruction object.  */
+
+PyObject *
+recpy_insn_new (ptid_t ptid, enum record_method method, Py_ssize_t number)
+{
+  recpy_element_object * const obj = PyObject_New (recpy_element_object,
+						   &recpy_insn_type);
+
+  if (obj == NULL)
+   return NULL;
+
+  obj->ptid = ptid;
+  obj->method = method;
+  obj->number = number;
+
+  return (PyObject *) obj;
+}
+
+/* Implementation of RecordInstruction.sal [gdb.Symtab_and_line].  */
+
+static PyObject *
+recpy_insn_sal (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_sal (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.pc [int].  */
+
+static PyObject *
+recpy_insn_pc (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_pc (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.data [buffer].  */
+
+static PyObject *
+recpy_insn_data (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_data (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.decoded [str].  */
+
+static PyObject *
+recpy_insn_decoded (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_decoded (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.size [int].  */
+
+static PyObject *
+recpy_insn_size (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_size (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.is_speculative [bool].  */
+
+static PyObject *
+recpy_insn_is_speculative (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_insn_is_speculative (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Create a new gdb.RecordFunctionSegment object.  */
+
+PyObject *
+recpy_func_new (ptid_t ptid, enum record_method method, Py_ssize_t number)
+{
+  recpy_element_object * const obj = PyObject_New (recpy_element_object,
+						   &recpy_func_type);
+
+  if (obj == NULL)
+   return NULL;
+
+  obj->ptid = ptid;
+  obj->method = method;
+  obj->number = number;
+
+  return (PyObject *) obj;
+}
+
+/* Implementation of RecordFunctionSegment.level [int].  */
+
+static PyObject *
+recpy_func_level (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_level (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordFunctionSegment.symbol [gdb.Symbol].  */
+
+static PyObject *
+recpy_func_symbol (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_symbol (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordFunctionSegment.instructions [list].  */
+
+static PyObject *
+recpy_func_instructions (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_instructions (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordFunctionSegment.up [RecordFunctionSegment].  */
+
+static PyObject *
+recpy_func_up (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_up (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordFunctionSegment.prev [RecordFunctionSegment].  */
+
+static PyObject *
+recpy_func_prev (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_prev (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordFunctionSegment.next [RecordFunctionSegment].  */
+
+static PyObject *
+recpy_func_next (PyObject *self, void *closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  if (obj->method == RECORD_METHOD_BTRACE)
+    return recpy_bt_func_next (self, closure);
+
+  return PyErr_Format (PyExc_NotImplementedError, _("Not implemented."));
+}
+
+/* Implementation of RecordInstruction.number [int] and
+   RecordFunctionSegment.number [int].  */
+
+static PyObject *
+recpy_element_number (PyObject *self, void* closure)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  return PyInt_FromSsize_t (obj->number);
+}
+
+/* Implementation of RecordInstruction.__hash__ [int] and
+   RecordFunctionSegment.__hash__ [int].  */
+
+static Py_hash_t
+recpy_element_hash (PyObject *self)
+{
+  const recpy_element_object * const obj = (recpy_element_object *) self;
+
+  return obj->number;
+}
+
+/* Implementation of operator == and != of RecordInstruction and
+   RecordFunctionSegment.  */
+
+static PyObject *
+recpy_element_richcompare (PyObject *self, PyObject *other, int op)
+{
+  const recpy_element_object * const obj1 = (recpy_element_object *) self;
+  const recpy_element_object * const obj2 = (recpy_element_object *) other;
+
+  if (Py_TYPE (self) != Py_TYPE (other))
+    {
+      Py_INCREF (Py_NotImplemented);
+      return Py_NotImplemented;
+    }
+
+  switch (op)
+  {
+    case Py_EQ:
+      if (ptid_equal (obj1->ptid, obj2->ptid)
+	  && obj1->method == obj2->method
+	  && obj1->number == obj2->number)
+	Py_RETURN_TRUE;
+      else
+	Py_RETURN_FALSE;
+
+    case Py_NE:
+      if (!ptid_equal (obj1->ptid, obj2->ptid)
+	  || obj1->method != obj2->method
+	  || obj1->number != obj2->number)
+	Py_RETURN_TRUE;
+      else
+	Py_RETURN_FALSE;
+
+    default:
+      break;
+  }
+
+  Py_INCREF (Py_NotImplemented);
+  return Py_NotImplemented;
+}
+
+/* Create a new gdb.RecordGap object.  */
+
+PyObject *
+recpy_gap_new (int reason_code, const char *reason_string, Py_ssize_t number)
+{
+  recpy_gap_object * const obj = PyObject_New (recpy_gap_object,
+					       &recpy_gap_type);
+
+  if (obj == NULL)
+   return NULL;
+
+  obj->reason_code = reason_code;
+  obj->reason_string = reason_string;
+  obj->number = number;
+
+  return (PyObject *) obj;
+}
+
+/* Implementation of RecordGap.number [int].  */
+
+static PyObject *
+recpy_gap_number (PyObject *self, void *closure)
+{
+  const recpy_gap_object * const obj = (const recpy_gap_object *) self;
+
+  return PyInt_FromSsize_t (obj->number);
+}
+
+/* Implementation of RecordGap.error_code [int].  */
+
+static PyObject *
+recpy_gap_reason_code (PyObject *self, void *closure)
+{
+  const recpy_gap_object * const obj = (const recpy_gap_object *) self;
+
+  return PyInt_FromLong (obj->reason_code);
+}
+
+/* Implementation of RecordGap.error_string [str].  */
+
+static PyObject *
+recpy_gap_reason_string (PyObject *self, void *closure)
+{
+  const recpy_gap_object * const obj = (const recpy_gap_object *) self;
+
+  return PyString_FromString (obj->reason_string);
+}
+
 /* Record method list.  */
 
 static PyMethodDef recpy_record_methods[] = {
@@ -176,7 +488,6 @@ Rewind to given location."},
 /* Record member list.  */
 
 static gdb_PyGetSetDef recpy_record_getset[] = {
-  { "ptid", recpy_ptid, NULL, "Current thread.", NULL },
   { "method", recpy_method, NULL, "Current recording method.", NULL },
   { "format", recpy_format, NULL, "Current recording format.", NULL },
   { "replay_position", recpy_replay_position, NULL, "Current replay position.",
@@ -193,6 +504,43 @@ the current instruction and is used for 
   { NULL }
 };
 
+/* RecordInstruction member list.  */
+
+static gdb_PyGetSetDef recpy_insn_getset[] = {
+  { "number", recpy_element_number, NULL, "instruction number", NULL},
+  { "sal", recpy_insn_sal, NULL, "associated symbol and line", NULL},
+  { "pc", recpy_insn_pc, NULL, "instruction address", NULL},
+  { "data", recpy_insn_data, NULL, "raw instruction data", NULL},
+  { "decoded", recpy_insn_decoded, NULL, "decoded instruction", NULL},
+  { "size", recpy_insn_size, NULL, "instruction size in byte", NULL},
+  { "is_speculative", recpy_insn_is_speculative, NULL, "if the instruction was \
+  executed speculatively", NULL},
+  { NULL }
+};
+
+/* RecordFunctionSegment member list.  */
+
+static gdb_PyGetSetDef recpy_func_getset[] = {
+  { "number", recpy_element_number, NULL, "function segment number", NULL},
+  { "level", recpy_func_level, NULL, "call stack level", NULL},
+  { "symbol", recpy_func_symbol, NULL, "associated line and symbol", NULL},
+  { "instructions", recpy_func_instructions, NULL, "list of instructions in \
+this function segment", NULL},
+  { "up", recpy_func_up, NULL, "caller or returned-to function segment", NULL},
+  { "prev", recpy_func_prev, NULL, "previous segment of this function", NULL},
+  { "next", recpy_func_next, NULL, "next segment of this function", NULL},
+  { NULL }
+};
+
+/* RecordGap member list.  */
+
+static gdb_PyGetSetDef recpy_gap_getset[] = {
+  { "number", recpy_gap_number, NULL, "element number", NULL},
+  { "reason_code", recpy_gap_reason_code, NULL, "reason code", NULL},
+  { "reason_string", recpy_gap_reason_string, NULL, "reason string", NULL},
+  { NULL }
+};
+
 /* Sets up the record API in the gdb module.  */
 
 int
@@ -206,7 +554,39 @@ gdbpy_initialize_record (void)
   recpy_record_type.tp_methods = recpy_record_methods;
   recpy_record_type.tp_getset = recpy_record_getset;
 
-  return PyType_Ready (&recpy_record_type);
+  recpy_insn_type.tp_new = PyType_GenericNew;
+  recpy_insn_type.tp_flags = Py_TPFLAGS_DEFAULT;
+  recpy_insn_type.tp_basicsize = sizeof (recpy_element_object);
+  recpy_insn_type.tp_name = "gdb.RecordInstruction";
+  recpy_insn_type.tp_doc = "GDB recorded instruction object";
+  recpy_insn_type.tp_getset = recpy_insn_getset;
+  recpy_insn_type.tp_richcompare = recpy_element_richcompare;
+  recpy_insn_type.tp_hash = recpy_element_hash;
+  recpy_insn_type.tp_base = &py_insn_type;
+
+  recpy_func_type.tp_new = PyType_GenericNew;
+  recpy_func_type.tp_flags = Py_TPFLAGS_DEFAULT;
+  recpy_func_type.tp_basicsize = sizeof (recpy_element_object);
+  recpy_func_type.tp_name = "gdb.RecordFunctionSegment";
+  recpy_func_type.tp_doc = "GDB record function segment object";
+  recpy_func_type.tp_getset = recpy_func_getset;
+  recpy_func_type.tp_richcompare = recpy_element_richcompare;
+  recpy_func_type.tp_hash = recpy_element_hash;
+
+  recpy_gap_type.tp_new = PyType_GenericNew;
+  recpy_gap_type.tp_flags = Py_TPFLAGS_DEFAULT;
+  recpy_gap_type.tp_basicsize = sizeof (recpy_gap_object);
+  recpy_gap_type.tp_name = "gdb.RecordGap";
+  recpy_gap_type.tp_doc = "GDB recorded gap object";
+  recpy_gap_type.tp_getset = recpy_gap_getset;
+
+  if (PyType_Ready (&recpy_record_type) < 0
+      || PyType_Ready (&recpy_insn_type) < 0
+      || PyType_Ready (&recpy_func_type) < 0
+      || PyType_Ready (&recpy_gap_type) < 0)
+    return -1;
+  else
+    return 0;
 }
 
 /* Implementation of gdb.start_recording (method) -> gdb.Record.  */
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record.h ./gdb/python/py-record.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/py-record.h	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/python/py-record.h	2017-05-09 02:06:13.000000000 +0000
@@ -0,0 +1,74 @@
+/* Python interface to record targets.
+
+   Copyright 2017 Free Software Foundation, Inc.
+
+   This file is part of GDB.
+
+   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/>.  */
+
+#ifndef GDB_PY_RECORD_H
+#define GDB_PY_RECORD_H
+
+#include "inferior.h"
+#include "python-internal.h"
+#include "record.h"
+
+/* Python Record object.  */
+typedef struct
+{
+  PyObject_HEAD
+
+  /* The ptid this object refers to.  */
+  ptid_t ptid;
+
+  /* The current recording method.  */
+  enum record_method method;
+} recpy_record_object;
+
+/* Python recorded element object.  This is generic enough to represent
+   recorded instructions as well as recorded function call segments, hence the
+   generic name.  */
+typedef struct
+{
+  PyObject_HEAD
+
+  /* The ptid this object refers to.  */
+  ptid_t ptid;
+
+  /* The current recording method.  */
+  enum record_method method;
+
+  /* Element number.  */
+  Py_ssize_t number;
+} recpy_element_object;
+
+/* Python RecordInstruction type.  */
+extern PyTypeObject recpy_insn_type;
+
+/* Python RecordFunctionSegment type.  */
+extern PyTypeObject recpy_func_type;
+
+/* Create a new gdb.RecordInstruction object.  */
+extern PyObject *recpy_insn_new (ptid_t ptid, enum record_method method,
+				 Py_ssize_t number);
+
+/* Create a new gdb.RecordFunctionSegment object.  */
+extern PyObject *recpy_func_new (ptid_t ptid, enum record_method method,
+				 Py_ssize_t number);
+
+/* Create a new gdb.RecordGap object.  */
+extern PyObject *recpy_gap_new (int reason_code, const char *reason_string,
+				Py_ssize_t number);
+
+#endif /* GDB_PY_RECORD_H */
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/python.c ./gdb/python/python.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/python.c	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/python/python.c	2017-05-09 02:06:13.000000000 +0000
@@ -1626,6 +1626,7 @@ do_start_initialization ()
       || gdbpy_initialize_values () < 0
       || gdbpy_initialize_frames () < 0
       || gdbpy_initialize_commands () < 0
+      || gdbpy_initialize_instruction () < 0
       || gdbpy_initialize_record () < 0
       || gdbpy_initialize_btrace () < 0
       || gdbpy_initialize_symbols () < 0
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/python-internal.h ./gdb/python/python-internal.h
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/python/python-internal.h	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/python/python-internal.h	2017-05-09 02:06:13.000000000 +0000
@@ -562,6 +562,8 @@ int gdbpy_initialize_values (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_frames (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
+int gdbpy_initialize_instruction (void)
+  CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_btrace (void)
   CPYCHECKER_NEGATIVE_RESULT_SETS_EXCEPTION;
 int gdbpy_initialize_record (void)
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/ChangeLog ./gdb/testsuite/ChangeLog
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/ChangeLog	2017-05-02 02:06:03.000000000 +0000
+++ ./gdb/testsuite/ChangeLog	2017-05-09 02:06:13.000000000 +0000
@@ -1,3 +1,32 @@
+2017-05-04  Pedro Alves  <palves@redhat.com>
+
+	* gdb.python/py-record-btrace-threads.exp (check_insn_for_thread):
+	Add parens to print call for Python 3.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* gdb.python/py-record-btrace.exp: Rename prev_sibling and next_sibling
+	to prev and next.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* gdb.python/py-record-btrace.exp: Remove test for
+	gdb.BtraceInstruction.error.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* gdb.python/py-record-btrace.exp: Remove Record.ptid test.
+
+2017-05-04  Tim Wiederhake  <tim.wiederhake@intel.com>
+
+	* gdb.python/py-record-btrace-threads.c: New file.
+	* gdb.python/py-record-btrace-threads.exp: New file.
+
+2017-05-03  Keith Seitz  <keiths@redhat.com>
+
+	* gdb.cp/oranking.cc (dummy): New function to grab malloc.
+	(main): Call it.
+
 2017-04-27  Keith Seitz  <keiths@redhat.com>
 
 	* gdb.cp/oranking.cc (test15): New function.
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.cp/oranking.cc ./gdb/testsuite/gdb.cp/oranking.cc
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.cp/oranking.cc	2017-05-02 02:06:04.000000000 +0000
+++ ./gdb/testsuite/gdb.cp/oranking.cc	2017-05-09 02:06:13.000000000 +0000
@@ -1,3 +1,18 @@
+#include <cstdlib>
+
+/* Make sure `malloc' is linked into the program.  If we don't, tests
+   in the accompanying expect file may fail:
+
+   evaluation of this expression requires the program to have a function
+   "malloc".  */
+
+void
+dummy ()
+{
+  void *p = malloc (16);
+
+  free (p);
+}
 
 /* 1. A standard covnersion sequence is better than a user-defined sequence
       which is better than an elipses conversion sequence.  */
@@ -165,6 +180,8 @@ test15 ()
 }
 
 int main() {
+  dummy ();
+
   B b;
   foo0(b);
   foo1(b);
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace.exp ./gdb/testsuite/gdb.python/py-record-btrace.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace.exp	2017-05-02 02:06:04.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace.exp	2017-05-09 02:06:13.000000000 +0000
@@ -59,7 +59,6 @@ with_test_prefix "preopened record btrac
 
 with_test_prefix "prepare record" {
     gdb_test_no_output "python r = gdb.start_recording(\"btrace\")"
-    gdb_test "python print(len(r.ptid))" "3"
     gdb_test "python print(r.method)" "btrace"
     gdb_test "python print(r.format)" "pt|bts"
     gdb_test "stepi 100" ".*"
@@ -82,7 +81,6 @@ with_test_prefix "replay end" {
 
 with_test_prefix "instruction " {
     gdb_test "python print(i.number)" "1"
-    gdb_test "python print(i.error)" "None"
     gdb_test "python print(i.sal)" "symbol and line for .*"
     gdb_test "python print(i.pc)" "$decimal"
     if { $gdb_py_is_py3k == 0 } {
@@ -101,8 +99,8 @@ with_test_prefix "function call" {
     gdb_test "python print(c.level)" "$decimal"
     gdb_test "python print(len(c.instructions))" "$decimal"
     gdb_test "python print(c.up)" "None"
-    gdb_test "python print(c.prev_sibling)" "None"
-    gdb_test "python print(c == c.next_sibling.prev_sibling)" "True"
+    gdb_test "python print(c.prev)" "None"
+    gdb_test "python print(c == c.next.prev)" "True"
 }
 
 with_test_prefix "list" {
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace-threads.c ./gdb/testsuite/gdb.python/py-record-btrace-threads.c
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace-threads.c	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace-threads.c	2017-05-09 02:06:13.000000000 +0000
@@ -0,0 +1,58 @@
+/* This testcase is part of GDB, the GNU debugger.
+
+   Copyright 2017 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/>.  */
+
+#include <pthread.h>
+
+static pthread_barrier_t barrier;
+static int dummy;
+
+static void *
+func1 (void *arg)
+{
+  pthread_barrier_wait (&barrier);
+  dummy = 1; /* bp1 */
+  pthread_barrier_wait (&barrier);
+  dummy = 1;
+  pthread_barrier_wait (&barrier);
+  return arg;
+}
+
+static void *
+func2 (void *arg)
+{
+  pthread_barrier_wait (&barrier);
+  dummy = 2;
+  pthread_barrier_wait (&barrier);
+  dummy = 2;
+  pthread_barrier_wait (&barrier); /* bp2 */
+  return arg;
+}
+
+int
+main (void)
+{
+  pthread_t thread;
+
+  pthread_barrier_init (&barrier, NULL, 2);
+
+  pthread_create (&thread, NULL, func2, NULL);
+  func1 (NULL);
+
+  pthread_join (thread, NULL);
+  pthread_barrier_destroy (&barrier);
+  return 0;
+}
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace-threads.exp ./gdb/testsuite/gdb.python/py-record-btrace-threads.exp
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/testsuite/gdb.python/py-record-btrace-threads.exp	1970-01-01 00:00:00.000000000 +0000
+++ ./gdb/testsuite/gdb.python/py-record-btrace-threads.exp	2017-05-09 02:06:13.000000000 +0000
@@ -0,0 +1,81 @@
+# This testcase is part of GDB, the GNU debugger.
+#
+# Copyright 2017 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/>.
+
+# Skip this test if btrace is disabled.
+
+if { [skip_btrace_tests] } {
+    untested "skipping btrace tests"
+    return -1
+}
+
+standard_testfile
+
+if { [gdb_compile_pthreads "$srcdir/$subdir/$srcfile" "$binfile" executable {debug} ] != "" } {
+    untested "failed to prepare"
+    return -1
+}
+clean_restart $testfile
+
+# Skip this test if python is disabled.
+
+load_lib gdb-python.exp
+if { [skip_python_tests] } {
+    untested "skipping python tests"
+    return -1
+}
+
+if { ![runto_main] } {
+    untested "failed to run to main"
+    return -1
+}
+
+# set up breakpoints
+gdb_breakpoint $srcfile:[gdb_get_line_number "bp1" $srcfile]
+gdb_breakpoint $srcfile:[gdb_get_line_number "bp2" $srcfile]
+
+# record data
+gdb_continue_to_breakpoint "cont to bp.1" ".*bp1.*"
+gdb_test_no_output "record btrace"
+gdb_continue_to_breakpoint "cont to bp.2" ".*bp2.*"
+
+# acquire the record objects for thread 1 and thread 2
+gdb_test "thread 1" ".*"
+gdb_test "record function-call-history" ".*" "fch thread 1"
+gdb_test_no_output "python rec1 = gdb.current_recording()"
+gdb_test "thread 2" ".*"
+gdb_test "record function-call-history" ".*" "fch thread 2"
+gdb_test_no_output "python rec2 = gdb.current_recording()"
+
+# Thread 1 is supposed to call func1 (), thread 2 is supposed to call func2 ().
+# Check that the function call history for the current thread contains a call
+# to the right function and does not contain a call to the wrong function.
+proc check_insn_for_thread { self other } {
+  with_test_prefix "checking thread $self" {
+    gdb_test_no_output "python fch = rec$self.function_call_history"
+    gdb_test_no_output "python f1calls = \{x for x in fch if x.symbol and x.symbol.name == \"func1\"\}"
+    gdb_test_no_output "python f2calls = \{x for x in fch if x.symbol and x.symbol.name == \"func2\"\}"
+
+    gdb_test "python print(not f${self}calls)" "False"
+    gdb_test "python print(not f${other}calls)" "True"
+  }
+}
+
+foreach_with_prefix thread { 1 2 } {
+  gdb_test "thread $thread"
+  check_insn_for_thread 1 2
+  check_insn_for_thread 2 1
+}
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/version.in ./gdb/version.in
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/gdb/version.in	2017-05-02 02:06:04.000000000 +0000
+++ ./gdb/version.in	2017-05-09 02:06:13.000000000 +0000
@@ -1 +1 @@
-7.99.90.DATE-git
+7.99.91.DATE-git
diff -a -u -r --new-file --show-function-line='^[A-Za-z_]' /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/md5.sum ./md5.sum
--- /sourceware/snapshot-tmp/gdb/snapshot/branch-gdb/update-snapshot/old/gdb-7.99.90.20170502/md5.sum	2017-05-02 02:10:47.000000000 +0000
+++ ./md5.sum	2017-05-09 02:11:20.000000000 +0000
@@ -40,7 +40,7 @@ e7d4af415054fce55bfb5cf36fd85050  bfd/cp
 ce83e510c01d5a9c23bc4747b9e94224  bfd/wasm-module.c
 537786e589ab6658c4d472adf784cf35  bfd/elf64-mips.c
 f166d84c263d357d6eadb7a8d861e7a4  bfd/cpu-m9s12x.c
-ce94c858fc52612ba901e9a2c6ce5d55  bfd/version.h
+268dce08a88b5a0a8ecc6a9bfa041ef4  bfd/version.h
 a11a835899b8428781e5df11be161cbf  bfd/cpu-tilegx.c
 62e6228170bb7fe9c2be3e62ef96f7e2  bfd/coff-mcore.c
 fc8ec08340f69ae3a4a2e93a0d5f2960  bfd/cpu-avr.c
@@ -953,7 +953,7 @@ d9bcd8b55cdddb7b30b7730e02f6e209  gdb/am
 3fd37f3ecb4ea4e8bfbc679dcaaee0da  gdb/utils-selftests.c
 c71ae899a7ffe832abd1388c71724960  gdb/gdb-demangle.h
 f3171ea1d53584a46e9faac11dea413f  gdb/ravenscar-thread.c
-e957028cb8a17cf03f77730830ebe83a  gdb/Makefile.in
+76a11216ac27a786c200c640bf8967af  gdb/Makefile.in
 6c42eb15f39ae9eed72208ab1d9a5e0b  gdb/btrace.h
 9dbe8040cc2d81aec7c6193913d6e5a2  gdb/x86-bsd-nat.c
 11696c987e8887e60b06bd473a431df0  gdb/windows-nat.h
@@ -994,7 +994,7 @@ e403554d66b72e34bb537ed579410b04  gdb/c-
 ace2dbd8f22409678dade6e46db18262  gdb/python/py-cmd.c
 75f489991fb3c89455de1af3906725f6  gdb/python/py-infthread.c
 b4d62f78c8a75561931c86f75ad73646  gdb/python/py-continueevent.c
-7a9ebdf506e0f5a3b46ddd361f9be7a2  gdb/python/python-internal.h
+cef8c6cfe8440c8bb057ac6ffdfb26e7  gdb/python/python-internal.h
 f11a8c261b9289c430b33d4f409eecb6  gdb/python/py-xmethods.c
 335b31712c3d167061385a9f7959bd66  gdb/python/py-objfile.c
 9dfd1afeca534cc041e82cebdd87effc  gdb/python/py-event.h
@@ -1003,6 +1003,7 @@ eb8b0ddb92193ca8b1a1f86924e83904  gdb/py
 3b23d7e4542a89c8993cfdead0c72ec4  gdb/python/python-config.py
 275ce6d96d0f83769a9059f337fc54a0  gdb/python/py-value.c
 f569c173ce4d0732f2a35a2c31114988  gdb/python/py-unwind.c
+bb7dbcf943bd06755a26e9d8ea6a4f0e  gdb/python/py-instruction.h
 2fc2145a2254a12c167e91f1f6b18a33  gdb/python/py-type.c
 feca7bf16ad10a6af4345854ba0cb930  gdb/python/py-evtregistry.c
 75b2aa5eb45569af557a4a6b5343f823  gdb/python/py-utils.c
@@ -1030,21 +1031,21 @@ e92964ad609694e302c580f190720595  gdb/py
 9370fc5dc52dad9e64b3e784ce6d1a57  gdb/python/lib/gdb/function/__init__.py
 74a602219cf2fd7755f22d43c7439e0d  gdb/python/lib/gdb/function/strfns.py
 f167b6ae7bd5edfbc3af808edc77291b  gdb/python/lib/gdb/printing.py
-fa7f178f342a06a67a0fe7df2c6df895  gdb/python/python.c
+7d1b7939a52059b9023435c5ac86ec6d  gdb/python/python.c
 c58ce1ea4d44d071b02ae0fbb17704f1  gdb/python/py-inferior.c
 9e935c521700bd7ac8a40983c1ce8544  gdb/python/py-symbol.c
 a7030299e251929965a3bb3098007938  gdb/python/py-block.c
 131c34b979a160bcde96f8bbc4619dec  gdb/python/py-events.h
 ed9b9a5c2a44f2a855d67acfa0ae9603  gdb/python/py-ref.h
 250490fa8e9e603a0ef2275b2b4025f8  gdb/python/py-function.c
-c3486a35187aa23efffc9006fbae8df2  gdb/python/py-record-btrace.h
+bea90c5f527f1d43c7f2a2c6f1c3789b  gdb/python/py-record-btrace.h
 8640c20ee811e1676828c9772532731b  gdb/python/py-framefilter.c
 b4b87d11ff7e937b54e9cdaa289125a0  gdb/python/py-gdb-readline.c
-959609d75318f5fbad1f9ef534709df0  gdb/python/py-record.c
+06910c1a3e1d34d3a1a097a56c77e1b6  gdb/python/py-record.c
 d456c99da44dccb4d9001bb7ba4b1860  gdb/python/py-stopevent.h
 8654bc96ee370deb155caeafdca280b9  gdb/python/py-event.c
 cc079b00242ef059ec497b9b0a8c30cd  gdb/python/py-symtab.c
-1afe747ed298eca3ae42012b708480d1  gdb/python/py-record-btrace.c
+8379816c4a2d1b218b5306074ea89f7a  gdb/python/py-record-btrace.c
 38908560f8d0f73897d3712fe4f8fe77  gdb/python/py-stopevent.c
 b6807591ca8f78ac83ddff79554db24f  gdb/python/python.h
 6895c7ede316779fe17a1cde121ac99a  gdb/python/py-signalevent.c
@@ -1053,8 +1054,10 @@ b6807591ca8f78ac83ddff79554db24f  gdb/py
 6519c52e1fe470c72e543d0f2a01008d  gdb/python/py-param.c
 3d8e227bdac9f32e459aaefa9757c62b  gdb/python/py-varobj.c
 3e1bc784a708fe54b2473fd65261f081  gdb/python/py-lazy-string.c
+c0e5fec5dd0a2e57c3ef00c940300aa5  gdb/python/py-record.h
 7bc9f8b499559c0972bdec31fba43992  gdb/python/py-exitedevent.c
 4b61595a0df7ad0c45d1e53c2d67ef9e  gdb/python/py-progspace.c
+46779646eff8bb612c3e361c7023cdee  gdb/python/py-instruction.c
 6ed852e3a4c90cc51912d93048b1c0d5  gdb/python/py-bpevent.c
 a6e76180534392713d7f7309384fd352  gdb/python/py-arch.c
 063afa5089aa6f69c849af10a6a7f123  gdb/python/py-infevents.c
@@ -1075,7 +1078,7 @@ f49b1f98a8af6aa3c91c204a8c05e264  gdb/pp
 8819ef46ed7d7d98152791d401ebbc7a  gdb/i386-gnu-nat.c
 24c3d0e446db200d422baf3e20f1f525  gdb/iq2000-tdep.c
 a4d781b84bbae84e197a05fff0f19eb5  gdb/ser-base.c
-fe5a5cdfdf93927ea5f287cabd06b256  gdb/version.in
+2745f8c800f36ae17a8f4bf56919eac4  gdb/version.in
 e0cedbf44e33fb2e2d5c920bc4dcba25  gdb/linux-record.c
 0616d8fd2afb534fdff77949b84c17bf  gdb/sparc64-sol2-tdep.c
 3d5f9f9aaf5f6c9b54c40702a33b0059  gdb/amd64-nat.c
@@ -1207,7 +1210,7 @@ c1500d5e557d30780bae13e6b1374522  gdb/nd
 8b810b666543cd13962d46a827ee2d4e  gdb/ser-tcp.h
 c7e3d18839dc206b465b505fa97fb6ef  gdb/ui-file.h
 6c7eb9a476e73c320dfcbd34557c12bf  gdb/user-regs.h
-f98668e6b62ba2b17a25ebb7e9961fc1  gdb/PROBLEMS
+abf3b0877b7e3a06b232fb3110a3f103  gdb/PROBLEMS
 a96b7ec6ed59f9e2dea99fe3978d8ce4  gdb/config.in
 24dbc0c3c947aab113288374b057d4ee  gdb/configure.ac
 752cc726423f319218ee7048b5dc7d38  gdb/ChangeLog-2015
@@ -1352,7 +1355,7 @@ a594ff69bb5204b3e1dbfb5ed6ec2b02  gdb/c-
 33e7fed38637450996a0da7bab62cd93  gdb/m32r-linux-nat.c
 21ce0215f229524e1d6cbd3e09afa218  gdb/sparc64-nbsd-nat.c
 120a7b9efb8353a81d5f69f41e0aaae2  gdb/gdb_bfd.c
-d975809dbe7f47c5a9eb244dbaaaf156  gdb/NEWS
+03cce3633e718b954647df178b49535d  gdb/NEWS
 d71a091fa37a0fd76703d3f81e57fe5f  gdb/x86-nat.c
 7a153f67886d5f2aff5cfd2a7a1d7e6e  gdb/dcache.c
 4a0d90d9450714b60daccc14c9df7f06  gdb/ada-lex.l
@@ -1677,7 +1680,7 @@ cf3fc25d678ac17d8419bb5659b2888c  gdb/te
 97c0016e49f205c37d182c33c718cdc7  gdb/testsuite/gdb.cp/abstract-origin.exp
 16105f8b9b538cefc628a1291d440d6a  gdb/testsuite/gdb.cp/virtfunc2.cc
 aa60b69500be161117d857de3d03ae38  gdb/testsuite/gdb.cp/cmpd-minsyms.cc
-b01a9b6f69bce777949504eba04ac7e4  gdb/testsuite/gdb.cp/oranking.cc
+7e5b18b28a0ca883aa55da93b86082d8  gdb/testsuite/gdb.cp/oranking.cc
 fe3135261bf4ae037b226ab8249dfe9e  gdb/testsuite/gdb.cp/rvalue-ref-casts.exp
 f67fe274d29d2699d24d030d3504ea8c  gdb/testsuite/gdb.cp/casts03.cc
 29537abe7a0cf41a3814fb9d9c93e284  gdb/testsuite/gdb.cp/rvalue-ref-casts.cc
@@ -2147,6 +2150,7 @@ fbcfe4581c06b0ee43e165b0e6f5075a  gdb/te
 60c9429877605d550fdfdfb6a1334474  gdb/testsuite/gdb.python/py-value-cc.cc
 1fd42e4044994410e9a2519f8a3901e2  gdb/testsuite/gdb.python/py-prompt.c
 2f0c9f598c167f970e7ada2e6a143b4a  gdb/testsuite/gdb.python/py-framefilter.c
+d85db8205924dd65387cd6fa392019c6  gdb/testsuite/gdb.python/py-record-btrace-threads.c
 da486da2e42cbe79a8246f3431166e51  gdb/testsuite/gdb.python/py-breakpoint-create-fail.c
 cab989b7b83371cf3a32009bccfee74d  gdb/testsuite/gdb.python/py-events.exp
 e58fd892e37bf3ce09b9c52c7ac1dc0e  gdb/testsuite/gdb.python/py-recurse-unwind.py
@@ -2154,6 +2158,7 @@ e58fd892e37bf3ce09b9c52c7ac1dc0e  gdb/te
 58abcb0223de47d4c67dd72f511517f9  gdb/testsuite/gdb.python/py-unwind-maint.py
 def3a2d6ca82a0fdcf96213d8150bb6a  gdb/testsuite/gdb.python/py-frame-inline.c
 baea70cc1674cf0fa15e4a37474b1052  gdb/testsuite/gdb.python/py-linetable.S
+f9c81a23b15cae53b41450a4e96c2790  gdb/testsuite/gdb.python/py-record-btrace-threads.exp
 029d0178268eaaa04096700d80b58a04  gdb/testsuite/gdb.python/py-sync-interp.exp
 e80db23a5b1113092e53c3d9f1ff8757  gdb/testsuite/gdb.python/py-evthreads.exp
 4124ead3cdbcf4f6a679c6d2ef1bbc98  gdb/testsuite/gdb.python/py-rvalue-ref-value-cc.exp
@@ -2169,7 +2174,7 @@ e1a7a27e387c4a7f1d3eec93607b0071  gdb/te
 b68c1674cc9020de59952c463ea194d8  gdb/testsuite/gdb.python/py-recurse-unwind.exp
 e3dadf4d448f7b5a32e42cf25498f2ce  gdb/testsuite/gdb.python/py-pp-registration.py
 dcbe4f27f03ecfe3e7631abc08a877e2  gdb/testsuite/gdb.python/py-typeprint.exp
-6e87513430bad549fe705c693703afda  gdb/testsuite/gdb.python/py-record-btrace.exp
+f29240a185620682bc43652d2a3372e0  gdb/testsuite/gdb.python/py-record-btrace.exp
 80253817c39fce84dd87357cb48d6e4f  gdb/testsuite/gdb.python/py-framefilter-invalidarg.py
 eea4f50b1177b4fa1f3b2d1b656da3b1  gdb/testsuite/gdb.python/py-lazy-string.c
 3b3c6fe7481562b423268f3e229be051  gdb/testsuite/gdb.python/py-shared-sl.c
@@ -4205,7 +4210,7 @@ f79791a026889dd2e06055874c75baa7  gdb/te
 95c177bbeca4dd1ffb229aa2c32c8d5d  gdb/testsuite/gdb.go/integers.exp
 68d17058fa82304a192749f0eadc138d  gdb/testsuite/gdb.go/strings.go
 81b7ed6cb92c627d245bd2efc4b953b9  gdb/testsuite/gdb.go/methods.go
-dd0df7254de90e42f3ea316ac5245a29  gdb/testsuite/ChangeLog
+47f368246dfbd045fd1b335d7ab3fc3d  gdb/testsuite/ChangeLog
 b3f11b21e5921c419a43f93720dedf85  gdb/testsuite/gdb.asm/empty.inc
 156e3d7f60e0146a4e53cd66c349d288  gdb/testsuite/gdb.asm/asm-source.exp
 f1621bbbb2acbec5adef86d7d9549975  gdb/testsuite/gdb.asm/bfin.inc
@@ -4859,43 +4864,43 @@ b9f2cba57c8e0b6343e5f9103e2a6e55  gdb/sy
 11eb2baa9f2fbdccdd3266c37f8c4eea  gdb/f-valprint.c
 11c73ce00b43a3b4f2a91730673aacb1  gdb/gdb_curses.h
 8108dd8f906f2654fecc74958cf383db  gdb/doc/psrc.sed
-d87038a6e800a7e17b6ad9bdec42e918  gdb/doc/gdb.info-3
-41d3ba8d6baa5263651969b9da0c0e2b  gdb/doc/gdb.info-4
+23636c5fc765e2f71e7aa7069efbff5f  gdb/doc/gdb.info-3
+e9b65ca36f4419bc027e688d49e4ee0d  gdb/doc/gdb.info-4
 ab0fe311032294b952da80585b8b90e7  gdb/doc/fdl.texi
 82ff73e69ce7f934c71ca667545d541c  gdb/doc/Makefile.in
-3a8c5b35e3732eb5d500bc8d75876e48  gdb/doc/gdb.info-7
+c494085a525390c112059c7d20c71b8b  gdb/doc/gdb.info-7
 3e88538f371ece70b44cd38bf1a0d646  gdb/doc/observer.texi
-65b0d4ebf5b3890ee9c67a3c0743fc7d  gdb/doc/gdbserver.1
+cbb89768c25fb573d74b38416d6139d4  gdb/doc/gdbserver.1
 25d98e4cfdcb50be474c39fe6ee5a92c  gdb/doc/guile.texi
 f81a0e00e0cb9e41b078069fb9bedb07  gdb/doc/stack_frame.txt
 259d4d661f188d2df9adb15f7893bc4c  gdb/doc/stabs.info
-0e0ff1983b3b080895557da938a60c97  gdb/doc/gdb.info-5
+cf9b2a0a1e89f25433f56ac005a83aeb  gdb/doc/gdb.info-5
 cfb748e4e7997eb77d81a2d04c17ec75  gdb/doc/agentexpr.texi
 66674dc351ba95941f422dc18cae24bb  gdb/doc/.gitignore
-557eaa2e32519ee7f37a33af2f1eb368  gdb/doc/gdb.info-1
+25553a8da8497039579cc32801083499  gdb/doc/gdb.info-1
 d5d06eaf9b4d44aa442a4a281aa9aea4  gdb/doc/a4rc.sed
-a4236d6f3987f7d49537f82c02795e88  gdb/doc/gdb.info-6
+baf047b976d9a6fece6ea33d27323599  gdb/doc/gdb.info-6
 fbd9b7de23befc3047963b8df050c811  gdb/doc/gdb.texinfo
 553b7fe1bf4b5d8b96fdb8cd83503de1  gdb/doc/stack_frame.svg
 04c82b1da7e894a6555868e4f86225af  gdb/doc/filter-for-doxygen
 4fc43d6768cf1e2e354f31afd3977e00  gdb/doc/Doxyfile-gdb-api.in
 f7b5e594a1123b60be255ad99e1fa958  gdb/doc/annotate.info
-4a974a494fd21515da6586f0ac8000c8  gdb/doc/gdb.info-2
+98c9887c45094b3c35ac933a4dc7045e  gdb/doc/gdb.info-2
 f4de6bc91bf36f24e3511b52c0cd8257  gdb/doc/refcard.tex
 6076d300a46651562d4ecd0604442414  gdb/doc/stack_frame.png
-ab58cafbfa5e25f77125548bc21509d1  gdb/doc/gdb.info
-bd54bc2344b8529b79d48c01a6828a36  gdb/doc/python.texi
+5e22b70d52da9f337d6cf522bb9bf97c  gdb/doc/gdb.info
+80bb93d40fedd049e5cb1df5f1f38928  gdb/doc/python.texi
 8a4aee08d4127ecb844a633b1f871326  gdb/doc/stabs.texinfo
-9a5cacf8cd369007bfbea0a12667e3b1  gdb/doc/ChangeLog
-77056c967b0c2030cf002749a2cd265b  gdb/doc/gdb.1
-079a3e9f63614fc7151500f7581f0121  gdb/doc/gcore.1
+2c0fb4cb1ff2e33e19e20230da3b97dd  gdb/doc/ChangeLog
+389678209f1980cff45d993b6d924029  gdb/doc/gdb.1
+b1fcb208c7683a53047a280392dc5503  gdb/doc/gcore.1
 d39233c86ed6a6dc9e853ae6a11fe03e  gdb/doc/stack_frame.pdf
 591694df493e64e682b16ffd8b2083d9  gdb/doc/Doxyfile-base.in
 66028f53511c3cc83819e12b44647ae8  gdb/doc/all-cfg.texi
 bf96494e6e4d346175babd5ef9781882  gdb/doc/gpl.texi
 cd5e3faa9bd1b684a73c7d527cdb4988  gdb/doc/filter-params.pl
 7bfdb0765c5d050d204fbb30aeeba0d8  gdb/doc/stack_frame.eps
-8c49a48b352e746815abcdfef7d283dd  gdb/doc/gdbinit.5
+fec521969c325ea002604e8478040d1d  gdb/doc/gdbinit.5
 1192f4fe7137f234e4e775edad1f6b67  gdb/doc/Doxyfile-gdb-xref.in
 3dbfac6a018cf4a1cdba9576425d37ad  gdb/doc/annotate.texinfo
 ad3c3c9a187c8d44e9afe447d27b59fc  gdb/doc/doxy-index.in
@@ -5402,7 +5407,7 @@ b111794daa7eb645b4756e94632999a2  gdb/so
 eb070d698546d2249970d33257b7fb58  gdb/std-regs.c
 ebf0676f3a704787b0b07d24df62f2f4  gdb/go-lang.h
 00ea9011e2eb40f47643062e25f3257e  gdb/i386-windows-nat.c
-a25d1c3be0318185a86dae0cd77b4282  gdb/po/gdb.pot
+06cdb854495e54db1c94a762ce3a9e5f  gdb/po/gdb.pot
 1851bff0653201a488dcae18dde7efad  gdb/po/gdbtext
 21867eaf73d1ca153c5d6a17d735f7d3  gdb/break-catch-syscall.c
 707ca95997166afd8eae90a1ad5bb95a  gdb/ada-lang.c
@@ -5433,7 +5438,7 @@ d52daa0a890503fa5a66f1c190edcc4b  gdb/ex
 7c6760c76a3ed467e53059ffba288c8e  gdb/mipsread.c
 71bacfa19c404b335f593a8f16ad340f  gdb/selftest.c
 7378b256192666373e30b2fee36a496e  gdb/amd64-darwin-tdep.c
-40c6c7c4dded01ddf74dcc0e79c631df  gdb/ChangeLog
+6b7f5033a3c5102e9ec135cc8c3de664  gdb/ChangeLog
 e860e6934b52d9ac7114f5ff0e630993  gdb/go-typeprint.c
 b858bfae264eece12de91eefcfb5c18d  gdb/score-tdep.c
 eef5427996b5fb62ff91ac9f54d3a854  gdb/m88k-bsd-nat.c
@@ -5460,7 +5465,7 @@ c7a69dfc7078227e022f6b8cbe77e815  gdb/re
 c1d5e2a189559e19e4ffceadcf41afa8  gdb/proc-service.list
 3e0b941f7c2e4ccaa43a6d2c9831800c  gdb/gdb-stabs.h
 fc4c94945c43cab7ffbbf375a879c9fa  gdb/p-exp.c
-802478b3c0c90cce9029a6103952ec2d  gdb/btrace.c
+70d3833ea21c0d57dd79192a9e80ee68  gdb/btrace.c
 9a15a827895d76e9cc6b076fff0ff4a3  gdb/m68k-tdep.c
 9185df55606bb3bcc78a69403fddf0c3  gdb/coffread.c
 e796d4900c2b815177a0d2cef4881b39  gdb/findcmd.c
