From 91a0e18866d143c045e9e29377a6e918011c0b63 Mon Sep 17 00:00:00 2001 From: Michael Woerister Date: Wed, 3 Dec 2014 14:48:18 -0800 Subject: [PATCH] debuginfo: Add a rust-gdb shell script that will start GDB with Rust pretty printers enabled. --- mk/clean.mk | 5 +- mk/debuggers.mk | 101 +++++++++++++++--- mk/main.mk | 10 +- mk/prepare.mk | 28 ++++- src/compiletest/runtest.rs | 37 +------ src/etc/gdb_load_rust_pretty_printers.py | 12 +++ src/etc/rust-gdb | 23 ++++ src/librustc/lint/builtin.rs | 1 + src/librustc_llvm/lib.rs | 3 +- src/librustc_trans/trans/base.rs | 2 + src/librustc_trans/trans/debuginfo.rs | 92 +++++++++++++++- src/rustllvm/RustWrapper.cpp | 12 ++- .../debuginfo/basic-types-globals-metadata.rs | 1 + src/test/debuginfo/basic-types-globals.rs | 1 + src/test/debuginfo/basic-types-metadata.rs | 1 + src/test/debuginfo/basic-types-mut-globals.rs | 1 + src/test/debuginfo/basic-types.rs | 1 + src/test/debuginfo/borrowed-basic.rs | 1 + src/test/debuginfo/borrowed-c-style-enum.rs | 1 + src/test/debuginfo/borrowed-enum.rs | 1 + src/test/debuginfo/borrowed-struct.rs | 1 + src/test/debuginfo/borrowed-tuple.rs | 1 + src/test/debuginfo/borrowed-unique-basic.rs | 2 +- src/test/debuginfo/box.rs | 1 + src/test/debuginfo/boxed-struct.rs | 1 + .../by-value-non-immediate-argument.rs | 2 + .../by-value-self-argument-in-trait-impl.rs | 2 + .../debuginfo/c-style-enum-in-composite.rs | 1 + src/test/debuginfo/c-style-enum.rs | 1 + .../debuginfo/closure-in-generic-function.rs | 2 + .../debuginfo/destructured-fn-argument.rs | 1 + .../destructured-for-loop-variable.rs | 3 + src/test/debuginfo/destructured-local.rs | 1 + src/test/debuginfo/evec-in-struct.rs | 1 + .../debuginfo/function-arg-initialization.rs | 4 +- src/test/debuginfo/function-arguments.rs | 3 + ...nction-prologue-stepping-no-stack-check.rs | 1 + .../function-prologue-stepping-regular.rs | 1 + ...gdb-pretty-struct-and-enums-pre-gdb-7-7.rs | 1 - .../debuginfo/gdb-pretty-struct-and-enums.rs | 1 - src/test/debuginfo/generic-function.rs | 1 + .../debuginfo/generic-functions-nested.rs | 3 + .../generic-method-on-generic-struct.rs | 1 + ...eneric-static-method-on-struct-and-enum.rs | 3 + .../debuginfo/generic-struct-style-enum.rs | 3 + src/test/debuginfo/generic-struct.rs | 3 + ...ric-trait-generic-static-default-method.rs | 1 + .../debuginfo/generic-tuple-style-enum.rs | 2 + src/test/debuginfo/include_string.rs | 1 + src/test/debuginfo/issue12886.rs | 4 +- .../debuginfo/lexical-scope-in-for-loop.rs | 2 + src/test/debuginfo/lexical-scope-in-if.rs | 1 + src/test/debuginfo/lexical-scope-in-match.rs | 1 + .../lexical-scope-in-stack-closure.rs | 2 + .../lexical-scope-in-unconditional-loop.rs | 2 + .../lexical-scope-in-unique-closure.rs | 3 + src/test/debuginfo/lexical-scope-in-while.rs | 1 + .../debuginfo/lexical-scope-with-macro.rs | 1 + .../lexical-scopes-in-block-expression.rs | 1 + src/test/debuginfo/limited-debuginfo.rs | 1 + src/test/debuginfo/method-on-enum.rs | 2 + .../debuginfo/method-on-generic-struct.rs | 2 + src/test/debuginfo/method-on-struct.rs | 3 + src/test/debuginfo/method-on-trait.rs | 3 + src/test/debuginfo/method-on-tuple-struct.rs | 3 + .../multiple-functions-equal-var-names.rs | 1 + src/test/debuginfo/multiple-functions.rs | 1 + .../name-shadowing-and-scope-nesting.rs | 2 + src/test/debuginfo/nil-enum.rs | 1 + src/test/debuginfo/no-debug-attribute.rs | 1 + src/test/debuginfo/option-like-enum.rs | 2 + .../packed-struct-with-destructor.rs | 1 + src/test/debuginfo/packed-struct.rs | 1 + src/test/debuginfo/recursive-enum.rs | 1 + src/test/debuginfo/recursive-struct.rs | 1 + src/test/debuginfo/self-in-default-method.rs | 1 + .../self-in-generic-default-method.rs | 1 + src/test/debuginfo/shadowed-argument.rs | 3 + src/test/debuginfo/shadowed-variable.rs | 2 + src/test/debuginfo/simd.rs | 1 + src/test/debuginfo/simple-lexical-scope.rs | 3 + src/test/debuginfo/simple-struct.rs | 5 +- src/test/debuginfo/simple-tuple.rs | 1 + .../static-method-on-struct-and-enum.rs | 2 + src/test/debuginfo/struct-in-enum.rs | 1 + src/test/debuginfo/struct-in-struct.rs | 1 + src/test/debuginfo/struct-style-enum.rs | 1 + src/test/debuginfo/struct-with-destructor.rs | 1 + .../trait-generic-static-default-method.rs | 2 + src/test/debuginfo/trait-pointers.rs | 1 + src/test/debuginfo/tuple-in-struct.rs | 1 + src/test/debuginfo/tuple-in-tuple.rs | 1 + src/test/debuginfo/tuple-struct.rs | 3 + src/test/debuginfo/tuple-style-enum.rs | 1 + src/test/debuginfo/type-names.rs | 2 + src/test/debuginfo/unique-enum.rs | 1 + .../var-captured-in-nested-closure.rs | 1 + .../var-captured-in-sendable-closure.rs | 1 + .../var-captured-in-stack-closure.rs | 1 + src/test/debuginfo/vec-slices.rs | 1 + src/test/debuginfo/vec.rs | 1 + 101 files changed, 396 insertions(+), 71 deletions(-) create mode 100644 src/etc/gdb_load_rust_pretty_printers.py create mode 100755 src/etc/rust-gdb diff --git a/mk/clean.mk b/mk/clean.mk index aadc55ba6c4..5b90d41ceec 100644 --- a/mk/clean.mk +++ b/mk/clean.mk @@ -64,6 +64,7 @@ clean-generic-$(2)-$(1): -name '*.dll' -o \ -name '*.def' -o \ -name '*.py' -o \ + -name '*.pyc' -o \ -name '*.bc' \ \) \ | xargs rm -f @@ -79,7 +80,7 @@ define CLEAN_HOST_STAGE_N clean$(1)_H_$(2): \ $$(foreach crate,$$(CRATES),clean$(1)_H_$(2)-lib-$$(crate)) \ - $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS),clean$(1)_H_$(2)-tool-$$(tool)) + $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS_ALL),clean$(1)_H_$(2)-tool-$$(tool)) $$(Q)rm -fr $(2)/rt/libbacktrace clean$(1)_H_$(2)-tool-%: @@ -99,7 +100,7 @@ define CLEAN_TARGET_STAGE_N clean$(1)_T_$(2)_H_$(3): \ $$(foreach crate,$$(CRATES),clean$(1)_T_$(2)_H_$(3)-lib-$$(crate)) \ - $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool)) + $$(foreach tool,$$(TOOLS) $$(DEBUGGER_BIN_SCRIPTS_ALL),clean$(1)_T_$(2)_H_$(3)-tool-$$(tool)) $$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libmorestack.a $$(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/libcompiler-rt.a $(Q)rm -f $$(TLIB$(1)_T_$(2)_H_$(3))/librun_pass_stage* # For unix diff --git a/mk/debuggers.mk b/mk/debuggers.mk index 54955f06295..899cc42d066 100644 --- a/mk/debuggers.mk +++ b/mk/debuggers.mk @@ -12,26 +12,77 @@ # Copy debugger related scripts ###################################################################### -DEBUGGER_RUSTLIB_ETC_SCRIPTS=lldb_rust_formatters.py -DEBUGGER_BIN_SCRIPTS=rust-lldb -DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS=$(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS), \ - $(CFG_SRC_DIR)src/etc/$(script)) -DEBUGGER_BIN_SCRIPTS_ABS=$(foreach script,$(DEBUGGER_BIN_SCRIPTS), \ - $(CFG_SRC_DIR)src/etc/$(script)) +## GDB ## +DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB=gdb_load_rust_pretty_printers.py \ + gdb_rust_pretty_printing.py +DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS=\ + $(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB), \ + $(CFG_SRC_DIR)src/etc/$(script)) + +DEBUGGER_BIN_SCRIPTS_GDB=rust-gdb +DEBUGGER_BIN_SCRIPTS_GDB_ABS=\ + $(foreach script,$(DEBUGGER_BIN_SCRIPTS_GDB), \ + $(CFG_SRC_DIR)src/etc/$(script)) + + +## LLDB ## +DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB=lldb_rust_formatters.py +DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS=\ + $(foreach script,$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB), \ + $(CFG_SRC_DIR)src/etc/$(script)) + +DEBUGGER_BIN_SCRIPTS_LLDB=rust-lldb +DEBUGGER_BIN_SCRIPTS_LLDB_ABS=\ + $(foreach script,$(DEBUGGER_BIN_SCRIPTS_LLDB), \ + $(CFG_SRC_DIR)src/etc/$(script)) + + +## ALL ## +DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL=$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB) \ + $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB) +DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS=$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) \ + $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) +DEBUGGER_BIN_SCRIPTS_ALL=$(DEBUGGER_BIN_SCRIPTS_GDB) \ + $(DEBUGGER_BIN_SCRIPTS_LLDB) +DEBUGGER_BIN_SCRIPTS_ALL_ABS=$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) \ + $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) -DEBUGGER_SCRIPTS_ALL=$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $(DEBUGGER_BIN_SCRIPTS_ABS) # $(1) - the stage to copy to # $(2) - the host triple define DEF_INSTALL_DEBUGGER_SCRIPTS_HOST -tmp/install-debugger-scripts$(1)_H_$(2).done: $$(DEBUGGER_SCRIPTS_ALL) +tmp/install-debugger-scripts$(1)_H_$(2)-gdb.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc - $(Q)install $(DEBUGGER_BIN_SCRIPTS_ABS) $$(HBIN$(1)_H_$(2)) - $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc + $(Q)install $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $$(HBIN$(1)_H_$(2)) + $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_H_$(2)-lldb.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) + $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) + $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc + $(Q)install $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $$(HBIN$(1)_H_$(2)) + $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc + $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_H_$(2)-all.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) + $(Q)mkdir -p $$(HBIN$(1)_H_$(2)) + $(Q)mkdir -p $$(HLIB$(1)_H_$(2))/rustlib/etc + $(Q)install $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) $$(HBIN$(1)_H_$(2)) + $(Q)install $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) $$(HLIB$(1)_H_$(2))/rustlib/etc + $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_H_$(2)-none.done: + $(Q)touch $$@ + endef # Expand host make-targets for all stages @@ -44,12 +95,36 @@ $(foreach stage,$(STAGES), \ # $(3) is the host triple define DEF_INSTALL_DEBUGGER_SCRIPTS_TARGET -tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3).done: $$(DEBUGGER_SCRIPTS_ALL) +tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-gdb.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc - $(Q)install $(DEBUGGER_BIN_SCRIPTS_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) - $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc + $(Q)install $(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) + $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-lldb.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) + $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) + $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc + $(Q)install $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) + $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc + $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-all.done: \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) \ + $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) + $(Q)mkdir -p $$(TBIN$(1)_T_$(2)_H_$(3)) + $(Q)mkdir -p $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc + $(Q)install $(DEBUGGER_BIN_SCRIPTS_ALL_ABS) $$(TBIN$(1)_T_$(2)_H_$(3)) + $(Q)install $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) $$(TLIB$(1)_T_$(2)_H_$(3))/rustlib/etc + $(Q)touch $$@ + +tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-none.done: + $(Q)touch $$@ + endef # Expand target make-targets for all stages diff --git a/mk/main.mk b/mk/main.mk index 4aed1cea9ca..7d0617b988a 100644 --- a/mk/main.mk +++ b/mk/main.mk @@ -325,6 +325,12 @@ export CFG_DISABLE_INJECT_STD_VERSION # Per-stage targets and runner ###################################################################### +# Valid setting-strings are 'all', 'none', 'gdb', 'lldb' +# This 'function' will determine which debugger scripts to copy based on a +# target triple. See debuggers.mk for more information. +TRIPLE_TO_DEBUGGER_SCRIPT_SETTING=\ + $(if $(findstring windows,$(1)),none,$(if $(findstring darwin,$(1)),lldb,gdb)) + STAGES = 0 1 2 3 define SREQ @@ -357,7 +363,7 @@ else HSREQ$(1)_H_$(3) = \ $$(HBIN$(1)_H_$(3))/rustc$$(X_$(3)) \ $$(MKFILE_DEPS) \ - tmp/install-debugger-scripts$(1)_H_$(3).done + tmp/install-debugger-scripts$(1)_H_$(3)-$$(call TRIPLE_TO_DEBUGGER_SCRIPT_SETTING,$(3)).done endif # Prerequisites for using the stageN compiler to build target artifacts @@ -372,7 +378,7 @@ SREQ$(1)_T_$(2)_H_$(3) = \ $$(TSREQ$(1)_T_$(2)_H_$(3)) \ $$(foreach dep,$$(TARGET_CRATES), \ $$(TLIB$(1)_T_$(2)_H_$(3))/stamp.$$(dep)) \ - tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3).done + tmp/install-debugger-scripts$(1)_T_$(2)_H_$(3)-$$(call TRIPLE_TO_DEBUGGER_SCRIPT_SETTING,$(2)).done # Prerequisites for a working stageN compiler and complete set of target # libraries diff --git a/mk/prepare.mk b/mk/prepare.mk index d404d3d2950..52fbbef81bd 100644 --- a/mk/prepare.mk +++ b/mk/prepare.mk @@ -144,6 +144,27 @@ prepare-target-$(2)-host-$(3)-$(1)-$(4): prepare-maybe-clean-$(4) \ $$(call PREPARE_LIB,libcompiler-rt.a),),),) endef +define INSTALL_GDB_DEBUGGER_SCRIPTS_COMMANDS + $(Q)$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_GDB_ABS) $(PREPARE_DEST_BIN_DIR) + $(Q)$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_GDB_ABS) $(PREPARE_DEST_LIB_DIR)/rustlib/etc +endef + +define INSTALL_LLDB_DEBUGGER_SCRIPTS_COMMANDS + $(Q)$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_LLDB_ABS) $(PREPARE_DEST_BIN_DIR) + $(Q)$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_LLDB_ABS) $(PREPARE_DEST_LIB_DIR)/rustlib/etc +endef + +define INSTALL_NO_DEBUGGER_SCRIPTS_COMMANDS + $(Q)echo "No debugger scripts will be installed for host $(PREPARE_HOST)" +endef + +# $(1) is PREPARE_HOST +INSTALL_DEBUGGER_SCRIPT_COMMANDS=$(if $(findstring windows,$(1)),\ + $(INSTALL_NO_DEBUGGER_SCRIPTS_COMMANDS),\ + $(if $(findstring darwin,$(1)),\ + $(INSTALL_LLDB_DEBUGGER_SCRIPTS_COMMANDS),\ + $(INSTALL_GDB_DEBUGGER_SCRIPTS_COMMANDS))) + define DEF_PREPARE prepare-base-$(1): PREPARE_SOURCE_DIR=$$(PREPARE_HOST)/stage$$(PREPARE_STAGE) @@ -170,9 +191,10 @@ prepare-host-dirs-$(1): prepare-maybe-clean-$(1) $$(call PREPARE_DIR,$$(PREPARE_DEST_LIB_DIR)/rustlib/etc) $$(call PREPARE_DIR,$$(PREPARE_DEST_MAN_DIR)) -prepare-debugger-scripts-$(1): prepare-host-dirs-$(1) $(DEBUGGER_SCRIPTS_ALL) - $$(Q)$$(PREPARE_BIN_CMD) $(DEBUGGER_BIN_SCRIPTS_ABS) $$(PREPARE_DEST_BIN_DIR) - $$(Q)$$(PREPARE_LIB_CMD) $(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ABS) $$(PREPARE_DEST_LIB_DIR)/rustlib/etc +prepare-debugger-scripts-$(1): prepare-host-dirs-$(1) \ + $$(DEBUGGER_BIN_SCRIPTS_ALL_ABS) \ + $$(DEBUGGER_RUSTLIB_ETC_SCRIPTS_ALL_ABS) + $$(call INSTALL_DEBUGGER_SCRIPT_COMMANDS,$$(PREPARE_HOST)) $$(foreach tool,$$(PREPARE_TOOLS), \ $$(foreach host,$$(CFG_HOST), \ diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 1abcd8bd214..6bc34f1eb2c 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -367,7 +367,6 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) { let DebuggerCommands { commands, check_lines, - use_gdb_pretty_printer, breakpoint_lines } = parse_debugger_commands(testfile, "gdb"); let mut cmds = commands.connect("\n"); @@ -521,16 +520,11 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) { if header::gdb_version_to_int(version.as_slice()) > header::gdb_version_to_int("7.4") { // Add the directory containing the pretty printers to - // GDB's script auto loading safe path ... + // GDB's script auto loading safe path script_str.push_str( format!("add-auto-load-safe-path {}\n", rust_pp_module_abs_path.replace("\\", "\\\\").as_slice()) .as_slice()); - // ... and also the test directory - script_str.push_str( - format!("add-auto-load-safe-path {}\n", - config.build_base.as_str().unwrap().replace("\\", "\\\\")) - .as_slice()); } } _ => { @@ -543,6 +537,9 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) { // pretty printing, it just tells GDB to print values on one line: script_str.push_str("set print pretty off\n"); + // Add the pretty printer directory to GDB's source-file search path + script_str.push_str(format!("directory {}\n", rust_pp_module_abs_path)[]); + // Load the target executable script_str.push_str(format!("file {}\n", exe_file.as_str().unwrap().replace("\\", "\\\\")) @@ -564,12 +561,6 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) { script_str.as_slice(), "debugger.script"); - if use_gdb_pretty_printer { - // Only emit the gdb auto-loading script if pretty printers - // should actually be loaded - dump_gdb_autoload_script(config, testfile); - } - // run debugger script with gdb #[cfg(windows)] fn debugger() -> String { @@ -611,19 +602,6 @@ fn run_debuginfo_gdb_test(config: &Config, props: &TestProps, testfile: &Path) { } check_debugger_output(&debugger_run_result, check_lines.as_slice()); - - fn dump_gdb_autoload_script(config: &Config, testfile: &Path) { - let mut script_path = output_base_name(config, testfile); - let mut script_file_name = script_path.filename().unwrap().to_vec(); - script_file_name.push_all("-gdb.py".as_bytes()); - script_path.set_filename(script_file_name.as_slice()); - - let script_content = "import gdb_rust_pretty_printing\n\ - gdb_rust_pretty_printing.register_printers(gdb.current_objfile())\n" - .as_bytes(); - - File::create(&script_path).write(script_content).unwrap(); - } } fn find_rust_src_root(config: &Config) -> Option { @@ -781,7 +759,6 @@ struct DebuggerCommands { commands: Vec, check_lines: Vec, breakpoint_lines: Vec, - use_gdb_pretty_printer: bool } fn parse_debugger_commands(file_path: &Path, debugger_prefix: &str) @@ -794,7 +771,6 @@ fn parse_debugger_commands(file_path: &Path, debugger_prefix: &str) let mut breakpoint_lines = vec!(); let mut commands = vec!(); let mut check_lines = vec!(); - let mut use_gdb_pretty_printer = false; let mut counter = 1; let mut reader = BufferedReader::new(File::open(file_path).unwrap()); for line in reader.lines() { @@ -804,10 +780,6 @@ fn parse_debugger_commands(file_path: &Path, debugger_prefix: &str) breakpoint_lines.push(counter); } - if line.as_slice().contains("gdb-use-pretty-printer") { - use_gdb_pretty_printer = true; - } - header::parse_name_value_directive( line.as_slice(), command_directive.as_slice()).map(|cmd| { @@ -832,7 +804,6 @@ fn parse_debugger_commands(file_path: &Path, debugger_prefix: &str) commands: commands, check_lines: check_lines, breakpoint_lines: breakpoint_lines, - use_gdb_pretty_printer: use_gdb_pretty_printer, } } diff --git a/src/etc/gdb_load_rust_pretty_printers.py b/src/etc/gdb_load_rust_pretty_printers.py new file mode 100644 index 00000000000..755cac153d1 --- /dev/null +++ b/src/etc/gdb_load_rust_pretty_printers.py @@ -0,0 +1,12 @@ +# Copyright 2014 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +import gdb_rust_pretty_printing +gdb_rust_pretty_printing.register_printers(gdb.current_objfile()) diff --git a/src/etc/rust-gdb b/src/etc/rust-gdb new file mode 100755 index 00000000000..520a108da91 --- /dev/null +++ b/src/etc/rust-gdb @@ -0,0 +1,23 @@ +#!/bin/sh +# Copyright 2014 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 or the MIT license +# , at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +# Exit if anything fails +set -e + +# Find out where the pretty printer Python module is +RUSTC_SYSROOT=`rustc --print=sysroot` +GDB_PYTHON_MODULE_DIRECTORY="$RUSTC_SYSROOT/lib/rustlib/etc" + +# Run GDB with the additional arguments that load the pretty printers +PYTHONPATH="$PYTHONPATH:$GDB_PYTHON_MODULE_DIRECTORY" gdb \ + -d "$GDB_PYTHON_MODULE_DIRECTORY" \ + -iex "add-auto-load-safe-path $GDB_PYTHON_MODULE_DIRECTORY" \ + "$@" diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs index 35c29f646e4..7c496623d62 100644 --- a/src/librustc/lint/builtin.rs +++ b/src/librustc/lint/builtin.rs @@ -654,6 +654,7 @@ impl LintPass for UnusedAttributes { "static_assert", "thread_local", "no_debug", + "omit_gdb_pretty_printer_section", "unsafe_no_drop_flag", // used in resolve diff --git a/src/librustc_llvm/lib.rs b/src/librustc_llvm/lib.rs index 3528b510ea1..296ebcf9cfd 100644 --- a/src/librustc_llvm/lib.rs +++ b/src/librustc_llvm/lib.rs @@ -1743,7 +1743,8 @@ extern { isOptimized: bool, Flags: *const c_char, RuntimeVer: c_uint, - SplitName: *const c_char); + SplitName: *const c_char) + -> DIDescriptor; pub fn LLVMDIBuilderCreateFile(Builder: DIBuilderRef, Filename: *const c_char, diff --git a/src/librustc_trans/trans/base.rs b/src/librustc_trans/trans/base.rs index f0d738d839d..c0837a54cdb 100644 --- a/src/librustc_trans/trans/base.rs +++ b/src/librustc_trans/trans/base.rs @@ -2673,6 +2673,8 @@ pub fn create_entry_wrapper(ccx: &CrateContext, unsafe { llvm::LLVMPositionBuilderAtEnd(bld, llbb); + debuginfo::insert_reference_to_gdb_debug_scripts_section_global(ccx); + let (start_fn, args) = if use_start_lang_item { let start_def_id = match ccx.tcx().lang_items.require(StartFnLangItem) { Ok(id) => id, diff --git a/src/librustc_trans/trans/debuginfo.rs b/src/librustc_trans/trans/debuginfo.rs index 56c42c7afde..23221d88157 100644 --- a/src/librustc_trans/trans/debuginfo.rs +++ b/src/librustc_trans/trans/debuginfo.rs @@ -212,7 +212,7 @@ use std::ptr; use std::rc::{Rc, Weak}; use syntax::util::interner::Interner; use syntax::codemap::{Span, Pos}; -use syntax::{ast, codemap, ast_util, ast_map}; +use syntax::{ast, codemap, ast_util, ast_map, attr}; use syntax::ast_util::PostExpansionMethod; use syntax::parse::token::{mod, special_idents}; @@ -740,7 +740,16 @@ pub fn finalize(cx: &CrateContext) { } debug!("finalize"); - compile_unit_metadata(cx); + let _ = compile_unit_metadata(cx); + + if needs_gdb_debug_scripts_section(cx) { + // Add a .debug_gdb_scripts section to this compile-unit. This will + // cause GDB to try and load the gdb_load_rust_pretty_printers.py file, + // which activates the Rust pretty printers for binary this section is + // contained in. + get_or_insert_gdb_debug_scripts_section_global(cx); + } + unsafe { llvm::LLVMDIBuilderFinalize(DIB(cx)); llvm::LLVMDIBuilderDispose(DIB(cx)); @@ -1579,7 +1588,7 @@ fn create_DIArray(builder: DIBuilderRef, arr: &[DIDescriptor]) -> DIArray { }; } -fn compile_unit_metadata(cx: &CrateContext) { +fn compile_unit_metadata(cx: &CrateContext) -> DIDescriptor { let work_dir = &cx.sess().working_dir; let compile_unit_name = match cx.sess().local_crate_source_file { None => fallback_path(cx), @@ -1614,7 +1623,7 @@ fn compile_unit_metadata(cx: &CrateContext) { (option_env!("CFG_VERSION")).expect("CFG_VERSION")); let compile_unit_name = compile_unit_name.as_ptr(); - work_dir.as_vec().with_c_str(|work_dir| { + return work_dir.as_vec().with_c_str(|work_dir| { producer.with_c_str(|producer| { "".with_c_str(|flags| { "".with_c_str(|split_name| { @@ -1628,7 +1637,7 @@ fn compile_unit_metadata(cx: &CrateContext) { cx.sess().opts.optimize != config::No, flags, 0, - split_name); + split_name) } }) }) @@ -4103,3 +4112,76 @@ fn namespace_for_item(cx: &CrateContext, def_id: ast::DefId) -> Rc llvm::ValueRef { + let section_var_name = b"__rustc_debug_gdb_scripts_section__".to_c_str(); + + let section_var = unsafe { + llvm::LLVMGetNamedGlobal(ccx.llmod(), section_var_name.as_ptr()) + }; + + if section_var == ptr::null_mut() { + let section_name = b".debug_gdb_scripts".to_c_str(); + let section_contents = b"\x01gdb_load_rust_pretty_printers.py\0"; + + unsafe { + let llvm_type = Type::array(&Type::i8(ccx), + section_contents.len() as u64); + let section_var = llvm::LLVMAddGlobal(ccx.llmod(), + llvm_type.to_ref(), + section_var_name.as_ptr()); + llvm::LLVMSetSection(section_var, section_name.as_ptr()); + llvm::LLVMSetInitializer(section_var, C_bytes(ccx, section_contents)); + llvm::LLVMSetGlobalConstant(section_var, llvm::True); + llvm::LLVMSetUnnamedAddr(section_var, llvm::True); + llvm::SetLinkage(section_var, llvm::Linkage::LinkOnceODRLinkage); + // This should make sure that the whole section is not larger than + // the string it contains. Otherwise we get a warning from GDB. + llvm::LLVMSetAlignment(section_var, 1); + section_var + } + } else { + section_var + } +} + +fn needs_gdb_debug_scripts_section(ccx: &CrateContext) -> bool { + let omit_gdb_pretty_printer_section = + attr::contains_name(ccx.tcx() + .map + .krate() + .attrs + .as_slice(), + "omit_gdb_pretty_printer_section"); + + !omit_gdb_pretty_printer_section && + !ccx.sess().target.target.options.is_like_osx && + !ccx.sess().target.target.options.is_like_windows && + ccx.sess().opts.debuginfo != NoDebugInfo +} + diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp index 9fda05431db..bce73a27699 100644 --- a/src/rustllvm/RustWrapper.cpp +++ b/src/rustllvm/RustWrapper.cpp @@ -257,7 +257,7 @@ extern "C" void LLVMDIBuilderFinalize(DIBuilderRef Builder) { Builder->finalize(); } -extern "C" void LLVMDIBuilderCreateCompileUnit( +extern "C" LLVMValueRef LLVMDIBuilderCreateCompileUnit( DIBuilderRef Builder, unsigned Lang, const char* File, @@ -267,8 +267,14 @@ extern "C" void LLVMDIBuilderCreateCompileUnit( const char* Flags, unsigned RuntimeVer, const char* SplitName) { - Builder->createCompileUnit(Lang, File, Dir, Producer, isOptimized, - Flags, RuntimeVer, SplitName); + return wrap(Builder->createCompileUnit(Lang, + File, + Dir, + Producer, + isOptimized, + Flags, + RuntimeVer, + SplitName)); } extern "C" LLVMValueRef LLVMDIBuilderCreateFile( diff --git a/src/test/debuginfo/basic-types-globals-metadata.rs b/src/test/debuginfo/basic-types-globals-metadata.rs index 54d34d1840c..4251f22b291 100644 --- a/src/test/debuginfo/basic-types-globals-metadata.rs +++ b/src/test/debuginfo/basic-types-globals-metadata.rs @@ -45,6 +45,7 @@ #![allow(unused_variables)] #![allow(dead_code)] +#![omit_gdb_pretty_printer_section] static B: bool = false; diff --git a/src/test/debuginfo/basic-types-globals.rs b/src/test/debuginfo/basic-types-globals.rs index bbb8c2423c3..a4d4ddfea53 100644 --- a/src/test/debuginfo/basic-types-globals.rs +++ b/src/test/debuginfo/basic-types-globals.rs @@ -50,6 +50,7 @@ // gdb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] static B: bool = false; static I: int = -1; diff --git a/src/test/debuginfo/basic-types-metadata.rs b/src/test/debuginfo/basic-types-metadata.rs index b998f096a07..6aa228ec51b 100644 --- a/src/test/debuginfo/basic-types-metadata.rs +++ b/src/test/debuginfo/basic-types-metadata.rs @@ -48,6 +48,7 @@ // gdb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let unit: () = (); diff --git a/src/test/debuginfo/basic-types-mut-globals.rs b/src/test/debuginfo/basic-types-mut-globals.rs index 435bfd98989..bc8cdaf8eac 100644 --- a/src/test/debuginfo/basic-types-mut-globals.rs +++ b/src/test/debuginfo/basic-types-mut-globals.rs @@ -83,6 +83,7 @@ // gdb-check:$28 = 9.25 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] static mut B: bool = false; static mut I: int = -1; diff --git a/src/test/debuginfo/basic-types.rs b/src/test/debuginfo/basic-types.rs index 8be91e3ee76..f61f49228cd 100644 --- a/src/test/debuginfo/basic-types.rs +++ b/src/test/debuginfo/basic-types.rs @@ -88,6 +88,7 @@ // lldb-check:[...]$12 = 3.5 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let b: bool = false; diff --git a/src/test/debuginfo/borrowed-basic.rs b/src/test/debuginfo/borrowed-basic.rs index 00bee44d264..f4c31278cf6 100644 --- a/src/test/debuginfo/borrowed-basic.rs +++ b/src/test/debuginfo/borrowed-basic.rs @@ -109,6 +109,7 @@ // lldb-check:[...]$12 = 3.5 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let bool_val: bool = true; diff --git a/src/test/debuginfo/borrowed-c-style-enum.rs b/src/test/debuginfo/borrowed-c-style-enum.rs index bbda6c93eba..c2da58f1583 100644 --- a/src/test/debuginfo/borrowed-c-style-enum.rs +++ b/src/test/debuginfo/borrowed-c-style-enum.rs @@ -41,6 +41,7 @@ // lldb-check:[...]$2 = TheC #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] enum ABC { TheA, TheB, TheC } diff --git a/src/test/debuginfo/borrowed-enum.rs b/src/test/debuginfo/borrowed-enum.rs index 9cda56a7743..d54869888f1 100644 --- a/src/test/debuginfo/borrowed-enum.rs +++ b/src/test/debuginfo/borrowed-enum.rs @@ -40,6 +40,7 @@ // lldb-check:[...]$2 = TheOnlyCase(4820353753753434) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] // The first element is to ensure proper alignment, irrespective of the machines word size. Since // the size of the discriminant value is machine dependent, this has be taken into account when diff --git a/src/test/debuginfo/borrowed-struct.rs b/src/test/debuginfo/borrowed-struct.rs index 7e6cf41162c..e3cf438be43 100644 --- a/src/test/debuginfo/borrowed-struct.rs +++ b/src/test/debuginfo/borrowed-struct.rs @@ -64,6 +64,7 @@ // lldb-check:[...]$6 = 26.5 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct SomeStruct { x: int, diff --git a/src/test/debuginfo/borrowed-tuple.rs b/src/test/debuginfo/borrowed-tuple.rs index 57c14450467..ce0930f2fbf 100644 --- a/src/test/debuginfo/borrowed-tuple.rs +++ b/src/test/debuginfo/borrowed-tuple.rs @@ -42,6 +42,7 @@ #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let stack_val: (i16, f32) = (-14, -19f32); diff --git a/src/test/debuginfo/borrowed-unique-basic.rs b/src/test/debuginfo/borrowed-unique-basic.rs index 30787716c72..d152775a8ed 100644 --- a/src/test/debuginfo/borrowed-unique-basic.rs +++ b/src/test/debuginfo/borrowed-unique-basic.rs @@ -112,7 +112,7 @@ // lldb-check:[...]$12 = 3.5 #![allow(unused_variables)] - +#![omit_gdb_pretty_printer_section] fn main() { let bool_box: Box = box true; diff --git a/src/test/debuginfo/box.rs b/src/test/debuginfo/box.rs index 59f0c8f2d65..5a70eb19041 100644 --- a/src/test/debuginfo/box.rs +++ b/src/test/debuginfo/box.rs @@ -32,6 +32,7 @@ // lldb-check:[...]$1 = (2, 3.5) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let a = box 1i; diff --git a/src/test/debuginfo/boxed-struct.rs b/src/test/debuginfo/boxed-struct.rs index 8f77de7e6d3..f9d762bf99d 100644 --- a/src/test/debuginfo/boxed-struct.rs +++ b/src/test/debuginfo/boxed-struct.rs @@ -35,6 +35,7 @@ // lldb-check:[...]$1 = StructWithDestructor { x: 77, y: 777, z: 7777, w: 77777 } #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct StructWithSomePadding { x: i16, diff --git a/src/test/debuginfo/by-value-non-immediate-argument.rs b/src/test/debuginfo/by-value-non-immediate-argument.rs index 258c49afcc4..b0c5b2f21b9 100644 --- a/src/test/debuginfo/by-value-non-immediate-argument.rs +++ b/src/test/debuginfo/by-value-non-immediate-argument.rs @@ -71,6 +71,8 @@ // lldb-check:[...]$6 = Case1 { x: 0, y: 8970181431921507452 } // lldb-command:continue +#![omit_gdb_pretty_printer_section] + #[deriving(Clone)] struct Struct { a: int, diff --git a/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs b/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs index 57a3e503d0a..6907313370e 100644 --- a/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs +++ b/src/test/debuginfo/by-value-self-argument-in-trait-impl.rs @@ -46,6 +46,8 @@ // lldb-check:[...]$2 = (4444.5, 5555, 6666, 7777.5) // lldb-command:continue +#![omit_gdb_pretty_printer_section] + trait Trait { fn method(self) -> Self; } diff --git a/src/test/debuginfo/c-style-enum-in-composite.rs b/src/test/debuginfo/c-style-enum-in-composite.rs index 17e4110c2f1..f2dfc63d522 100644 --- a/src/test/debuginfo/c-style-enum-in-composite.rs +++ b/src/test/debuginfo/c-style-enum-in-composite.rs @@ -65,6 +65,7 @@ // lldb-check:[...]$6 = (StructWithDrop { a: OneHundred, b: Vienna }, 9) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::AnEnum::{OneHundred, OneThousand, OneMillion}; use self::AnotherEnum::{MountainView, Toronto, Vienna}; diff --git a/src/test/debuginfo/c-style-enum.rs b/src/test/debuginfo/c-style-enum.rs index b0a0142f6dd..b62a8167eaf 100644 --- a/src/test/debuginfo/c-style-enum.rs +++ b/src/test/debuginfo/c-style-enum.rs @@ -99,6 +99,7 @@ #![allow(unused_variables)] #![allow(dead_code)] +#![omit_gdb_pretty_printer_section] use self::AutoDiscriminant::{One, Two, Three}; use self::ManualDiscriminant::{OneHundred, OneThousand, OneMillion}; diff --git a/src/test/debuginfo/closure-in-generic-function.rs b/src/test/debuginfo/closure-in-generic-function.rs index 673b4676a95..84366ae7114 100644 --- a/src/test/debuginfo/closure-in-generic-function.rs +++ b/src/test/debuginfo/closure-in-generic-function.rs @@ -46,6 +46,8 @@ // lldb-check:[...]$3 = 110 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn some_generic_fun(a: T1, b: T2) -> (T2, T1) { let closure = |x, y| { diff --git a/src/test/debuginfo/destructured-fn-argument.rs b/src/test/debuginfo/destructured-fn-argument.rs index 17e1651f9f6..b4688e4928a 100644 --- a/src/test/debuginfo/destructured-fn-argument.rs +++ b/src/test/debuginfo/destructured-fn-argument.rs @@ -311,6 +311,7 @@ // lldb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Univariant::Unit; diff --git a/src/test/debuginfo/destructured-for-loop-variable.rs b/src/test/debuginfo/destructured-for-loop-variable.rs index 9935bb60364..364720d0e4f 100644 --- a/src/test/debuginfo/destructured-for-loop-variable.rs +++ b/src/test/debuginfo/destructured-for-loop-variable.rs @@ -152,6 +152,9 @@ // lldb-check:[...]$23 = (34903493, 232323) // lldb-command:continue +#![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] + struct Struct { x: i16, y: f32, diff --git a/src/test/debuginfo/destructured-local.rs b/src/test/debuginfo/destructured-local.rs index 58db37888e6..d5a6b36f1fc 100644 --- a/src/test/debuginfo/destructured-local.rs +++ b/src/test/debuginfo/destructured-local.rs @@ -244,6 +244,7 @@ #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Univariant::Unit; diff --git a/src/test/debuginfo/evec-in-struct.rs b/src/test/debuginfo/evec-in-struct.rs index 786868f6b89..f623a321922 100644 --- a/src/test/debuginfo/evec-in-struct.rs +++ b/src/test/debuginfo/evec-in-struct.rs @@ -51,6 +51,7 @@ // lldb-check:[...]$4 = StructPaddedAtEnd { x: [22, 23], y: [24, 25] } #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct NoPadding1 { x: [u32; 3], diff --git a/src/test/debuginfo/function-arg-initialization.rs b/src/test/debuginfo/function-arg-initialization.rs index 53b3044b0f7..55c5c504064 100644 --- a/src/test/debuginfo/function-arg-initialization.rs +++ b/src/test/debuginfo/function-arg-initialization.rs @@ -222,10 +222,8 @@ // lldb-command:continue - #![allow(unused_variables)] - - +#![omit_gdb_pretty_printer_section] fn immediate_args(a: int, b: bool, c: f64) { ::std::io::print("") // #break diff --git a/src/test/debuginfo/function-arguments.rs b/src/test/debuginfo/function-arguments.rs index 304745e3945..01136c11014 100644 --- a/src/test/debuginfo/function-arguments.rs +++ b/src/test/debuginfo/function-arguments.rs @@ -45,6 +45,9 @@ // lldb-check:[...]$3 = 3000 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + fn main() { fun(111102, true); diff --git a/src/test/debuginfo/function-prologue-stepping-no-stack-check.rs b/src/test/debuginfo/function-prologue-stepping-no-stack-check.rs index 3288fa4c0cb..e437e35db3a 100644 --- a/src/test/debuginfo/function-prologue-stepping-no-stack-check.rs +++ b/src/test/debuginfo/function-prologue-stepping-no-stack-check.rs @@ -245,6 +245,7 @@ // lldb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] #[no_stack_check] fn immediate_args(a: int, b: bool, c: f64) { diff --git a/src/test/debuginfo/function-prologue-stepping-regular.rs b/src/test/debuginfo/function-prologue-stepping-regular.rs index dbeb87fd44a..05ea357389b 100644 --- a/src/test/debuginfo/function-prologue-stepping-regular.rs +++ b/src/test/debuginfo/function-prologue-stepping-regular.rs @@ -126,6 +126,7 @@ // lldb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn immediate_args(a: int, b: bool, c: f64) { () diff --git a/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs b/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs index 8abb2cd5c26..092cd9edc70 100644 --- a/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs +++ b/src/test/debuginfo/gdb-pretty-struct-and-enums-pre-gdb-7-7.rs @@ -17,7 +17,6 @@ // ignore-lldb // ignore-android: FIXME(#10381) // compile-flags:-g -// gdb-use-pretty-printer // gdb-command: run diff --git a/src/test/debuginfo/gdb-pretty-struct-and-enums.rs b/src/test/debuginfo/gdb-pretty-struct-and-enums.rs index 76cf3c1149d..64c120e1ab3 100644 --- a/src/test/debuginfo/gdb-pretty-struct-and-enums.rs +++ b/src/test/debuginfo/gdb-pretty-struct-and-enums.rs @@ -13,7 +13,6 @@ // ignore-lldb // ignore-android: FIXME(#10381) // compile-flags:-g -// gdb-use-pretty-printer // This test uses some GDB Python API features (e.g. accessing anonymous fields) // which are only available in newer GDB version. The following directive will diff --git a/src/test/debuginfo/generic-function.rs b/src/test/debuginfo/generic-function.rs index abfe95db51b..cefe67970e9 100644 --- a/src/test/debuginfo/generic-function.rs +++ b/src/test/debuginfo/generic-function.rs @@ -70,6 +70,7 @@ // lldb-check:[...]$8 = ((5, Struct { a: 6, b: 7.5 }), (Struct { a: 6, b: 7.5 }, 5)) // lldb-command:continue +#![omit_gdb_pretty_printer_section] #[deriving(Clone)] struct Struct { diff --git a/src/test/debuginfo/generic-functions-nested.rs b/src/test/debuginfo/generic-functions-nested.rs index 069906b14fd..0f3fd556f18 100644 --- a/src/test/debuginfo/generic-functions-nested.rs +++ b/src/test/debuginfo/generic-functions-nested.rs @@ -70,6 +70,9 @@ // lldb-check:[...]$7 = 2.5 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + fn outer(a: TA) { inner(a.clone(), 1i); inner(a.clone(), 2.5f64); diff --git a/src/test/debuginfo/generic-method-on-generic-struct.rs b/src/test/debuginfo/generic-method-on-generic-struct.rs index 4c0c82efea3..0e358499a3d 100644 --- a/src/test/debuginfo/generic-method-on-generic-struct.rs +++ b/src/test/debuginfo/generic-method-on-generic-struct.rs @@ -112,6 +112,7 @@ // lldb-check:[...]$14 = -10.5 // lldb-command:continue +#![omit_gdb_pretty_printer_section] struct Struct { x: T diff --git a/src/test/debuginfo/generic-static-method-on-struct-and-enum.rs b/src/test/debuginfo/generic-static-method-on-struct-and-enum.rs index d69d432fcb3..bf755d379a6 100644 --- a/src/test/debuginfo/generic-static-method-on-struct-and-enum.rs +++ b/src/test/debuginfo/generic-static-method-on-struct-and-enum.rs @@ -31,6 +31,9 @@ // gdb-check:$5 = 5 // gdb-command:continue + +#![omit_gdb_pretty_printer_section] + struct Struct { x: int } diff --git a/src/test/debuginfo/generic-struct-style-enum.rs b/src/test/debuginfo/generic-struct-style-enum.rs index 5e967266421..992e7417913 100644 --- a/src/test/debuginfo/generic-struct-style-enum.rs +++ b/src/test/debuginfo/generic-struct-style-enum.rs @@ -29,6 +29,9 @@ // gdb-command:print univariant // gdb-check:$4 = {{a = -1}} + +#![omit_gdb_pretty_printer_section] + use self::Regular::{Case1, Case2, Case3}; use self::Univariant::TheOnlyCase; diff --git a/src/test/debuginfo/generic-struct.rs b/src/test/debuginfo/generic-struct.rs index 7d485a6f5d5..908968fd6b3 100644 --- a/src/test/debuginfo/generic-struct.rs +++ b/src/test/debuginfo/generic-struct.rs @@ -41,6 +41,9 @@ // lldb-command:print float_int_float // lldb-check:[...]$3 = AGenericStruct> { key: 6.5, value: AGenericStruct { key: 7, value: 8.5 } } + +#![omit_gdb_pretty_printer_section] + struct AGenericStruct { key: TKey, value: TValue diff --git a/src/test/debuginfo/generic-trait-generic-static-default-method.rs b/src/test/debuginfo/generic-trait-generic-static-default-method.rs index 0984f8c9fa2..4382861fd20 100644 --- a/src/test/debuginfo/generic-trait-generic-static-default-method.rs +++ b/src/test/debuginfo/generic-trait-generic-static-default-method.rs @@ -25,6 +25,7 @@ // gdb-check:$4 = {3.5, {4, 5, 6}} // gdb-command:continue +#![omit_gdb_pretty_printer_section] struct Struct { x: int diff --git a/src/test/debuginfo/generic-tuple-style-enum.rs b/src/test/debuginfo/generic-tuple-style-enum.rs index 74d5dd2adc8..f9dc9d1f055 100644 --- a/src/test/debuginfo/generic-tuple-style-enum.rs +++ b/src/test/debuginfo/generic-tuple-style-enum.rs @@ -48,6 +48,8 @@ // lldb-command:print univariant // lldb-check:[...]$3 = TheOnlyCase(-1) +#![omit_gdb_pretty_printer_section] + use self::Regular::{Case1, Case2, Case3}; use self::Univariant::TheOnlyCase; diff --git a/src/test/debuginfo/include_string.rs b/src/test/debuginfo/include_string.rs index f196938437a..25719a80286 100644 --- a/src/test/debuginfo/include_string.rs +++ b/src/test/debuginfo/include_string.rs @@ -36,6 +36,7 @@ // lldb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] // This test case makes sure that debug info does not ICE when include_str is // used multiple times (see issue #11322). diff --git a/src/test/debuginfo/issue12886.rs b/src/test/debuginfo/issue12886.rs index e2dae2dc3f0..c6acc9a31fe 100644 --- a/src/test/debuginfo/issue12886.rs +++ b/src/test/debuginfo/issue12886.rs @@ -16,9 +16,11 @@ // gdb-command:run // gdb-command:next -// gdb-check:[...]32[...]s +// gdb-check:[...]34[...]s // gdb-command:continue +#![omit_gdb_pretty_printer_section] + // IF YOU MODIFY THIS FILE, BE CAREFUL TO ADAPT THE LINE NUMBERS IN THE DEBUGGER COMMANDS // This test makes sure that gdb does not set unwanted breakpoints in inlined functions. If a diff --git a/src/test/debuginfo/lexical-scope-in-for-loop.rs b/src/test/debuginfo/lexical-scope-in-for-loop.rs index 7636ffdb07d..3309ae13c9d 100644 --- a/src/test/debuginfo/lexical-scope-in-for-loop.rs +++ b/src/test/debuginfo/lexical-scope-in-for-loop.rs @@ -86,6 +86,8 @@ // lldb-check:[...]$6 = 1000000 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn main() { let range = [1i, 2, 3]; diff --git a/src/test/debuginfo/lexical-scope-in-if.rs b/src/test/debuginfo/lexical-scope-in-if.rs index 5bfe8371209..bc3a6945243 100644 --- a/src/test/debuginfo/lexical-scope-in-if.rs +++ b/src/test/debuginfo/lexical-scope-in-if.rs @@ -134,6 +134,7 @@ // lldb-check:[...]$15 = -1 // lldb-command:continue +#![omit_gdb_pretty_printer_section] fn main() { diff --git a/src/test/debuginfo/lexical-scope-in-match.rs b/src/test/debuginfo/lexical-scope-in-match.rs index 6a956e06f24..37976ab3996 100644 --- a/src/test/debuginfo/lexical-scope-in-match.rs +++ b/src/test/debuginfo/lexical-scope-in-match.rs @@ -126,6 +126,7 @@ // lldb-check:[...]$17 = 232 // lldb-command:continue +#![omit_gdb_pretty_printer_section] struct Struct { x: int, diff --git a/src/test/debuginfo/lexical-scope-in-stack-closure.rs b/src/test/debuginfo/lexical-scope-in-stack-closure.rs index 6666ddfbc82..d6e3a43eea0 100644 --- a/src/test/debuginfo/lexical-scope-in-stack-closure.rs +++ b/src/test/debuginfo/lexical-scope-in-stack-closure.rs @@ -70,6 +70,8 @@ // lldb-check:[...]$5 = false // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn main() { let x = false; diff --git a/src/test/debuginfo/lexical-scope-in-unconditional-loop.rs b/src/test/debuginfo/lexical-scope-in-unconditional-loop.rs index 51ddc83a8d8..b295c6f37a7 100644 --- a/src/test/debuginfo/lexical-scope-in-unconditional-loop.rs +++ b/src/test/debuginfo/lexical-scope-in-unconditional-loop.rs @@ -132,6 +132,8 @@ // lldb-check:[...]$12 = 2 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn main() { let mut x = 0i; diff --git a/src/test/debuginfo/lexical-scope-in-unique-closure.rs b/src/test/debuginfo/lexical-scope-in-unique-closure.rs index fa7822495d5..be4085b63ab 100644 --- a/src/test/debuginfo/lexical-scope-in-unique-closure.rs +++ b/src/test/debuginfo/lexical-scope-in-unique-closure.rs @@ -70,6 +70,9 @@ // lldb-check:[...]$5 = false // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + fn main() { let x = false; diff --git a/src/test/debuginfo/lexical-scope-in-while.rs b/src/test/debuginfo/lexical-scope-in-while.rs index bafff552cd3..c7a36ef9b82 100644 --- a/src/test/debuginfo/lexical-scope-in-while.rs +++ b/src/test/debuginfo/lexical-scope-in-while.rs @@ -132,6 +132,7 @@ // lldb-check:[...]$12 = 2 // lldb-command:continue +#![omit_gdb_pretty_printer_section] fn main() { diff --git a/src/test/debuginfo/lexical-scope-with-macro.rs b/src/test/debuginfo/lexical-scope-with-macro.rs index 2c76f2ca7df..be52ffff1b4 100644 --- a/src/test/debuginfo/lexical-scope-with-macro.rs +++ b/src/test/debuginfo/lexical-scope-with-macro.rs @@ -112,6 +112,7 @@ #![feature(macro_rules)] +#![omit_gdb_pretty_printer_section] macro_rules! trivial { ($e1:expr) => ($e1) diff --git a/src/test/debuginfo/lexical-scopes-in-block-expression.rs b/src/test/debuginfo/lexical-scopes-in-block-expression.rs index 41dee642fea..2f8b11ac283 100644 --- a/src/test/debuginfo/lexical-scopes-in-block-expression.rs +++ b/src/test/debuginfo/lexical-scopes-in-block-expression.rs @@ -349,6 +349,7 @@ #![allow(unused_variables)] #![allow(unused_assignments)] +#![omit_gdb_pretty_printer_section] static mut MUT_INT: int = 0; diff --git a/src/test/debuginfo/limited-debuginfo.rs b/src/test/debuginfo/limited-debuginfo.rs index 3a633fc5eec..35889ff8133 100644 --- a/src/test/debuginfo/limited-debuginfo.rs +++ b/src/test/debuginfo/limited-debuginfo.rs @@ -30,6 +30,7 @@ #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct Struct { a: i64, diff --git a/src/test/debuginfo/method-on-enum.rs b/src/test/debuginfo/method-on-enum.rs index 8cb8fae75cf..b1ebb124d4e 100644 --- a/src/test/debuginfo/method-on-enum.rs +++ b/src/test/debuginfo/method-on-enum.rs @@ -113,6 +113,8 @@ // lldb-check:[...]$14 = -10 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + enum Enum { Variant1 { x: u16, y: u16 }, Variant2 (u32) diff --git a/src/test/debuginfo/method-on-generic-struct.rs b/src/test/debuginfo/method-on-generic-struct.rs index d4244ee27d4..68a6ac8c1f3 100644 --- a/src/test/debuginfo/method-on-generic-struct.rs +++ b/src/test/debuginfo/method-on-generic-struct.rs @@ -113,6 +113,8 @@ // lldb-command:continue +#![omit_gdb_pretty_printer_section] + struct Struct { x: T } diff --git a/src/test/debuginfo/method-on-struct.rs b/src/test/debuginfo/method-on-struct.rs index ca00587ba44..84e74d4364c 100644 --- a/src/test/debuginfo/method-on-struct.rs +++ b/src/test/debuginfo/method-on-struct.rs @@ -112,6 +112,9 @@ // lldb-check:[...]$14 = -10 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + struct Struct { x: int } diff --git a/src/test/debuginfo/method-on-trait.rs b/src/test/debuginfo/method-on-trait.rs index e70f86a5367..f53bb11eac4 100644 --- a/src/test/debuginfo/method-on-trait.rs +++ b/src/test/debuginfo/method-on-trait.rs @@ -112,6 +112,9 @@ // lldb-check:[...]$14 = -10 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + struct Struct { x: int } diff --git a/src/test/debuginfo/method-on-tuple-struct.rs b/src/test/debuginfo/method-on-tuple-struct.rs index 31bdd20e409..6994c38818c 100644 --- a/src/test/debuginfo/method-on-tuple-struct.rs +++ b/src/test/debuginfo/method-on-tuple-struct.rs @@ -112,6 +112,9 @@ // lldb-check:[...]$14 = -10 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + struct TupleStruct(int, f64); impl TupleStruct { diff --git a/src/test/debuginfo/multiple-functions-equal-var-names.rs b/src/test/debuginfo/multiple-functions-equal-var-names.rs index d5d085bfe50..cb21c13426a 100644 --- a/src/test/debuginfo/multiple-functions-equal-var-names.rs +++ b/src/test/debuginfo/multiple-functions-equal-var-names.rs @@ -45,6 +45,7 @@ // lldb-check:[...]$2 = 30303 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn function_one() { let abc = 10101i; diff --git a/src/test/debuginfo/multiple-functions.rs b/src/test/debuginfo/multiple-functions.rs index a94785b892d..ef7c4ce2045 100644 --- a/src/test/debuginfo/multiple-functions.rs +++ b/src/test/debuginfo/multiple-functions.rs @@ -45,6 +45,7 @@ // lldb-check:[...]$2 = 30303 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn function_one() { let a = 10101i; diff --git a/src/test/debuginfo/name-shadowing-and-scope-nesting.rs b/src/test/debuginfo/name-shadowing-and-scope-nesting.rs index 5d6dfb90794..d248c7e9819 100644 --- a/src/test/debuginfo/name-shadowing-and-scope-nesting.rs +++ b/src/test/debuginfo/name-shadowing-and-scope-nesting.rs @@ -94,6 +94,8 @@ // lldb-check:[...]$11 = 20 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn main() { let x = false; let y = true; diff --git a/src/test/debuginfo/nil-enum.rs b/src/test/debuginfo/nil-enum.rs index 306dfed9895..f0eaf6acb61 100644 --- a/src/test/debuginfo/nil-enum.rs +++ b/src/test/debuginfo/nil-enum.rs @@ -23,6 +23,7 @@ // gdb-check:$2 = {} #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] enum ANilEnum {} enum AnotherNilEnum {} diff --git a/src/test/debuginfo/no-debug-attribute.rs b/src/test/debuginfo/no-debug-attribute.rs index 826ac381c82..dcc1928ae50 100644 --- a/src/test/debuginfo/no-debug-attribute.rs +++ b/src/test/debuginfo/no-debug-attribute.rs @@ -24,6 +24,7 @@ // gdb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn function_with_debuginfo() { let abc = 10u; diff --git a/src/test/debuginfo/option-like-enum.rs b/src/test/debuginfo/option-like-enum.rs index 333a430e351..333ad602cf1 100644 --- a/src/test/debuginfo/option-like-enum.rs +++ b/src/test/debuginfo/option-like-enum.rs @@ -68,6 +68,8 @@ // lldb-check:[...]$7 = None +#![omit_gdb_pretty_printer_section] + // If a struct has exactly two variants, one of them is empty, and the other one // contains a non-nullable pointer, then this value is used as the discriminator. // The test cases in this file make sure that something readable is generated for diff --git a/src/test/debuginfo/packed-struct-with-destructor.rs b/src/test/debuginfo/packed-struct-with-destructor.rs index 1140c2cdb44..84c0b8da02c 100644 --- a/src/test/debuginfo/packed-struct-with-destructor.rs +++ b/src/test/debuginfo/packed-struct-with-destructor.rs @@ -74,6 +74,7 @@ #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] #[repr(packed)] struct Packed { diff --git a/src/test/debuginfo/packed-struct.rs b/src/test/debuginfo/packed-struct.rs index 93941823fbc..97e6ee79952 100644 --- a/src/test/debuginfo/packed-struct.rs +++ b/src/test/debuginfo/packed-struct.rs @@ -60,6 +60,7 @@ // lldb-check:[...]$5 = 40 #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] #[repr(packed)] struct Packed { diff --git a/src/test/debuginfo/recursive-enum.rs b/src/test/debuginfo/recursive-enum.rs index f43caed0810..93348e7b53e 100644 --- a/src/test/debuginfo/recursive-enum.rs +++ b/src/test/debuginfo/recursive-enum.rs @@ -18,6 +18,7 @@ // is taken from issue #11083. #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] pub struct Window<'a> { callbacks: WindowCallbacks<'a> diff --git a/src/test/debuginfo/recursive-struct.rs b/src/test/debuginfo/recursive-struct.rs index 8cc0fdabfc2..90c32ad8da1 100644 --- a/src/test/debuginfo/recursive-struct.rs +++ b/src/test/debuginfo/recursive-struct.rs @@ -69,6 +69,7 @@ // gdb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Opt::{Empty, Val}; diff --git a/src/test/debuginfo/self-in-default-method.rs b/src/test/debuginfo/self-in-default-method.rs index 87fdb2c42c8..f8ef5b3d2fc 100644 --- a/src/test/debuginfo/self-in-default-method.rs +++ b/src/test/debuginfo/self-in-default-method.rs @@ -112,6 +112,7 @@ // lldb-check:[...]$14 = -10 // lldb-command:continue +#![omit_gdb_pretty_printer_section] struct Struct { x: int diff --git a/src/test/debuginfo/self-in-generic-default-method.rs b/src/test/debuginfo/self-in-generic-default-method.rs index 6f488230521..c2594df7d35 100644 --- a/src/test/debuginfo/self-in-generic-default-method.rs +++ b/src/test/debuginfo/self-in-generic-default-method.rs @@ -112,6 +112,7 @@ // lldb-check:[...]$14 = -10.5 // lldb-command:continue +#![omit_gdb_pretty_printer_section] struct Struct { x: int diff --git a/src/test/debuginfo/shadowed-argument.rs b/src/test/debuginfo/shadowed-argument.rs index ead960c36df..c5c3664b07a 100644 --- a/src/test/debuginfo/shadowed-argument.rs +++ b/src/test/debuginfo/shadowed-argument.rs @@ -58,6 +58,9 @@ // lldb-check:[...]$5 = 20 // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + fn a_function(x: bool, y: bool) { zzz(); // #break sentinel(); diff --git a/src/test/debuginfo/shadowed-variable.rs b/src/test/debuginfo/shadowed-variable.rs index fa56c1d1fb7..f384b756da6 100644 --- a/src/test/debuginfo/shadowed-variable.rs +++ b/src/test/debuginfo/shadowed-variable.rs @@ -58,6 +58,8 @@ // lldb-check:[...]$5 = 20 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + fn main() { let x = false; let y = true; diff --git a/src/test/debuginfo/simd.rs b/src/test/debuginfo/simd.rs index 2c2eedf4167..288e7461dd5 100644 --- a/src/test/debuginfo/simd.rs +++ b/src/test/debuginfo/simd.rs @@ -43,6 +43,7 @@ #![allow(experimental)] #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use std::simd::{i8x16, i16x8,i32x4,i64x2,u8x16,u16x8,u32x4,u64x2,f32x4,f64x2}; diff --git a/src/test/debuginfo/simple-lexical-scope.rs b/src/test/debuginfo/simple-lexical-scope.rs index 4330a273258..5981c18494d 100644 --- a/src/test/debuginfo/simple-lexical-scope.rs +++ b/src/test/debuginfo/simple-lexical-scope.rs @@ -78,6 +78,9 @@ // lldb-check:[...]$6 = false // lldb-command:continue + +#![omit_gdb_pretty_printer_section] + fn main() { let x = false; diff --git a/src/test/debuginfo/simple-struct.rs b/src/test/debuginfo/simple-struct.rs index 51241be921c..3015b16a0aa 100644 --- a/src/test/debuginfo/simple-struct.rs +++ b/src/test/debuginfo/simple-struct.rs @@ -95,8 +95,9 @@ // lldb-command:print padding_at_end // lldb-check:[...]$5 = PaddingAtEnd { x: -10014, y: 10015 } -#![allow(unused_variables)]; -#![allow(dead_code)]; +#![allow(unused_variables)] +#![allow(dead_code)] +#![omit_gdb_pretty_printer_section] struct NoPadding16 { x: u16, diff --git a/src/test/debuginfo/simple-tuple.rs b/src/test/debuginfo/simple-tuple.rs index bbc9941e013..78184fab7d3 100644 --- a/src/test/debuginfo/simple-tuple.rs +++ b/src/test/debuginfo/simple-tuple.rs @@ -92,6 +92,7 @@ #![allow(unused_variables)] #![allow(dead_code)] +#![omit_gdb_pretty_printer_section] static mut NO_PADDING_8: (i8, u8) = (-50, 50); static mut NO_PADDING_16: (i16, i16, u16) = (-1, 2, 3); diff --git a/src/test/debuginfo/static-method-on-struct-and-enum.rs b/src/test/debuginfo/static-method-on-struct-and-enum.rs index f808e7f8a90..59ee300b3e3 100644 --- a/src/test/debuginfo/static-method-on-struct-and-enum.rs +++ b/src/test/debuginfo/static-method-on-struct-and-enum.rs @@ -54,6 +54,8 @@ // lldb-check:[...]$4 = 5 // lldb-command:continue +#![omit_gdb_pretty_printer_section] + struct Struct { x: int } diff --git a/src/test/debuginfo/struct-in-enum.rs b/src/test/debuginfo/struct-in-enum.rs index 68281cb2230..6f801a7d587 100644 --- a/src/test/debuginfo/struct-in-enum.rs +++ b/src/test/debuginfo/struct-in-enum.rs @@ -42,6 +42,7 @@ // lldb-check:[...]$2 = TheOnlyCase(Struct { x: 123, y: 456, z: 789 }) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Regular::{Case1, Case2}; use self::Univariant::TheOnlyCase; diff --git a/src/test/debuginfo/struct-in-struct.rs b/src/test/debuginfo/struct-in-struct.rs index 4a7588b0bec..3f819c92e10 100644 --- a/src/test/debuginfo/struct-in-struct.rs +++ b/src/test/debuginfo/struct-in-struct.rs @@ -57,6 +57,7 @@ // lldb-check:[...]$7 = Tree { x: Simple { x: 25 }, y: InternalPaddingParent { x: InternalPadding { x: 26, y: 27 }, y: InternalPadding { x: 28, y: 29 }, z: InternalPadding { x: 30, y: 31 } }, z: BagInBag { x: Bag { x: Simple { x: 32 } } } } #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct Simple { x: i32 diff --git a/src/test/debuginfo/struct-style-enum.rs b/src/test/debuginfo/struct-style-enum.rs index 48c6c2d79fb..f6d4627082f 100644 --- a/src/test/debuginfo/struct-style-enum.rs +++ b/src/test/debuginfo/struct-style-enum.rs @@ -49,6 +49,7 @@ // lldb-check:[...]$3 = TheOnlyCase { a: -1 } #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Regular::{Case1, Case2, Case3}; use self::Univariant::TheOnlyCase; diff --git a/src/test/debuginfo/struct-with-destructor.rs b/src/test/debuginfo/struct-with-destructor.rs index 854ba2171eb..743f5ac5ff4 100644 --- a/src/test/debuginfo/struct-with-destructor.rs +++ b/src/test/debuginfo/struct-with-destructor.rs @@ -45,6 +45,7 @@ // lldb-check:[...]$3 = NestedOuter { a: NestedInner { a: WithDestructor { x: 7890, y: 9870 } } } #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct NoDestructor { x: i32, diff --git a/src/test/debuginfo/trait-generic-static-default-method.rs b/src/test/debuginfo/trait-generic-static-default-method.rs index 8d565a323ac..2ecafb02ae5 100644 --- a/src/test/debuginfo/trait-generic-static-default-method.rs +++ b/src/test/debuginfo/trait-generic-static-default-method.rs @@ -45,6 +45,8 @@ // lldb-check:[...]$3 = (1, 2, 3) // lldb-command:continue +#![omit_gdb_pretty_printer_section] + struct Struct { x: int } diff --git a/src/test/debuginfo/trait-pointers.rs b/src/test/debuginfo/trait-pointers.rs index d73c3cf0f77..9f8c0aa06e6 100644 --- a/src/test/debuginfo/trait-pointers.rs +++ b/src/test/debuginfo/trait-pointers.rs @@ -16,6 +16,7 @@ // lldb-command:run #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] trait Trait { fn method(&self) -> int { 0 } diff --git a/src/test/debuginfo/tuple-in-struct.rs b/src/test/debuginfo/tuple-in-struct.rs index 02492bf1aa2..3d28490c0cf 100644 --- a/src/test/debuginfo/tuple-in-struct.rs +++ b/src/test/debuginfo/tuple-in-struct.rs @@ -41,6 +41,7 @@ // gdb-check:$10 = {x = {{40, 41, 42}, {43, 44}}, y = {45, 46, 47, 48}} #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct NoPadding1 { x: (i32, i32), diff --git a/src/test/debuginfo/tuple-in-tuple.rs b/src/test/debuginfo/tuple-in-tuple.rs index 30fdd8c5530..b1228f7a884 100644 --- a/src/test/debuginfo/tuple-in-tuple.rs +++ b/src/test/debuginfo/tuple-in-tuple.rs @@ -57,6 +57,7 @@ // lldb-check:[...]$6 = ((21, 22), 23) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] fn main() { let no_padding1: ((u32, u32), u32, u32) = ((0, 1), 2, 3); diff --git a/src/test/debuginfo/tuple-struct.rs b/src/test/debuginfo/tuple-struct.rs index 62c150878cf..0960ab5834d 100644 --- a/src/test/debuginfo/tuple-struct.rs +++ b/src/test/debuginfo/tuple-struct.rs @@ -62,6 +62,9 @@ // to all fields having the name ""). Otherwise they are handled the same a normal // structs. + +#![omit_gdb_pretty_printer_section] + struct NoPadding16(u16, i16); struct NoPadding32(i32, f32, u32); struct NoPadding64(f64, i64, u64); diff --git a/src/test/debuginfo/tuple-style-enum.rs b/src/test/debuginfo/tuple-style-enum.rs index 07a0f169606..f205f484f25 100644 --- a/src/test/debuginfo/tuple-style-enum.rs +++ b/src/test/debuginfo/tuple-style-enum.rs @@ -49,6 +49,7 @@ // lldb-check:[...]$3 = TheOnlyCase(-1) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] use self::Regular::{Case1, Case2, Case3}; use self::Univariant::TheOnlyCase; diff --git a/src/test/debuginfo/type-names.rs b/src/test/debuginfo/type-names.rs index 286c44667c5..ddcbfdcceee 100644 --- a/src/test/debuginfo/type-names.rs +++ b/src/test/debuginfo/type-names.rs @@ -173,6 +173,8 @@ // gdb-command:whatis stack_closure2 // gdb-check:type = struct (&mut|i8, f32| -> f32, uint) +#![omit_gdb_pretty_printer_section] + use self::Enum1::{Variant1_1, Variant1_2}; use std::ptr; diff --git a/src/test/debuginfo/unique-enum.rs b/src/test/debuginfo/unique-enum.rs index 3c0a4a21b4f..3d028eb1077 100644 --- a/src/test/debuginfo/unique-enum.rs +++ b/src/test/debuginfo/unique-enum.rs @@ -42,6 +42,7 @@ // lldb-check:[...]$2 = TheOnlyCase(123234) #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] // The first element is to ensure proper alignment, irrespective of the machines word size. Since // the size of the discriminant value is machine dependent, this has be taken into account when diff --git a/src/test/debuginfo/var-captured-in-nested-closure.rs b/src/test/debuginfo/var-captured-in-nested-closure.rs index f3ee711e8fd..99d67c60516 100644 --- a/src/test/debuginfo/var-captured-in-nested-closure.rs +++ b/src/test/debuginfo/var-captured-in-nested-closure.rs @@ -79,6 +79,7 @@ // lldb-command:continue #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct Struct { a: int, diff --git a/src/test/debuginfo/var-captured-in-sendable-closure.rs b/src/test/debuginfo/var-captured-in-sendable-closure.rs index fca47ed47bd..b34749260f3 100644 --- a/src/test/debuginfo/var-captured-in-sendable-closure.rs +++ b/src/test/debuginfo/var-captured-in-sendable-closure.rs @@ -42,6 +42,7 @@ #![allow(unused_variables)] #![feature(unboxed_closures)] +#![omit_gdb_pretty_printer_section] struct Struct { a: int, diff --git a/src/test/debuginfo/var-captured-in-stack-closure.rs b/src/test/debuginfo/var-captured-in-stack-closure.rs index 761d0f0be8f..f474e8d1317 100644 --- a/src/test/debuginfo/var-captured-in-stack-closure.rs +++ b/src/test/debuginfo/var-captured-in-stack-closure.rs @@ -72,6 +72,7 @@ #![feature(unboxed_closures)] #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] struct Struct { a: int, diff --git a/src/test/debuginfo/vec-slices.rs b/src/test/debuginfo/vec-slices.rs index dfe16452d85..70211d74d88 100644 --- a/src/test/debuginfo/vec-slices.rs +++ b/src/test/debuginfo/vec-slices.rs @@ -78,6 +78,7 @@ #![allow(unused_variables)] #![feature(slicing_syntax)] +#![omit_gdb_pretty_printer_section] struct AStruct { x: i16, diff --git a/src/test/debuginfo/vec.rs b/src/test/debuginfo/vec.rs index 00c93653cf4..92a490206b6 100644 --- a/src/test/debuginfo/vec.rs +++ b/src/test/debuginfo/vec.rs @@ -29,6 +29,7 @@ // lldb-check:[...]$0 = [1, 2, 3] #![allow(unused_variables)] +#![omit_gdb_pretty_printer_section] static mut VECT: [i32; 3] = [1, 2, 3];