branch: externals/beardbolt commit 9f6d1cf10c7b9a8636dc0479dbf00336d45dbd51 Author: João Távora <joaotav...@gmail.com> Commit: João Távora <joaotav...@gmail.com>
Remove some rmsbolt remnants * README.org: Remove. * beardbolt-tests.el: Remove. Not really useful. * doc/*: Remove. * test/*: Remove. * starters/beardbolt.d: Remove. * starters/beardbolt.go: Remove. * starters/beardbolt.hs: Remove. * starters/beardbolt.lisp: Remove. * starters/beardbolt.ml: Remove. * starters/beardbolt.nim: Remove. * starters/beardbolt.php: Remove. * starters/beardbolt.pony: Remove. * starters/beardbolt.py: Remove. * starters/beardbolt.rs: Remove. * starters/beardbolt.swift: Remove. * starters/beardbolt.zig: Remove. --- README.org | 150 ------ beardbolt-tests.el | 162 ------- doc/.gitignore | 1 - doc/beardbolt.org | 285 ------------ doc/beardbolt.texi | 457 ------------------- doc/gen.sh | 2 - starters/Beardbolt.java | 27 -- starters/beardbolt-starter.el | 27 -- starters/beardbolt.d | 26 -- starters/beardbolt.go | 32 -- starters/beardbolt.hs | 31 -- starters/beardbolt.lisp | 16 - starters/beardbolt.ml | 21 - starters/beardbolt.nim | 21 - starters/beardbolt.php | 37 -- starters/beardbolt.pony | 23 - starters/beardbolt.py | 16 - starters/beardbolt.rs | 23 - starters/beardbolt.swift | 28 -- starters/beardbolt.zig | 53 --- test/beardbolt-c-post1.s | 47 -- test/beardbolt-c-post2.s | 916 ------------------------------------- test/beardbolt-c-post3.s | 117 ----- test/beardbolt-c-post4.s | 28 -- test/beardbolt-c-pre1.s | 916 ------------------------------------- test/beardbolt-c-pre2.s | 1005 ----------------------------------------- 26 files changed, 4467 deletions(-) diff --git a/README.org b/README.org deleted file mode 100644 index 0374bec41c..0000000000 --- a/README.org +++ /dev/null @@ -1,150 +0,0 @@ - -* [[https://gitlab.com/jgkamat/beardbolt][beardbolt]] [[https://melpa.org/#/beardbolt][file:https://melpa.org/packages/beardbolt-badge.svg]] - -A supercharged implementation of the [[https://github.com/mattgodbolt/compiler-explorer][godbolt compiler-explorer]] for Emacs. - -beardbolt tries to make it easy to see what your compiler is doing. It does this -by showing you the assembly output of a given source code file. It also -highlights which source code a given assembly block corresponds to, and vice -versa. It supports more types of languages than any previous tool of its kind. - -* [[file:doc/beardbolt.org][Documentation]] - -This README is a condensed version of the docs. [[file:doc/beardbolt.org][For full usage instructions, -please start at the docs (also available through info).]] - -* Why beardbolt over godbolt? - -- Much more flexible and powerful: - - Supports disassembly to bytecode as well as assembly. - - Supports many languages that godbolt does not support, such as PHP, - - Common Lisp, Emacs Lisp, and Pony. - - Allows targeting custom compilers - which means disassembly for niche - assembly targets, specific commits of compilers, and patched libraries or - compilers is possible. -- No more sending your code to any server. -- Much faster turnaround time from writing code to seeing and interacting with disassembly. -- 100% usable without the mouse. -- Runs entirely without node, npm, or js: - - No required dependencies other than Emacs 25 and your compiler ~:)~ - - It's easy to add new languages (even those that use unique bytecode formats) - without touching many files. - - Doesn't eat your ram on the 'server' or the 'client'. - - No enforced limits on code size, compilation time, or processing time. -- Benefits from living in Emacs: - - Full undo tree from Emacs on disassembly/source so you don't lose work. - - Vim bindings through evil/viper. - - Use compile.el, flymake, or flycheck to traverse and fix errors as you - would normally. - - Use *any* libraries on your machine trivially. - - Customize colors and behavior through ~customize~. - - Change tracking through magit/diff-hl/etc. - - Nyans are fully supported with [[https://github.com/TeMPOraL/nyan-mode][nyan-mode]]. -- Simpler. -- Infinitely hackable! - -* Installation - -beardbolt will almost certainly not work naively on windows as it depends on a -unix shell for building the compilation commands. It may work through cygwin -though. - -** Melpa - -[[http://melpa.org/#/beardbolt][A melpa package is available for beardbolt]]. - -** Quelpa - -#+BEGIN_SRC emacs-lisp - (quelpa '(beardbolt - :files (:defaults "starters") - :fetcher gitlab - :repo "jgkamat/beardbolt")) -#+END_SRC - -* Running -Run ~beardbolt~ to compile the current buffer. This enables ~beardbolt-mode~ -for code region highlighting and automatic recompilation on buffer changes. - -~beardbolt-mode~ also adds the key binding ~C-c C-c~ to run a compilation. - -Run ~beardbolt-starter~ to generate an example source file for one of the supported languages. - -Run ~beardbolt-compile~ to start a compilation without enabling ~beardbolt-mode~. - -Language-specific quirks are listed in the full documentation. - -* Configuration - -beardbolt is primarily configured with Emacs local variables. This lets you change -compiler and beardbolt options simply by editing a local variable block. The -starter files have this block with some common settings: - -#+BEGIN_SRC c - // Local Variables: - // beardbolt-command: "gcc -O0" - // beardbolt-disassemble: nil - // End: -#+END_SRC - -*Note*: [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables][the Local Variable block must be 3000 characters from the end of the -file to work]]. Any method of setting buffer-local variables will work though. - -The main knobs are described in the full documentation. - -* Demos -** C/C++ -[[https://i.imgur.com/Rox6y0U.gif][https://i.imgur.com/Rox6y0U.gif]] -** OCaml -[[https://i.imgur.com/369Ylxk.gif][https://i.imgur.com/369Ylxk.gif]] -** Rust -[[https://i.imgur.com/nW1lVFM.gif][https://i.imgur.com/nW1lVFM.gif]] -** Haskell -[[https://i.imgur.com/fAQQMJe.gif][https://i.imgur.com/fAQQMJe.gif]] -** Python -[[https://i.imgur.com/cMYfkGx.gif][https://i.imgur.com/cMYfkGx.gif]] -** Java -[[https://i.imgur.com/KkWEMMj.gif][https://i.imgur.com/KkWEMMj.gif]] -** Go -[[https://gitlab.com/jgkamat/beardbolt/uploads/4ca143ac99f33880dbde000d71ff3763/beardbolt-go-2.gif][https://gitlab.com/jgkamat/beardbolt/uploads/4ca143ac99f33880dbde000d71ff3763/beardbolt-go-2.gif]] -** PHP -[[https://i.imgur.com/xBfzaK9.gif][https://i.imgur.com/xBfzaK9.gif]] -** Pony -[[https://i.imgur.com/8kd6kkJ.gif][https://i.imgur.com/8kd6kkJ.gif]] -** D -[[https://i.imgur.com/BkMse7R.gif][https://i.imgur.com/BkMse7R.gif]] -** Emacs Lisp -[[https://i.imgur.com/uYrQ7En.gif][https://i.imgur.com/uYrQ7En.gif]] -** Common Lisp -[[https://i.imgur.com/36aNVvf.gif][https://i.imgur.com/36aNVvf.gif]] -** Swift -[[https://gitlab.com/jgkamat/beardbolt/uploads/80d38e840a149c77951891c3623ca2f2/lFG72Lv_-_Imgur.gif][https://gitlab.com/jgkamat/beardbolt/uploads/80d38e840a149c77951891c3623ca2f2/lFG72Lv_-_Imgur.gif]] -** Nim -[[https://i.imgur.com/8y4jtK9.gif][https://i.imgur.com/8y4jtK9.gif]] - -* Community and Support - -If you need help, have questions, or just want to chat about compilers, feel -free to drop by ~#beardbolt~ on [[https://libera.chat/][Libera]]. Please be sure to stick around, for a -reply. - -If you find issues, please send me a mail or submit an issue. - -If you would like to submit a patch, please submit a merge request, or send me a -mail with your patch. If your change is non-trivial, please -[[https://www.fsf.org/licensing/assigning.html][assign copyright to the FSF]] as well. - -* Alternatives - -- Simpler Emacs Packages - - [[https://github.com/jart/disaster][disaster]] - - [[https://github.com/RAttab/iasm-mode][iasm-mode]] - - [[https://github.com/gbalats/autodisass-java-bytecode][autodisass-java]] and [[https://github.com/gbalats/autodisass-llvm-bitcode][autodisass-llvm]] -- Similar Projects - - [[https://github.com/yawkat/javap][yawkat/javap]] - - [[https://github.com/mattgodbolt/compiler-explorer][mattgodbolt/compiler-explorer]] - - [[http://reliant.colab.duke.edu/c2mips/][c2mips]] - - [[https://3v4l.org/][3v4l]] - - [[https://github.com/ashmind/SharpLab][sharplab]] - -Please let me know if you find other alternatives not mentioned! diff --git a/beardbolt-tests.el b/beardbolt-tests.el deleted file mode 100644 index eb10afa355..0000000000 --- a/beardbolt-tests.el +++ /dev/null @@ -1,162 +0,0 @@ -;;; beardbolt-test.el --- Tests for beardbolt -*- lexical-binding: t; -*- - -;;; Commentary: -;; Tests for beardbolt - -;;; Code: - -(require 'ert) -(require 'beardbolt) - -(defun test-asm-preprocessor (pre post) - "Tests the asm preprocessor on the current buffer." - (insert-file-contents pre) - (should - (string= - (string-trim - (mapconcat 'identity - (beardbolt--process-asm-lines (current-buffer) - (split-string (buffer-string) "\n" t)) - "\n")) - (with-temp-buffer - (insert-file-contents post) - (string-trim - (buffer-string)))))) - -;;;; Filtration tests - -(ert-deftest filter-tests-all-c () - "Test if assembly filteration in c is working." - (with-temp-buffer - (setq-local beardbolt-disassemble nil) - (setq-local beardbolt-filter-comment-only t) - (setq-local beardbolt-filter-directives t) - (setq-local beardbolt-filter-labels t) - (test-asm-preprocessor "test/beardbolt-c-pre1.s" "test/beardbolt-c-post1.s"))) -(ert-deftest filter-tests-none-c () - "Test if assembly filteration in c is working." - (with-temp-buffer - (setq-local beardbolt-disassemble nil) - (setq-local beardbolt-filter-comment-only nil) - (setq-local beardbolt-filter-directives nil) - (setq-local beardbolt-filter-labels nil) - (test-asm-preprocessor "test/beardbolt-c-pre1.s" "test/beardbolt-c-post2.s"))) -(ert-deftest filter-tests-dir-c () - "Test if assembly filteration in c is working." - (with-temp-buffer - (setq-local beardbolt-disassemble nil) - (setq-local beardbolt-filter-comment-only nil) - (setq-local beardbolt-filter-directives t) - (setq-local beardbolt-filter-labels nil) - (test-asm-preprocessor "test/beardbolt-c-pre1.s" "test/beardbolt-c-post3.s"))) -(ert-deftest filter-tests-weak-ref-c () - "Test if assembly filteration in c is working." - (with-temp-buffer - (setq-local beardbolt-disassemble nil) - (setq-local beardbolt-filter-comment-only nil) - (setq-local beardbolt-filter-directives t) - (setq-local beardbolt-filter-labels t) - (test-asm-preprocessor "test/beardbolt-c-pre2.s" "test/beardbolt-c-post4.s"))) - -;;;; Demangler tests - -(ert-deftest demangler-test-disabled () - (with-temp-buffer - (setq-local beardbolt-demangle nil) - (should - (string-empty-p - (beardbolt--demangle-command - "" - (make-beardbolt-lang :demangler nil) - (current-buffer)))))) - -(ert-deftest demangler-test-invalid-demangler () - (with-temp-buffer - (setq-local beardbolt-demangle t) - (should - (string-empty-p - (beardbolt--demangle-command - "" - (make-beardbolt-lang :demangler nil) - (current-buffer)))))) - -(ert-deftest demangler-test-not-path () - (with-temp-buffer - (setq-local beardbolt-demangle t) - (should - (string-empty-p - (beardbolt--demangle-command - "" - (make-beardbolt-lang :demangler "nonsense-binary-name-not-on-path") - (current-buffer)))))) - -(ert-deftest demangler-test-valid-demangler () - ;; Assumes test is on the path! - (with-temp-buffer - (setq-local beardbolt-demangle t) - (should - (string-match-p - (regexp-opt '("test")) - (beardbolt--demangle-command - "" - (make-beardbolt-lang :demangler "test") - (current-buffer)))))) - -(ert-deftest test-split-single () - "Test split single function" - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c" "-R") - "/usr/bin/c++ -a -c")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c" "-R") - "/usr/bin/c++ -a -c")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c" "-a") - "/usr/bin/c++ -R -c")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c" "-c") - "/usr/bin/c++ -a -R")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c" "-z") - "/usr/bin/c++ -a -R -c")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -a" "-a") - "/usr/bin/c++ -R")) - - (should (equal - (beardbolt-split-rm-single "/usr/bin/c++ -a -R -c -flto=thin" "-flto" #'string-prefix-p) - "/usr/bin/c++ -a -R -c")) - - (should (equal - (beardbolt-split-rm-single - "/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_KEYWORDS -DQT_WIDGETS_LIB -Isrc/googletest/include -I../common -Icommon -Icommon/protobuf -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -Werror=retu [...] - "/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_KEYWORDS -DQT_WIDGETS_LIB -Isrc/googletest/include -I../common -Icommon -Icommon/protobuf -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -Werror=return-lo [...] - - -(ert-deftest test-split-double () - "Test split single function" - (should (equal - (beardbolt-split-rm-double "/usr/bin/c++ -a -R -c" "-R") - "/usr/bin/c++ -a")) - - (should (equal - (beardbolt-split-rm-double "/usr/bin/c++ -a -R -c" "-c") - "/usr/bin/c++ -a -R")) - - (should (equal - (beardbolt-split-rm-double "/usr/bin/c++ -a -R -c" "-a") - "/usr/bin/c++ -c")) - - (should (equal - (beardbolt-split-rm-double - "/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_KEYWORDS -DQT_WIDGETS_LIB -Isrc/googletest/include -I../common -Icommon -Icommon/protobuf -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -Werror=retu [...] - "/usr/bin/c++ -DQT_CORE_LIB -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_NO_KEYWORDS -DQT_WIDGETS_LIB -Isrc/googletest/include -I../common -Icommon -Icommon/protobuf -isystem /usr/include/x86_64-linux-gnu/qt5 -isystem /usr/include/x86_64-linux-gnu/qt5/QtCore -isystem /usr/lib/x86_64-linux-gnu/qt5/mkspecs/linux-g++-64 -isystem /usr/include/x86_64-linux-gnu/qt5/QtNetwork -isystem /usr/include/x86_64-linux-gnu/qt5/QtWidgets -isystem /usr/include/x86_64-linux-gnu/qt5/QtGui -Werror=return-lo [...] - - -;;; beardbolt-test.el ends here -(provide 'beardbolt-test) diff --git a/doc/.gitignore b/doc/.gitignore deleted file mode 100644 index 0307234b0d..0000000000 --- a/doc/.gitignore +++ /dev/null @@ -1 +0,0 @@ -beardbolt.texi~ diff --git a/doc/beardbolt.org b/doc/beardbolt.org deleted file mode 100644 index 62c4e2f0f6..0000000000 --- a/doc/beardbolt.org +++ /dev/null @@ -1,285 +0,0 @@ -#+TITLE: beardbolt User Manual -:PREAMBLE: -#+AUTHOR: Jay Kamat -#+EMAIL: jaygka...@gmail.com -#+DATE: <2018-10-27 Sat> -#+LANGUAGE: en - -#+TEXINFO_DIR_CATEGORY: Emacs -#+TEXINFO_DIR_TITLE: beardbolt: (beardbolt). -#+TEXINFO_DIR_DESC: Viewing disassembly in Emacs with beardbolt. -#+BIND: ox-texinfo+-before-export-hook ox-texinfo+-update-version-strings - -#+OPTIONS: H:4 num:3 toc:2 - -beardbolt is a compiler output viewer in Emacs. - -beardbolt tries to make it easy to see what your compiler is doing. It does this -by showing you the assembly output of a given source code file. It also -highlights which source code a given assembly block corresponds to, and vice -versa. It supports more types of languages than any previous tool of its kind. - -* Installation -A [[https://melpa.org/#/beardbolt][melpa package]] is available for beardbolt. - -No dependencies are required, other than an Emacs newer than 25.1 - -** Quelpa - -This is a quelpa formula for beardbolt - -#+BEGIN_SRC emacs-lisp - (quelpa '(beardbolt - :files (:defaults "starters") - :fetcher gitlab - :repo "jgkamat/beardbolt")) -#+END_SRC - -* Running -Once installed, use the ~beardbolt-starter~ command to generate starter files, or -enable ~beardbolt-mode~ in a supported language. Then run ~beardbolt-compile~ or use -the default ~C-c C-c~ binding to pop open a disassembly buffer. After the first -run, the buffer should automatically update. -* Configuring - -beardbolt is primarily configured with Emacs local variables. This lets you change -compiler and beardbolt options simply by editing a local variable block. The -starter files have this block with some common settings: - -#+BEGIN_SRC c - // Local Variables: - // beardbolt-command: "gcc -O0" - // beardbolt-disassemble: nil - // End: -#+END_SRC - -*Note*: [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables][the Local Variable block must be 3000 characters from the end of the -file to work]]. Any method of setting buffer-local variables will work though. - -** Option List - -- Local Option: beardbolt-command - - Determines the prefix of the compilation command to use. Use this to switch - between compilers or pass flags to your compiler. - -- Local Option: beardbolt-default-directory - - Determines the default directory to compile from, which is useful if you are - building with a build-system. - -- Local Option: beardbolt-disassemble - - Disassemble from a compiled binary with objdump, if supported. - -- Local Option: beardbolt-filter-directives - - Whether to filter unused assembly directives out of final output. - -- Local Option: beardbolt-filter-labels - - Whether to filter unused labels from final output - -- Local Option: beardbolt-filter-comment-only - - Whether to filter lines that are comment-only. - -- Local Option: beardbolt-asm-format - - Which output format to use. Supported values vary between languages. In - general, ~"intel"~ and ~"att"~ are supported. ~nil~ means to use the tool's - defaults. Other values may work as well, depending on your compiler. - -- Local Option: beardbolt-demangle - - Demangle the output, if supported. - -- Local Option: beardbolt-ignore-binary-limit - - Ignore the binary size limit for disassembly. This will almost certainly cause - Emacs to hang during large processing. - -- Local Option: beardbolt-demangle - - Enable or disable demangling, if the language supports it. - -* Languages -This section covers languages-specific quirks and features. - -** C/C++ - -C/C++ is the primary focus of support, and will get new features and support -first. - -Demangling is enabled if ~c++filt~ is available on the path. - -** OCaml - -OCaml disassembly is supported through both ~ocamlopt~ and through disassembly -with objdump. - -** Rust - -Demangling is done with ~rustfilt~ if it is on the path. - -** Haskell - -Demangling is done with the compiler-explorer demangler, named -to ~haskell-demangler~ and placed on the path. - -** Python - -Support for viewing bytecode only. Python [[https://bugs.python.org/issue2506][doesn't have many options]], so most -tweakables will not work. Python 3.7 is required for recursion into functions, -otherwise only top level code will be shown. Python 2 is completely unsupported. - -** Java - -Parses the output of ~javap~ to get debug information and disassembly. - -** PHP -Requires the [[https://github.com/derickr/vld][vld php extension]] to display PHP opcodes. Without that, you will -not get any output. - -If you use hack (denoted by ~<hh?~ at the top of your file), you will not get -source->asm matching or filtering. - -** Pony - -Filtering on pony is not as effective as pony asm includes references to -machine-generated functions. This means the output will be slower to generate, -similar to disassembly in other languages. The pony file being viewed will be -copied into it's own directory, making it much harder to view non-toy examples. - -** D - -Assembly is generated through the ~ldc~ tool, and demangling is provided by -~ddemangler~. - -Please report bugs if matching does not work for you, as D's file format for -designating files is a little different. - -** Swift - -Swift support is a little bit non-standard. Since swift is used primarily on -apple devices, the default value for ~swiftc~ and ~swift-demangle~ is populated -from the active toolchain in addition to the path. Overriding the compile -command will not currently search the toolchain for the compiler (only the path). - -~swift-demangle~ is used for demangling support if available. - -** Emacs Lisp - -No support for source->asm matching, filtering, or automatic recompile. - -Emacs 26 or the ~cl-print~ package are required. - -** Common Lisp - -No support for source->asm matching or filtering. Only ~sbcl~ and ~clisp~ -supported at the moment, with ~sbcl~ giving much better results. - -** Zig - -Assembly is generated through the ~zig~ compiler. Due to large binary sizes, -disassembly is discouraged. - -Zig embeds a panic handler which inflates the size of binaries. In order to -reduce this to a manageable level, you can add the following snippet to your -file: - -#+BEGIN_SRC zig - pub fn panic(msg: []const u8, error_return_trace: ?*@import("builtin").StackTrace) noreturn { - while (true) { - } - } -#+END_SRC - -** Go - -Uses Go's objdump tool to produce viewing-only bytecode. Go must be on the path. - -** Nim - -Builds into object files into a temporary ~nim-cache~ directory generated by -beardbolt, which will then be copied and dissassembled. -C++ backend is also possible to either with ~nim cpp~ or ~nim c ---passC:-std=gnu++14~ and uses ~c++filt~ demangler. - -Use the ~{.exportc.}~ pragma for at least the main procedure that will be dissassembled. - -* Integrations -This section covers integrations that beardbolt provides, which make it easier to -use beardbolt with complex projects with many dependencies. - -Integrations are very new, and as such, may be highly buggy and require extra -work to debug. - -Most integrations only take effect when ~beardbolt-command~ and -~beardbolt-default-directory~ are nil! Setting either of these will disable any -attempt at using the integration system. - -** C/C++ - -C/C++ will look for a ~compile_commands.json~ file in any directory higher than -the source file. Once it finds one, it will parse the file trying to find a -match for the current file, and if it finds one, it will compile using the flags -present there. Many files (like headers) are not present in -~compile_commands.json~ and will not work (at this time). - -Because the compilation commands in ~compile_commands.json~ assume the files are -compiled in order, please make sure to fully compile the project before -beginning, otherwise, you could see compiler errors. - -In order to transform the given file, some flags are removed. This is the most -brittle part of the current system, and could cause compile errors. - -On projects with a lot of imports, the resulting assembly file might be large, -which may cause Emacs to hang. - -*** QuickStart Guide -1. Generate a ~compile_commands.json~ file, and ensure it is in a domineering directory. - #+BEGIN_SRC sh - cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . - #+END_SRC -2. Compile the project completely. If you pass flags to your build system, make - sure they are passed when generating ~compile_commands.json~ as well. -3. Open the file in question, and enable ~beardbolt-mode~. -4. Run ~beardbolt-compile~. - -* Developing - -These are some tips which will help people working on developing or customizing beardbolt. - -** Adding a Language - -Adding support for a new language is fairly easy. The closer it is to existing -compilers, the easier it will be (to the point where a clone of a C compiler is -just a couple copy-paste lines). However, it is not excessively hard to add -support for completely foreign compilers and bytecode/assembly formats. - -As a minimum starting point, you must know how to compile a source file to -assembly or bytecode on the command line, and know how the line numbers are -available in the compiled form if they exist. - -1. [[file:../beardbolt.el::;;;;%20Language%20Definitions][Add a new entry to the language definitions statement.]] - - To do this, you will need to (at a minimum) add a mode, compile-command, a - compile-cmd-function, and a starter file name. - - The compile-cmd-function is a function that will turn local variable - settings into a valid command which will take in a filename and output - assembly or an executable. See ~beardbolt--c-compile-cmd~ for an example. - - When building compilation commands, please make sure to use absolute paths, - as the default-directory is not guaranteed to be stable. - - If the assembly is not in a standard format, you will need to define a - ~process-asm-custom-fn~ as well (see python/java for examples). - - If you would like to add language tweaks in your own config (ie: take full - control over what beardbolt does completely), you can use - ~beardbolt-language-descriptor~ to fully override the defaults with a custom - language definition. -2. [[file:../beardbolt.el::;;;;;%20Starter%20Definitions][Add a new entry into the starter file]] - - For this, you will need to make a starter file. See [[file:./../starters/][this folder]] for - existing examples. - - Ideally, try to pick something which is interesting to play with from an - disassembly point of view. - -You're done! diff --git a/doc/beardbolt.texi b/doc/beardbolt.texi deleted file mode 100644 index 1c53929253..0000000000 --- a/doc/beardbolt.texi +++ /dev/null @@ -1,457 +0,0 @@ -\input texinfo @c -*- texinfo -*- -@c %**start of header -@setfilename beardbolt.info -@settitle beardbolt User Manual -@documentencoding UTF-8 -@documentlanguage en -@c %**end of header - -@dircategory Emacs -@direntry -* beardbolt: (beardbolt). Viewing disassembly in Emacs with beardbolt. -@end direntry - -@finalout -@titlepage -@title beardbolt User Manual -@author Jay Kamat -@end titlepage - -@contents - -@ifnottex -@node Top -@top beardbolt User Manual - -:PREAMBLE: -beardbolt is a compiler output viewer in Emacs. - -beardbolt tries to make it easy to see what your compiler is doing. It does this -by showing you the assembly output of a given source code file. It also -highlights which source code a given assembly block corresponds to, and vice -versa. It supports more types of languages than any previous tool of its kind. -@end ifnottex - -@menu -* Installation:: -* Running:: -* Configuring:: -* Languages:: -* Integrations:: -* Developing:: - -@detailmenu ---- The Detailed Node Listing --- - -Installation - -* Quelpa:: - -Configuring - -* Option List:: - -Languages - -* C/C++:: -* OCaml:: -* Rust:: -* Haskell:: -* Python:: -* Java:: -* PHP:: -* Pony:: -* D:: -* Swift:: -* Emacs Lisp:: -* Common Lisp:: -* Zig:: -* Go:: -* Nim:: - -Integrations - -* C/C++: C/C++ (1). - -C/C++ - -* QuickStart Guide:: - - -Developing - -* Adding a Language:: - -@end detailmenu -@end menu - -@node Installation -@chapter Installation - -A @uref{https://melpa.org/#/beardbolt, melpa package} is available for beardbolt. - -No dependencies are required, other than an Emacs newer than 25.1 - -@menu -* Quelpa:: -@end menu - -@node Quelpa -@section Quelpa - -This is a quelpa formula for beardbolt - -@lisp -(quelpa '(beardbolt - :files (:defaults "starters") - :fetcher gitlab - :repo "jgkamat/beardbolt")) -@end lisp - -@node Running -@chapter Running - -Once installed, use the @code{beardbolt-starter} command to generate starter files, or -enable @code{beardbolt-mode} in a supported language. Then run @code{beardbolt-compile} or use -the default @code{C-c C-c} binding to pop open a disassembly buffer. After the first -run, the buffer should automatically update. - -@node Configuring -@chapter Configuring - -beardbolt is primarily configured with Emacs local variables. This lets you change -compiler and beardbolt options simply by editing a local variable block. The -starter files have this block with some common settings: - -@example -// Local Variables: -// beardbolt-command: "gcc -O0" -// beardbolt-disassemble: nil -// End: -@end example - -@strong{Note}: @uref{https://www.gnu.org/software/emacs/manual/html_node/emacs/Specifying-File-Variables.html#Specifying-File-Variables, the Local Variable block must be 3000 characters from the end of the -file to work}. Any method of setting buffer-local variables will work though. - -@menu -* Option List:: -@end menu - -@node Option List -@section Option List - -@itemize -@item -Local Option: beardbolt-command - -Determines the prefix of the compilation command to use. Use this to switch -between compilers or pass flags to your compiler. - -@item -Local Option: beardbolt-default-directory - -Determines the default directory to compile from, which is useful if you are -building with a build-system. - -@item -Local Option: beardbolt-disassemble - -Disassemble from a compiled binary with objdump, if supported. - -@item -Local Option: beardbolt-filter-directives - -Whether to filter unused assembly directives out of final output. - -@item -Local Option: beardbolt-filter-labels - -Whether to filter unused labels from final output - -@item -Local Option: beardbolt-filter-comment-only - -Whether to filter lines that are comment-only. - -@item -Local Option: beardbolt-asm-format - -Which output format to use. Supported values vary between languages. In -general, @code{"intel"} and @code{"att"} are supported. @code{nil} means to use the tool's -defaults. Other values may work as well, depending on your compiler. - -@item -Local Option: beardbolt-demangle - -Demangle the output, if supported. - -@item -Local Option: beardbolt-ignore-binary-limit - -Ignore the binary size limit for disassembly. This will almost certainly cause -Emacs to hang during large processing. - -@item -Local Option: beardbolt-demangle - -Enable or disable demangling, if the language supports it. -@end itemize - -@node Languages -@chapter Languages - -This section covers languages-specific quirks and features. - -@menu -* C/C++:: -* OCaml:: -* Rust:: -* Haskell:: -* Python:: -* Java:: -* PHP:: -* Pony:: -* D:: -* Swift:: -* Emacs Lisp:: -* Common Lisp:: -* Zig:: -* Go:: -* Nim:: -@end menu - -@node C/C++ -@section C/C++ - -C/C++ is the primary focus of support, and will get new features and support -first. - -Demangling is enabled if @code{c++filt} is available on the path. - -@node OCaml -@section OCaml - -OCaml disassembly is supported through both @code{ocamlopt} and through disassembly -with objdump. - -@node Rust -@section Rust - -Demangling is done with @code{rustfilt} if it is on the path. - -@node Haskell -@section Haskell - -Demangling is done with the compiler-explorer demangler, named -to @code{haskell-demangler} and placed on the path. - -@node Python -@section Python - -Support for viewing bytecode only. Python @uref{https://bugs.python.org/issue2506, doesn't have many options}, so most -tweakables will not work. Python 3.7 is required for recursion into functions, -otherwise only top level code will be shown. Python 2 is completely unsupported. - -@node Java -@section Java - -Parses the output of @code{javap} to get debug information and disassembly. - -@node PHP -@section PHP - -Requires the @uref{https://github.com/derickr/vld, vld php extension} to display PHP opcodes. Without that, you will -not get any output. - -If you use hack (denoted by @code{<hh?} at the top of your file), you will not get -source->asm matching or filtering. - -@node Pony -@section Pony - -Filtering on pony is not as effective as pony asm includes references to -machine-generated functions. This means the output will be slower to generate, -similar to disassembly in other languages. The pony file being viewed will be -copied into it's own directory, making it much harder to view non-toy examples. - -@node D -@section D - -Assembly is generated through the @code{ldc} tool, and demangling is provided by -@code{ddemangler}. - -Please report bugs if matching does not work for you, as D's file format for -designating files is a little different. - -@node Swift -@section Swift - -Swift support is a little bit non-standard. Since swift is used primarily on -apple devices, the default value for @code{swiftc} and @code{swift-demangle} is populated -from the active toolchain in addition to the path. Overriding the compile -command will not currently search the toolchain for the compiler (only the path). - -@code{swift-demangle} is used for demangling support if available. - -@node Emacs Lisp -@section Emacs Lisp - -No support for source->asm matching, filtering, or automatic recompile. - -Emacs 26 or the @code{cl-print} package are required. - -@node Common Lisp -@section Common Lisp - -No support for source->asm matching or filtering. Only @code{sbcl} and @code{clisp} -supported at the moment, with @code{sbcl} giving much better results. - -@node Zig -@section Zig - -Assembly is generated through the @code{zig} compiler. Due to large binary sizes, -disassembly is discouraged. - -Zig embeds a panic handler which inflates the size of binaries. In order to -reduce this to a manageable level, you can add the following snippet to your -file: - -@example -pub fn panic(msg: []const u8, error_return_trace: ?*@@import("builtin").StackTrace) noreturn @{ - while (true) @{ - @} -@} -@end example - -@node Go -@section Go - -Uses Go's objdump tool to produce viewing-only bytecode. Go must be on the path. - -@node Nim -@section Nim - -Builds into object files into a temporary @code{nim-cache} directory generated by -beardbolt, which will then be copied and dissassembled. -C++ backend is also possible to either with @code{nim cpp} or @code{nim c ---passC:-std=gnu++14} and uses @code{c++filt} demangler. - -Use the @code{@{.exportc.@}} pragma for at least the main procedure that will be dissassembled. - -@node Integrations -@chapter Integrations - -This section covers integrations that beardbolt provides, which make it easier to -use beardbolt with complex projects with many dependencies. - -Integrations are very new, and as such, may be highly buggy and require extra -work to debug. - -Most integrations only take effect when @code{beardbolt-command} and -@code{beardbolt-default-directory} are nil! Setting either of these will disable any -attempt at using the integration system. - -@menu -* C/C++: C/C++ (1). -@end menu - -@node C/C++ (1) -@section C/C++ - -C/C++ will look for a @code{compile_commands.json} file in any directory higher than -the source file. Once it finds one, it will parse the file trying to find a -match for the current file, and if it finds one, it will compile using the flags -present there. Many files (like headers) are not present in -@code{compile_commands.json} and will not work (at this time). - -Because the compilation commands in @code{compile_commands.json} assume the files are -compiled in order, please make sure to fully compile the project before -beginning, otherwise, you could see compiler errors. - -In order to transform the given file, some flags are removed. This is the most -brittle part of the current system, and could cause compile errors. - -On projects with a lot of imports, the resulting assembly file might be large, -which may cause Emacs to hang. - -@menu -* QuickStart Guide:: -@end menu - -@node QuickStart Guide -@subsection QuickStart Guide - -@enumerate -@item -Generate a @code{compile_commands.json} file, and ensure it is in a domineering directory. -@example -cmake -DCMAKE_EXPORT_COMPILE_COMMANDS=1 . -@end example -@item -Compile the project completely. If you pass flags to your build system, make -sure they are passed when generating @code{compile_commands.json} as well. -@item -Open the file in question, and enable @code{beardbolt-mode}. -@item -Run @code{beardbolt-compile}. -@end enumerate - -@node Developing -@chapter Developing - -These are some tips which will help people working on developing or customizing beardbolt. - -@menu -* Adding a Language:: -@end menu - -@node Adding a Language -@section Adding a Language - -Adding support for a new language is fairly easy. The closer it is to existing -compilers, the easier it will be (to the point where a clone of a C compiler is -just a couple copy-paste lines). However, it is not excessively hard to add -support for completely foreign compilers and bytecode/assembly formats. - -As a minimum starting point, you must know how to compile a source file to -assembly or bytecode on the command line, and know how the line numbers are -available in the compiled form if they exist. - -@enumerate -@item -@uref{../beardbolt.el, Add a new entry to the language definitions statement.} -@itemize -@item -To do this, you will need to (at a minimum) add a mode, compile-command, a -compile-cmd-function, and a starter file name. -@item -The compile-cmd-function is a function that will turn local variable -settings into a valid command which will take in a filename and output -assembly or an executable. See @code{beardbolt--c-compile-cmd} for an example. -@item -When building compilation commands, please make sure to use absolute paths, -as the default-directory is not guaranteed to be stable. -@item -If the assembly is not in a standard format, you will need to define a -@code{process-asm-custom-fn} as well (see python/java for examples). -@item -If you would like to add language tweaks in your own config (ie: take full -control over what beardbolt does completely), you can use -@code{beardbolt-language-descriptor} to fully override the defaults with a custom -language definition. -@end itemize -@item -@uref{../beardbolt.el, Add a new entry into the starter file} -@itemize -@item -For this, you will need to make a starter file. See @uref{./../starters/, this folder} for -existing examples. -@item -Ideally, try to pick something which is interesting to play with from an -disassembly point of view. -@end itemize -@end enumerate - -You're done! - -@bye \ No newline at end of file diff --git a/doc/gen.sh b/doc/gen.sh deleted file mode 100755 index 657d886391..0000000000 --- a/doc/gen.sh +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/sh -emacs beardbolt.org --batch -l ox-texinfo -f org-texinfo-export-to-texinfo diff --git a/starters/Beardbolt.java b/starters/Beardbolt.java deleted file mode 100644 index a7b98418ea..0000000000 --- a/starters/Beardbolt.java +++ /dev/null @@ -1,27 +0,0 @@ -// Java beardbolt starter file - -// Local Variables: -// beardbolt-command: "javac" -// beardbolt-filter-directives: t -// End: - -public class beardbolt { - public static int isRMS(char in) { - switch (in) { - case 'R': - return 1; - case 'M': - return 2; - case 'S': - return 3; - default: - return 0; - } - } - - public static void main(String[] args) { - char a = 1 + 1; - if (isRMS(a) == 0) - System.out.println(a); - } -} diff --git a/starters/beardbolt-starter.el b/starters/beardbolt-starter.el deleted file mode 100644 index eb772354fd..0000000000 --- a/starters/beardbolt-starter.el +++ /dev/null @@ -1,27 +0,0 @@ -;;; beardbolt-starter.el --- Starter file for beardbolt -*- lexical-binding: t; -*- - -;;; Commentary: -;; A simple starter! - -;;; Code: - -(defun my-apply (fn &rest args) - "`apply's FN to ARGS." - (apply fn args)) - -(defun is-rms (letter) - "Check to see if a LETTER is RMS." - (pcase letter - ((or "R" "M" "S") t) - (_ nil))) - -(defun main () - "Main entrypoint." - (let* ((a (my-apply (lambda (a) (- a (+ 20 21))) - 999)) - (a (+ 1 1 1 a))) - (message (is-rms a)))) - -(main) - -;;; beardbolt-starter.el ends here diff --git a/starters/beardbolt.d b/starters/beardbolt.d deleted file mode 100644 index 34cecad0a0..0000000000 --- a/starters/beardbolt.d +++ /dev/null @@ -1,26 +0,0 @@ -// Local Variables: -// beardbolt-command: "ldc2 -O0" -// End: - -import std.stdio : writeln; - -int isRMS(char a) { - switch(a) { - case 'R': - return 1; - case 'M': - return 2; - case 'S': - return 3; - default: - return 0; - } -} - -int main() { - int a = 1 + 1; - if(isRMS(cast(char) a)) { - writeln(a); - } - return 0; -} diff --git a/starters/beardbolt.go b/starters/beardbolt.go deleted file mode 100644 index ab020fe41e..0000000000 --- a/starters/beardbolt.go +++ /dev/null @@ -1,32 +0,0 @@ -package main - -import ( - "fmt" -) - -// Go beardbolt starter file - -// Local Variables: -// beardbolt-command: "go" -// beardbolt-disassemble: t -// End: - -func isRMS(a int) int { - switch a { - case 'R': - return 1 - case 'M': - return 2 - case 'S': - return 3 - default: - return 0 - } -} - -func main() { - a := 1 + 1 - if isRMS(a) != 0 { - fmt.Printf("%c\n", a) - } -} diff --git a/starters/beardbolt.hs b/starters/beardbolt.hs deleted file mode 100644 index bf865f0a5b..0000000000 --- a/starters/beardbolt.hs +++ /dev/null @@ -1,31 +0,0 @@ --- Haskell beardbolt starter file - --- Haskell demangler support can be gained by placing the binary --- generated from this folder on your path under the name --- 'haskell-demangler' --- https://github.com/mattgodbolt/compiler-explorer/tree/master/haskell - --- Local Variables: --- beardbolt-command: "ghc -O0" --- End: - -module beardbolt where - -import Data.Char - -isRMS :: Char -> Bool -isRMS letter - | letter == 'R' = True - | letter == 'M' = True - | letter == 'S' = True - | otherwise = False - -main :: IO() -main = - let num = Data.Char.chr 2 in - let out = isRMS num in - let out_str = - if out then - "True" else - "False" in - putStrLn out_str diff --git a/starters/beardbolt.lisp b/starters/beardbolt.lisp deleted file mode 100644 index 1f50c1c19b..0000000000 --- a/starters/beardbolt.lisp +++ /dev/null @@ -1,16 +0,0 @@ -;; Common Lisp beardbolt starter file - -;; beardbolt ONLY DISASSEMBLES THE MAIN FUNCTION. -;; Please ensure you have a main function defined, -;; and place all your code inside of it! - -;; Local Variables: -;; beardbolt-command: "sbcl" -;; End: - -(defun main () - (defun add (a b) - ;; (declare (optimize (speed 3) (safety 0) (debug 0))) - ;; (declare (type fixnum a b)) - (+ a b)) - (add 2 3)) diff --git a/starters/beardbolt.ml b/starters/beardbolt.ml deleted file mode 100644 index 5a48c38b57..0000000000 --- a/starters/beardbolt.ml +++ /dev/null @@ -1,21 +0,0 @@ - - -(* OCaml beardbolt starter *) - -(* -Local Variables: -beardbolt-command: "ocamlopt" -beardbolt-disassemble: nil -End: -*) - -let rec fib num = - if num <= 1 then - num - else - fib (num - 1) + fib (num - 2);; - -let print_fib num = - Printf.printf "Fibonacci result of %d is %d.\n" num (fib 20);; - -print_fib 20 diff --git a/starters/beardbolt.nim b/starters/beardbolt.nim deleted file mode 100644 index 52597ececf..0000000000 --- a/starters/beardbolt.nim +++ /dev/null @@ -1,21 +0,0 @@ -import strutils - -# Nim beardbolt starter file - -# Local Variables: -# beardbolt-command: "nim c --opt:size" -# End: - - - -proc isRMS(a: char): uint8 {.exportc.} = - case a - of 'R': result = 1 - of 'M': result = 2 - of 'S': result = 3 - else: result = 0 - -proc main(): void = - const a: char = cast[char](1 + 1) - if (isRMS(a) != 0): - echo "$#" % $a diff --git a/starters/beardbolt.php b/starters/beardbolt.php deleted file mode 100644 index f537f86cf8..0000000000 --- a/starters/beardbolt.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -/* - beardbolt requires the 'vld.so' extension to php in order to display opcodes for PHP. - You can install it following instructions from here: - https://github.com/derickr/vld - - Without this, you will get an empty buffer or an error. - */ - -function isRMS($var) { - switch ($var) { - case 'R': - case 'M': - case 'S': - return true; - default: - return true; - } -} - - -function main() { - $a = 200; - foreach (range(1, 5) as $var) { - $a += $var; - } - $a = 82; - print(isRMS(chr($a)) ? "True\n" : "False\n"); -} - -main(); - -// Local Variables: -// beardbolt-command: "php" -// End: -?> diff --git a/starters/beardbolt.pony b/starters/beardbolt.pony deleted file mode 100644 index b44de8bba8..0000000000 --- a/starters/beardbolt.pony +++ /dev/null @@ -1,23 +0,0 @@ -// pony beardbolt starter file - -// Passing '--debug' is recommended to pony because without it LOC hints are optimized out - -// Local Variables: -// beardbolt-command: "ponyc --debug" -// beardbolt-disassemble: nil -// End: - -actor Main - new create(env: Env) => - var a: U8 = 1 + 1 - if is_rms(a) != 0 then - env.out.print(a.string()) - end - - fun ref is_rms(a: U8): I32 => - match a - | 'R' => 1 - | 'M' => 2 - | 'S' => 3 - else 0 - end diff --git a/starters/beardbolt.py b/starters/beardbolt.py deleted file mode 100644 index 0d10914a4d..0000000000 --- a/starters/beardbolt.py +++ /dev/null @@ -1,16 +0,0 @@ -# python beardbolt starter file -# -# Local Variables: -# beardbolt-command: "python3" -# End: - -RMS_MAP = { - 'R': 3, - 'M': 3, - 'S': 3 -} - -def isRMS(char): - return 3 - -print(isRMS('R')) diff --git a/starters/beardbolt.rs b/starters/beardbolt.rs deleted file mode 100644 index fb1159fbcb..0000000000 --- a/starters/beardbolt.rs +++ /dev/null @@ -1,23 +0,0 @@ -// rust beardbolt starter file - -// Local Variables: -// beardbolt-command: "rustc -C opt-level=0" -// beardbolt-disassemble: nil -// End: - - -fn is_rms(a: char) -> i32 { - match a { - 'R' => 1, - 'M' => 2, - 'S' => 3, - _ => 0, - } -} - -fn main() { - let a: u8 = 1 + 1; - if is_rms(a as char) != 0 { - println!("{}", a); - }; -} diff --git a/starters/beardbolt.swift b/starters/beardbolt.swift deleted file mode 100644 index 6fedfddfc7..0000000000 --- a/starters/beardbolt.swift +++ /dev/null @@ -1,28 +0,0 @@ -import Foundation - -// Swift beardbolt starter file - -// Local Variables: -// beardbolt-disassemble: nil -// End: - -func isRMS(_ a: Character) -> Int { - switch (a) { - case "R": - return 1 - case "M": - return 2 - case "S": - return 3 - default: - return 0 - } -} - -func main() -> Int { - let a: Character = "N" - if isRMS(a) == 0 { - print(a) - } - return 0 -} diff --git a/starters/beardbolt.zig b/starters/beardbolt.zig deleted file mode 100644 index 0211f9edba..0000000000 --- a/starters/beardbolt.zig +++ /dev/null @@ -1,53 +0,0 @@ -const std = @import("std"); - -// Zig beardbolt starter file - -// Local Variables: -// beardbolt-command: "zig build-obj -O ReleaseFast" -// beardbolt-disassemble: nil -// End: - -export fn isRMS(a: u8) u8 { - return switch (a) { - 'R' => 1, - 'M' => 2, - 'S' => 3, - else => 0, - }; -} - -// Exported by `exportFns` below -pub fn zigFn(xs: []u8) []u8 { - for (xs) |*x| { - x.* *= 2; - } - return xs; -} - -// Export all public, non-generic functions in this file. -// This is needed because functions that accept or return Zig-specific types can't be marked -// with `export`. -// `export` is limited to functions that only accept or return C types, which makes them -// compatible with the C calling convention. -export fn exportPubFns() usize { - var fns: usize = 0; - inline for (@typeInfo((@This())).Struct.decls) |decl| { - if (!decl.is_pub) continue; - const field = @field(@This(), decl.name); - const info = @typeInfo(@TypeOf(field)); - if (info == .Fn and !info.Fn.is_generic) { - fns += @ptrToInt(field); - } - } - return fns; -} - - -// In some cases, Zig embeds a panic handler that prints stack traces, causing a -// disassembly much larger than normal. -// You can optionally place this function in files you disassemble to make them easier to digest. -pub fn panic(msg: []const u8, error_return_trace: ?*std.builtin.StackTrace) noreturn { - _ = msg; - _ = error_return_trace; - while (true) {} -} diff --git a/test/beardbolt-c-post1.s b/test/beardbolt-c-post1.s deleted file mode 100644 index 2b100d724b..0000000000 --- a/test/beardbolt-c-post1.s +++ /dev/null @@ -1,47 +0,0 @@ -isRMS: - push rbp - mov rbp, rsp - mov DWORD PTR -4[rbp], edi - mov eax, DWORD PTR -4[rbp] - cmp eax, 82 - je .L3 - cmp eax, 83 - je .L4 - cmp eax, 77 - je .L5 - jmp .L7 -.L3: - mov eax, 1 - jmp .L6 -.L5: - mov eax, 2 - jmp .L6 -.L4: - mov eax, 3 - jmp .L6 -.L7: - mov eax, 200 -.L6: - pop rbp - ret -.LC0: - .string "%c\n" -main: - push rbp - mov rbp, rsp - sub rsp, 16 - mov BYTE PTR -1[rbp], 2 - movsx eax, BYTE PTR -1[rbp] - mov edi, eax - call isRMS - test eax, eax - je .L9 - movsx eax, BYTE PTR -1[rbp] - mov esi, eax - lea rdi, .LC0[rip] - mov eax, 0 - call printf@PLT -.L9: - mov eax, 0 - leave - ret diff --git a/test/beardbolt-c-post2.s b/test/beardbolt-c-post2.s deleted file mode 100644 index 93f393e6b3..0000000000 --- a/test/beardbolt-c-post2.s +++ /dev/null @@ -1,916 +0,0 @@ - .file "beardbolt.c" - .intel_syntax noprefix - .text -.Ltext0: - .globl isRMS - .type isRMS, @function -isRMS: -.LFB0: - .file 1 "/tmp/beardbolt-LsubiK/beardbolt.c" - .loc 1 11 0 - .cfi_startproc - push rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - mov rbp, rsp - .cfi_def_cfa_register 6 - mov DWORD PTR -4[rbp], edi - .loc 1 12 0 - mov eax, DWORD PTR -4[rbp] - cmp eax, 82 - je .L3 - cmp eax, 83 - je .L4 - cmp eax, 77 - je .L5 - jmp .L7 -.L3: - .loc 1 14 0 - mov eax, 1 - jmp .L6 -.L5: - .loc 1 16 0 - mov eax, 2 - jmp .L6 -.L4: - .loc 1 18 0 - mov eax, 3 - jmp .L6 -.L7: - .loc 1 20 0 - mov eax, 200 -.L6: - .loc 1 22 0 - pop rbp - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE0: - .size isRMS, .-isRMS - .section .rodata -.LC0: - .string "%c\n" - .text - .globl main - .type main, @function -main: -.LFB1: - .loc 1 24 0 - .cfi_startproc - push rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - mov rbp, rsp - .cfi_def_cfa_register 6 - sub rsp, 16 - .loc 1 25 0 - mov BYTE PTR -1[rbp], 2 - .loc 1 26 0 - movsx eax, BYTE PTR -1[rbp] - mov edi, eax - call isRMS - test eax, eax - je .L9 - .loc 1 27 0 - movsx eax, BYTE PTR -1[rbp] - mov esi, eax - lea rdi, .LC0[rip] - mov eax, 0 - call printf@PLT -.L9: - mov eax, 0 - .loc 1 28 0 - leave - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE1: - .size main, .-main -.Letext0: - .file 2 "/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h" - .file 3 "/usr/include/x86_64-linux-gnu/bits/types.h" - .file 4 "/usr/include/libio.h" - .file 5 "/usr/include/stdio.h" - .file 6 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" - .section .debug_info,"",@progbits -.Ldebug_info0: - .long 0x358 - .value 0x4 - .long .Ldebug_abbrev0 - .byte 0x8 - .uleb128 0x1 - .long .LASF56 - .byte 0xc - .long .LASF57 - .long .LASF58 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .long .Ldebug_line0 - .uleb128 0x2 - .long .LASF7 - .byte 0x2 - .byte 0xd8 - .long 0x38 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF0 - .uleb128 0x3 - .byte 0x1 - .byte 0x8 - .long .LASF1 - .uleb128 0x3 - .byte 0x2 - .byte 0x7 - .long .LASF2 - .uleb128 0x3 - .byte 0x4 - .byte 0x7 - .long .LASF3 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF4 - .uleb128 0x3 - .byte 0x2 - .byte 0x5 - .long .LASF5 - .uleb128 0x4 - .byte 0x4 - .byte 0x5 - .string "int" - .uleb128 0x3 - .byte 0x8 - .byte 0x5 - .long .LASF6 - .uleb128 0x2 - .long .LASF8 - .byte 0x3 - .byte 0x83 - .long 0x69 - .uleb128 0x2 - .long .LASF9 - .byte 0x3 - .byte 0x84 - .long 0x69 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF10 - .uleb128 0x5 - .byte 0x8 - .uleb128 0x6 - .byte 0x8 - .long 0x95 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF11 - .uleb128 0x7 - .long 0x95 - .uleb128 0x8 - .long .LASF41 - .byte 0xd8 - .byte 0x4 - .byte 0xf1 - .long 0x21e - .uleb128 0x9 - .long .LASF12 - .byte 0x4 - .byte 0xf2 - .long 0x62 - .byte 0 - .uleb128 0x9 - .long .LASF13 - .byte 0x4 - .byte 0xf7 - .long 0x8f - .byte 0x8 - .uleb128 0x9 - .long .LASF14 - .byte 0x4 - .byte 0xf8 - .long 0x8f - .byte 0x10 - .uleb128 0x9 - .long .LASF15 - .byte 0x4 - .byte 0xf9 - .long 0x8f - .byte 0x18 - .uleb128 0x9 - .long .LASF16 - .byte 0x4 - .byte 0xfa - .long 0x8f - .byte 0x20 - .uleb128 0x9 - .long .LASF17 - .byte 0x4 - .byte 0xfb - .long 0x8f - .byte 0x28 - .uleb128 0x9 - .long .LASF18 - .byte 0x4 - .byte 0xfc - .long 0x8f - .byte 0x30 - .uleb128 0x9 - .long .LASF19 - .byte 0x4 - .byte 0xfd - .long 0x8f - .byte 0x38 - .uleb128 0x9 - .long .LASF20 - .byte 0x4 - .byte 0xfe - .long 0x8f - .byte 0x40 - .uleb128 0xa - .long .LASF21 - .byte 0x4 - .value 0x100 - .long 0x8f - .byte 0x48 - .uleb128 0xa - .long .LASF22 - .byte 0x4 - .value 0x101 - .long 0x8f - .byte 0x50 - .uleb128 0xa - .long .LASF23 - .byte 0x4 - .value 0x102 - .long 0x8f - .byte 0x58 - .uleb128 0xa - .long .LASF24 - .byte 0x4 - .value 0x104 - .long 0x256 - .byte 0x60 - .uleb128 0xa - .long .LASF25 - .byte 0x4 - .value 0x106 - .long 0x25c - .byte 0x68 - .uleb128 0xa - .long .LASF26 - .byte 0x4 - .value 0x108 - .long 0x62 - .byte 0x70 - .uleb128 0xa - .long .LASF27 - .byte 0x4 - .value 0x10c - .long 0x62 - .byte 0x74 - .uleb128 0xa - .long .LASF28 - .byte 0x4 - .value 0x10e - .long 0x70 - .byte 0x78 - .uleb128 0xa - .long .LASF29 - .byte 0x4 - .value 0x112 - .long 0x46 - .byte 0x80 - .uleb128 0xa - .long .LASF30 - .byte 0x4 - .value 0x113 - .long 0x54 - .byte 0x82 - .uleb128 0xa - .long .LASF31 - .byte 0x4 - .value 0x114 - .long 0x262 - .byte 0x83 - .uleb128 0xa - .long .LASF32 - .byte 0x4 - .value 0x118 - .long 0x272 - .byte 0x88 - .uleb128 0xa - .long .LASF33 - .byte 0x4 - .value 0x121 - .long 0x7b - .byte 0x90 - .uleb128 0xa - .long .LASF34 - .byte 0x4 - .value 0x129 - .long 0x8d - .byte 0x98 - .uleb128 0xa - .long .LASF35 - .byte 0x4 - .value 0x12a - .long 0x8d - .byte 0xa0 - .uleb128 0xa - .long .LASF36 - .byte 0x4 - .value 0x12b - .long 0x8d - .byte 0xa8 - .uleb128 0xa - .long .LASF37 - .byte 0x4 - .value 0x12c - .long 0x8d - .byte 0xb0 - .uleb128 0xa - .long .LASF38 - .byte 0x4 - .value 0x12e - .long 0x2d - .byte 0xb8 - .uleb128 0xa - .long .LASF39 - .byte 0x4 - .value 0x12f - .long 0x62 - .byte 0xc0 - .uleb128 0xa - .long .LASF40 - .byte 0x4 - .value 0x131 - .long 0x278 - .byte 0xc4 - .byte 0 - .uleb128 0xb - .long .LASF59 - .byte 0x4 - .byte 0x96 - .uleb128 0x8 - .long .LASF42 - .byte 0x18 - .byte 0x4 - .byte 0x9c - .long 0x256 - .uleb128 0x9 - .long .LASF43 - .byte 0x4 - .byte 0x9d - .long 0x256 - .byte 0 - .uleb128 0x9 - .long .LASF44 - .byte 0x4 - .byte 0x9e - .long 0x25c - .byte 0x8 - .uleb128 0x9 - .long .LASF45 - .byte 0x4 - .byte 0xa2 - .long 0x62 - .byte 0x10 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x225 - .uleb128 0x6 - .byte 0x8 - .long 0xa1 - .uleb128 0xc - .long 0x95 - .long 0x272 - .uleb128 0xd - .long 0x86 - .byte 0 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x21e - .uleb128 0xc - .long 0x95 - .long 0x288 - .uleb128 0xd - .long 0x86 - .byte 0x13 - .byte 0 - .uleb128 0xe - .long .LASF60 - .uleb128 0xf - .long .LASF46 - .byte 0x4 - .value 0x13b - .long 0x288 - .uleb128 0xf - .long .LASF47 - .byte 0x4 - .value 0x13c - .long 0x288 - .uleb128 0xf - .long .LASF48 - .byte 0x4 - .value 0x13d - .long 0x288 - .uleb128 0x6 - .byte 0x8 - .long 0x9c - .uleb128 0x7 - .long 0x2b1 - .uleb128 0x10 - .long .LASF49 - .byte 0x5 - .byte 0xaa - .long 0x25c - .uleb128 0x10 - .long .LASF50 - .byte 0x5 - .byte 0xab - .long 0x25c - .uleb128 0x10 - .long .LASF51 - .byte 0x5 - .byte 0xac - .long 0x25c - .uleb128 0x10 - .long .LASF52 - .byte 0x6 - .byte 0x1a - .long 0x62 - .uleb128 0xc - .long 0x2b7 - .long 0x2f3 - .uleb128 0x11 - .byte 0 - .uleb128 0x7 - .long 0x2e8 - .uleb128 0x10 - .long .LASF53 - .byte 0x6 - .byte 0x1b - .long 0x2f3 - .uleb128 0x12 - .long .LASF54 - .byte 0x1 - .byte 0x18 - .long 0x62 - .quad .LFB1 - .quad .LFE1-.LFB1 - .uleb128 0x1 - .byte 0x9c - .long 0x331 - .uleb128 0x13 - .string "a" - .byte 0x1 - .byte 0x19 - .long 0x95 - .uleb128 0x2 - .byte 0x91 - .sleb128 -17 - .byte 0 - .uleb128 0x14 - .long .LASF55 - .byte 0x1 - .byte 0xb - .long 0x62 - .quad .LFB0 - .quad .LFE0-.LFB0 - .uleb128 0x1 - .byte 0x9c - .uleb128 0x15 - .string "a" - .byte 0x1 - .byte 0xb - .long 0x62 - .uleb128 0x2 - .byte 0x91 - .sleb128 -20 - .byte 0 - .byte 0 - .section .debug_abbrev,"",@progbits -.Ldebug_abbrev0: - .uleb128 0x1 - .uleb128 0x11 - .byte 0x1 - .uleb128 0x25 - .uleb128 0xe - .uleb128 0x13 - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1b - .uleb128 0xe - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x10 - .uleb128 0x17 - .byte 0 - .byte 0 - .uleb128 0x2 - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x3 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .byte 0 - .byte 0 - .uleb128 0x4 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0x8 - .byte 0 - .byte 0 - .uleb128 0x5 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x6 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x7 - .uleb128 0x26 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x8 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x9 - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xa - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xb - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xc - .uleb128 0x1 - .byte 0x1 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xd - .uleb128 0x21 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xe - .uleb128 0x13 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0xf - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x10 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x11 - .uleb128 0x21 - .byte 0 - .byte 0 - .byte 0 - .uleb128 0x12 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2116 - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x13 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 - .uleb128 0x14 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2117 - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x15 - .uleb128 0x5 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 - .byte 0 - .section .debug_aranges,"",@progbits - .long 0x2c - .value 0x2 - .long .Ldebug_info0 - .byte 0x8 - .byte 0 - .value 0 - .value 0 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .quad 0 - .quad 0 - .section .debug_line,"",@progbits -.Ldebug_line0: - .section .debug_str,"MS",@progbits,1 -.LASF20: - .string "_IO_buf_end" -.LASF28: - .string "_old_offset" -.LASF55: - .string "isRMS" -.LASF52: - .string "sys_nerr" -.LASF23: - .string "_IO_save_end" -.LASF5: - .string "short int" -.LASF7: - .string "size_t" -.LASF10: - .string "sizetype" -.LASF33: - .string "_offset" -.LASF17: - .string "_IO_write_ptr" -.LASF12: - .string "_flags" -.LASF19: - .string "_IO_buf_base" -.LASF24: - .string "_markers" -.LASF14: - .string "_IO_read_end" -.LASF57: - .string "/tmp/beardbolt-LsubiK/beardbolt.c" -.LASF51: - .string "stderr" -.LASF58: - .string "/tmp/beardbolt-LsubiK" -.LASF32: - .string "_lock" -.LASF6: - .string "long int" -.LASF29: - .string "_cur_column" -.LASF48: - .string "_IO_2_1_stderr_" -.LASF60: - .string "_IO_FILE_plus" -.LASF45: - .string "_pos" -.LASF44: - .string "_sbuf" -.LASF41: - .string "_IO_FILE" -.LASF1: - .string "unsigned char" -.LASF4: - .string "signed char" -.LASF46: - .string "_IO_2_1_stdin_" -.LASF3: - .string "unsigned int" -.LASF42: - .string "_IO_marker" -.LASF31: - .string "_shortbuf" -.LASF16: - .string "_IO_write_base" -.LASF40: - .string "_unused2" -.LASF13: - .string "_IO_read_ptr" -.LASF2: - .string "short unsigned int" -.LASF11: - .string "char" -.LASF54: - .string "main" -.LASF43: - .string "_next" -.LASF34: - .string "__pad1" -.LASF35: - .string "__pad2" -.LASF36: - .string "__pad3" -.LASF37: - .string "__pad4" -.LASF38: - .string "__pad5" -.LASF0: - .string "long unsigned int" -.LASF18: - .string "_IO_write_end" -.LASF9: - .string "__off64_t" -.LASF8: - .string "__off_t" -.LASF25: - .string "_chain" -.LASF22: - .string "_IO_backup_base" -.LASF49: - .string "stdin" -.LASF27: - .string "_flags2" -.LASF39: - .string "_mode" -.LASF15: - .string "_IO_read_base" -.LASF30: - .string "_vtable_offset" -.LASF21: - .string "_IO_save_base" -.LASF53: - .string "sys_errlist" -.LASF26: - .string "_fileno" -.LASF56: - .string "GNU C11 6.3.0 20170516 -masm=intel -mtune=generic -march=x86-64 -g -O0" -.LASF50: - .string "stdout" -.LASF47: - .string "_IO_2_1_stdout_" -.LASF59: - .string "_IO_lock_t" - .ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516" - .section .note.GNU-stack,"",@progbits diff --git a/test/beardbolt-c-post3.s b/test/beardbolt-c-post3.s deleted file mode 100644 index 87d05796a2..0000000000 --- a/test/beardbolt-c-post3.s +++ /dev/null @@ -1,117 +0,0 @@ -.Ltext0: -isRMS: -.LFB0: - push rbp - mov rbp, rsp - mov DWORD PTR -4[rbp], edi - mov eax, DWORD PTR -4[rbp] - cmp eax, 82 - je .L3 - cmp eax, 83 - je .L4 - cmp eax, 77 - je .L5 - jmp .L7 -.L3: - mov eax, 1 - jmp .L6 -.L5: - mov eax, 2 - jmp .L6 -.L4: - mov eax, 3 - jmp .L6 -.L7: - mov eax, 200 -.L6: - pop rbp - ret -.LFE0: -.LC0: - .string "%c\n" -main: -.LFB1: - push rbp - mov rbp, rsp - sub rsp, 16 - mov BYTE PTR -1[rbp], 2 - movsx eax, BYTE PTR -1[rbp] - mov edi, eax - call isRMS - test eax, eax - je .L9 - movsx eax, BYTE PTR -1[rbp] - mov esi, eax - lea rdi, .LC0[rip] - mov eax, 0 - call printf@PLT -.L9: - mov eax, 0 - leave - ret -.LFE1: -.Letext0: -.Ldebug_info0: -.Ldebug_abbrev0: -.Ldebug_line0: -.LASF20: -.LASF28: -.LASF55: -.LASF52: -.LASF23: -.LASF5: -.LASF7: -.LASF10: -.LASF33: -.LASF17: -.LASF12: -.LASF19: -.LASF24: -.LASF14: -.LASF57: -.LASF51: -.LASF58: -.LASF32: -.LASF6: -.LASF29: -.LASF48: -.LASF60: -.LASF45: -.LASF44: -.LASF41: -.LASF1: -.LASF4: -.LASF46: -.LASF3: -.LASF42: -.LASF31: -.LASF16: -.LASF40: -.LASF13: -.LASF2: -.LASF11: -.LASF54: -.LASF43: -.LASF34: -.LASF35: -.LASF36: -.LASF37: -.LASF38: -.LASF0: -.LASF18: -.LASF9: -.LASF8: -.LASF25: -.LASF22: -.LASF49: -.LASF27: -.LASF39: -.LASF15: -.LASF30: -.LASF21: -.LASF53: -.LASF26: -.LASF56: -.LASF50: -.LASF47: -.LASF59: diff --git a/test/beardbolt-c-post4.s b/test/beardbolt-c-post4.s deleted file mode 100644 index 6ea4cb2e43..0000000000 --- a/test/beardbolt-c-post4.s +++ /dev/null @@ -1,28 +0,0 @@ -isRMS: - sub edi, 77 - mov eax, 200 - cmp edi, 6 - ja .L1 - lea rax, CSWTCH.1[rip] - mov eax, DWORD PTR [rax+rdi*4] -.L1: - rep ret -.LC0: - .string "%c\n" -main: - lea rdi, .LC0[rip] - sub rsp, 8 - mov esi, 2 - xor eax, eax - call printf@PLT - xor eax, eax - add rsp, 8 - ret -CSWTCH.1: - .long 2 - .long 200 - .long 200 - .long 200 - .long 200 - .long 1 - .long 3 diff --git a/test/beardbolt-c-pre1.s b/test/beardbolt-c-pre1.s deleted file mode 100644 index 93f393e6b3..0000000000 --- a/test/beardbolt-c-pre1.s +++ /dev/null @@ -1,916 +0,0 @@ - .file "beardbolt.c" - .intel_syntax noprefix - .text -.Ltext0: - .globl isRMS - .type isRMS, @function -isRMS: -.LFB0: - .file 1 "/tmp/beardbolt-LsubiK/beardbolt.c" - .loc 1 11 0 - .cfi_startproc - push rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - mov rbp, rsp - .cfi_def_cfa_register 6 - mov DWORD PTR -4[rbp], edi - .loc 1 12 0 - mov eax, DWORD PTR -4[rbp] - cmp eax, 82 - je .L3 - cmp eax, 83 - je .L4 - cmp eax, 77 - je .L5 - jmp .L7 -.L3: - .loc 1 14 0 - mov eax, 1 - jmp .L6 -.L5: - .loc 1 16 0 - mov eax, 2 - jmp .L6 -.L4: - .loc 1 18 0 - mov eax, 3 - jmp .L6 -.L7: - .loc 1 20 0 - mov eax, 200 -.L6: - .loc 1 22 0 - pop rbp - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE0: - .size isRMS, .-isRMS - .section .rodata -.LC0: - .string "%c\n" - .text - .globl main - .type main, @function -main: -.LFB1: - .loc 1 24 0 - .cfi_startproc - push rbp - .cfi_def_cfa_offset 16 - .cfi_offset 6, -16 - mov rbp, rsp - .cfi_def_cfa_register 6 - sub rsp, 16 - .loc 1 25 0 - mov BYTE PTR -1[rbp], 2 - .loc 1 26 0 - movsx eax, BYTE PTR -1[rbp] - mov edi, eax - call isRMS - test eax, eax - je .L9 - .loc 1 27 0 - movsx eax, BYTE PTR -1[rbp] - mov esi, eax - lea rdi, .LC0[rip] - mov eax, 0 - call printf@PLT -.L9: - mov eax, 0 - .loc 1 28 0 - leave - .cfi_def_cfa 7, 8 - ret - .cfi_endproc -.LFE1: - .size main, .-main -.Letext0: - .file 2 "/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h" - .file 3 "/usr/include/x86_64-linux-gnu/bits/types.h" - .file 4 "/usr/include/libio.h" - .file 5 "/usr/include/stdio.h" - .file 6 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" - .section .debug_info,"",@progbits -.Ldebug_info0: - .long 0x358 - .value 0x4 - .long .Ldebug_abbrev0 - .byte 0x8 - .uleb128 0x1 - .long .LASF56 - .byte 0xc - .long .LASF57 - .long .LASF58 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .long .Ldebug_line0 - .uleb128 0x2 - .long .LASF7 - .byte 0x2 - .byte 0xd8 - .long 0x38 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF0 - .uleb128 0x3 - .byte 0x1 - .byte 0x8 - .long .LASF1 - .uleb128 0x3 - .byte 0x2 - .byte 0x7 - .long .LASF2 - .uleb128 0x3 - .byte 0x4 - .byte 0x7 - .long .LASF3 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF4 - .uleb128 0x3 - .byte 0x2 - .byte 0x5 - .long .LASF5 - .uleb128 0x4 - .byte 0x4 - .byte 0x5 - .string "int" - .uleb128 0x3 - .byte 0x8 - .byte 0x5 - .long .LASF6 - .uleb128 0x2 - .long .LASF8 - .byte 0x3 - .byte 0x83 - .long 0x69 - .uleb128 0x2 - .long .LASF9 - .byte 0x3 - .byte 0x84 - .long 0x69 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF10 - .uleb128 0x5 - .byte 0x8 - .uleb128 0x6 - .byte 0x8 - .long 0x95 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF11 - .uleb128 0x7 - .long 0x95 - .uleb128 0x8 - .long .LASF41 - .byte 0xd8 - .byte 0x4 - .byte 0xf1 - .long 0x21e - .uleb128 0x9 - .long .LASF12 - .byte 0x4 - .byte 0xf2 - .long 0x62 - .byte 0 - .uleb128 0x9 - .long .LASF13 - .byte 0x4 - .byte 0xf7 - .long 0x8f - .byte 0x8 - .uleb128 0x9 - .long .LASF14 - .byte 0x4 - .byte 0xf8 - .long 0x8f - .byte 0x10 - .uleb128 0x9 - .long .LASF15 - .byte 0x4 - .byte 0xf9 - .long 0x8f - .byte 0x18 - .uleb128 0x9 - .long .LASF16 - .byte 0x4 - .byte 0xfa - .long 0x8f - .byte 0x20 - .uleb128 0x9 - .long .LASF17 - .byte 0x4 - .byte 0xfb - .long 0x8f - .byte 0x28 - .uleb128 0x9 - .long .LASF18 - .byte 0x4 - .byte 0xfc - .long 0x8f - .byte 0x30 - .uleb128 0x9 - .long .LASF19 - .byte 0x4 - .byte 0xfd - .long 0x8f - .byte 0x38 - .uleb128 0x9 - .long .LASF20 - .byte 0x4 - .byte 0xfe - .long 0x8f - .byte 0x40 - .uleb128 0xa - .long .LASF21 - .byte 0x4 - .value 0x100 - .long 0x8f - .byte 0x48 - .uleb128 0xa - .long .LASF22 - .byte 0x4 - .value 0x101 - .long 0x8f - .byte 0x50 - .uleb128 0xa - .long .LASF23 - .byte 0x4 - .value 0x102 - .long 0x8f - .byte 0x58 - .uleb128 0xa - .long .LASF24 - .byte 0x4 - .value 0x104 - .long 0x256 - .byte 0x60 - .uleb128 0xa - .long .LASF25 - .byte 0x4 - .value 0x106 - .long 0x25c - .byte 0x68 - .uleb128 0xa - .long .LASF26 - .byte 0x4 - .value 0x108 - .long 0x62 - .byte 0x70 - .uleb128 0xa - .long .LASF27 - .byte 0x4 - .value 0x10c - .long 0x62 - .byte 0x74 - .uleb128 0xa - .long .LASF28 - .byte 0x4 - .value 0x10e - .long 0x70 - .byte 0x78 - .uleb128 0xa - .long .LASF29 - .byte 0x4 - .value 0x112 - .long 0x46 - .byte 0x80 - .uleb128 0xa - .long .LASF30 - .byte 0x4 - .value 0x113 - .long 0x54 - .byte 0x82 - .uleb128 0xa - .long .LASF31 - .byte 0x4 - .value 0x114 - .long 0x262 - .byte 0x83 - .uleb128 0xa - .long .LASF32 - .byte 0x4 - .value 0x118 - .long 0x272 - .byte 0x88 - .uleb128 0xa - .long .LASF33 - .byte 0x4 - .value 0x121 - .long 0x7b - .byte 0x90 - .uleb128 0xa - .long .LASF34 - .byte 0x4 - .value 0x129 - .long 0x8d - .byte 0x98 - .uleb128 0xa - .long .LASF35 - .byte 0x4 - .value 0x12a - .long 0x8d - .byte 0xa0 - .uleb128 0xa - .long .LASF36 - .byte 0x4 - .value 0x12b - .long 0x8d - .byte 0xa8 - .uleb128 0xa - .long .LASF37 - .byte 0x4 - .value 0x12c - .long 0x8d - .byte 0xb0 - .uleb128 0xa - .long .LASF38 - .byte 0x4 - .value 0x12e - .long 0x2d - .byte 0xb8 - .uleb128 0xa - .long .LASF39 - .byte 0x4 - .value 0x12f - .long 0x62 - .byte 0xc0 - .uleb128 0xa - .long .LASF40 - .byte 0x4 - .value 0x131 - .long 0x278 - .byte 0xc4 - .byte 0 - .uleb128 0xb - .long .LASF59 - .byte 0x4 - .byte 0x96 - .uleb128 0x8 - .long .LASF42 - .byte 0x18 - .byte 0x4 - .byte 0x9c - .long 0x256 - .uleb128 0x9 - .long .LASF43 - .byte 0x4 - .byte 0x9d - .long 0x256 - .byte 0 - .uleb128 0x9 - .long .LASF44 - .byte 0x4 - .byte 0x9e - .long 0x25c - .byte 0x8 - .uleb128 0x9 - .long .LASF45 - .byte 0x4 - .byte 0xa2 - .long 0x62 - .byte 0x10 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x225 - .uleb128 0x6 - .byte 0x8 - .long 0xa1 - .uleb128 0xc - .long 0x95 - .long 0x272 - .uleb128 0xd - .long 0x86 - .byte 0 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x21e - .uleb128 0xc - .long 0x95 - .long 0x288 - .uleb128 0xd - .long 0x86 - .byte 0x13 - .byte 0 - .uleb128 0xe - .long .LASF60 - .uleb128 0xf - .long .LASF46 - .byte 0x4 - .value 0x13b - .long 0x288 - .uleb128 0xf - .long .LASF47 - .byte 0x4 - .value 0x13c - .long 0x288 - .uleb128 0xf - .long .LASF48 - .byte 0x4 - .value 0x13d - .long 0x288 - .uleb128 0x6 - .byte 0x8 - .long 0x9c - .uleb128 0x7 - .long 0x2b1 - .uleb128 0x10 - .long .LASF49 - .byte 0x5 - .byte 0xaa - .long 0x25c - .uleb128 0x10 - .long .LASF50 - .byte 0x5 - .byte 0xab - .long 0x25c - .uleb128 0x10 - .long .LASF51 - .byte 0x5 - .byte 0xac - .long 0x25c - .uleb128 0x10 - .long .LASF52 - .byte 0x6 - .byte 0x1a - .long 0x62 - .uleb128 0xc - .long 0x2b7 - .long 0x2f3 - .uleb128 0x11 - .byte 0 - .uleb128 0x7 - .long 0x2e8 - .uleb128 0x10 - .long .LASF53 - .byte 0x6 - .byte 0x1b - .long 0x2f3 - .uleb128 0x12 - .long .LASF54 - .byte 0x1 - .byte 0x18 - .long 0x62 - .quad .LFB1 - .quad .LFE1-.LFB1 - .uleb128 0x1 - .byte 0x9c - .long 0x331 - .uleb128 0x13 - .string "a" - .byte 0x1 - .byte 0x19 - .long 0x95 - .uleb128 0x2 - .byte 0x91 - .sleb128 -17 - .byte 0 - .uleb128 0x14 - .long .LASF55 - .byte 0x1 - .byte 0xb - .long 0x62 - .quad .LFB0 - .quad .LFE0-.LFB0 - .uleb128 0x1 - .byte 0x9c - .uleb128 0x15 - .string "a" - .byte 0x1 - .byte 0xb - .long 0x62 - .uleb128 0x2 - .byte 0x91 - .sleb128 -20 - .byte 0 - .byte 0 - .section .debug_abbrev,"",@progbits -.Ldebug_abbrev0: - .uleb128 0x1 - .uleb128 0x11 - .byte 0x1 - .uleb128 0x25 - .uleb128 0xe - .uleb128 0x13 - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1b - .uleb128 0xe - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x10 - .uleb128 0x17 - .byte 0 - .byte 0 - .uleb128 0x2 - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x3 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .byte 0 - .byte 0 - .uleb128 0x4 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0x8 - .byte 0 - .byte 0 - .uleb128 0x5 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x6 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x7 - .uleb128 0x26 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x8 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x9 - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xa - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xb - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xc - .uleb128 0x1 - .byte 0x1 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xd - .uleb128 0x21 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xe - .uleb128 0x13 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0xf - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x10 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x11 - .uleb128 0x21 - .byte 0 - .byte 0 - .byte 0 - .uleb128 0x12 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2116 - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x13 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 - .uleb128 0x14 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2117 - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x15 - .uleb128 0x5 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x18 - .byte 0 - .byte 0 - .byte 0 - .section .debug_aranges,"",@progbits - .long 0x2c - .value 0x2 - .long .Ldebug_info0 - .byte 0x8 - .byte 0 - .value 0 - .value 0 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .quad 0 - .quad 0 - .section .debug_line,"",@progbits -.Ldebug_line0: - .section .debug_str,"MS",@progbits,1 -.LASF20: - .string "_IO_buf_end" -.LASF28: - .string "_old_offset" -.LASF55: - .string "isRMS" -.LASF52: - .string "sys_nerr" -.LASF23: - .string "_IO_save_end" -.LASF5: - .string "short int" -.LASF7: - .string "size_t" -.LASF10: - .string "sizetype" -.LASF33: - .string "_offset" -.LASF17: - .string "_IO_write_ptr" -.LASF12: - .string "_flags" -.LASF19: - .string "_IO_buf_base" -.LASF24: - .string "_markers" -.LASF14: - .string "_IO_read_end" -.LASF57: - .string "/tmp/beardbolt-LsubiK/beardbolt.c" -.LASF51: - .string "stderr" -.LASF58: - .string "/tmp/beardbolt-LsubiK" -.LASF32: - .string "_lock" -.LASF6: - .string "long int" -.LASF29: - .string "_cur_column" -.LASF48: - .string "_IO_2_1_stderr_" -.LASF60: - .string "_IO_FILE_plus" -.LASF45: - .string "_pos" -.LASF44: - .string "_sbuf" -.LASF41: - .string "_IO_FILE" -.LASF1: - .string "unsigned char" -.LASF4: - .string "signed char" -.LASF46: - .string "_IO_2_1_stdin_" -.LASF3: - .string "unsigned int" -.LASF42: - .string "_IO_marker" -.LASF31: - .string "_shortbuf" -.LASF16: - .string "_IO_write_base" -.LASF40: - .string "_unused2" -.LASF13: - .string "_IO_read_ptr" -.LASF2: - .string "short unsigned int" -.LASF11: - .string "char" -.LASF54: - .string "main" -.LASF43: - .string "_next" -.LASF34: - .string "__pad1" -.LASF35: - .string "__pad2" -.LASF36: - .string "__pad3" -.LASF37: - .string "__pad4" -.LASF38: - .string "__pad5" -.LASF0: - .string "long unsigned int" -.LASF18: - .string "_IO_write_end" -.LASF9: - .string "__off64_t" -.LASF8: - .string "__off_t" -.LASF25: - .string "_chain" -.LASF22: - .string "_IO_backup_base" -.LASF49: - .string "stdin" -.LASF27: - .string "_flags2" -.LASF39: - .string "_mode" -.LASF15: - .string "_IO_read_base" -.LASF30: - .string "_vtable_offset" -.LASF21: - .string "_IO_save_base" -.LASF53: - .string "sys_errlist" -.LASF26: - .string "_fileno" -.LASF56: - .string "GNU C11 6.3.0 20170516 -masm=intel -mtune=generic -march=x86-64 -g -O0" -.LASF50: - .string "stdout" -.LASF47: - .string "_IO_2_1_stdout_" -.LASF59: - .string "_IO_lock_t" - .ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516" - .section .note.GNU-stack,"",@progbits diff --git a/test/beardbolt-c-pre2.s b/test/beardbolt-c-pre2.s deleted file mode 100644 index 8866264bde..0000000000 --- a/test/beardbolt-c-pre2.s +++ /dev/null @@ -1,1005 +0,0 @@ - .file "beardbolt.c" - .intel_syntax noprefix - .text -.Ltext0: - .p2align 4,,15 - .globl isRMS - .type isRMS, @function -isRMS: -.LFB11: - .file 1 "/tmp/beardbolt-LsubiK/beardbolt.c" - .loc 1 11 0 - .cfi_startproc -.LVL0: - sub edi, 77 -.LVL1: - .loc 1 12 0 - mov eax, 200 - cmp edi, 6 - ja .L1 - lea rax, CSWTCH.1[rip] - mov eax, DWORD PTR [rax+rdi*4] -.L1: - .loc 1 22 0 - rep ret - .cfi_endproc -.LFE11: - .size isRMS, .-isRMS - .section .rodata.str1.1,"aMS",@progbits,1 -.LC0: - .string "%c\n" - .section .text.startup,"ax",@progbits - .p2align 4,,15 - .globl main - .type main, @function -main: -.LFB12: - .loc 1 24 0 - .cfi_startproc -.LVL2: - .loc 1 27 0 - lea rdi, .LC0[rip] - .loc 1 24 0 - sub rsp, 8 - .cfi_def_cfa_offset 16 - .loc 1 27 0 - mov esi, 2 - xor eax, eax - call printf@PLT -.LVL3: - .loc 1 28 0 - xor eax, eax - add rsp, 8 - .cfi_def_cfa_offset 8 - ret - .cfi_endproc -.LFE12: - .size main, .-main - .section .rodata - .align 16 - .type CSWTCH.1, @object - .size CSWTCH.1, 28 -CSWTCH.1: - .long 2 - .long 200 - .long 200 - .long 200 - .long 200 - .long 1 - .long 3 - .text -.Letext0: - .file 2 "/usr/lib/gcc/x86_64-linux-gnu/6/include/stddef.h" - .file 3 "/usr/include/x86_64-linux-gnu/bits/types.h" - .file 4 "/usr/include/libio.h" - .file 5 "/usr/include/stdio.h" - .file 6 "/usr/include/x86_64-linux-gnu/bits/sys_errlist.h" - .section .debug_info,"",@progbits -.Ldebug_info0: - .long 0x393 - .value 0x4 - .long .Ldebug_abbrev0 - .byte 0x8 - .uleb128 0x1 - .long .LASF54 - .byte 0xc - .long .LASF55 - .long .LASF56 - .long .Ldebug_ranges0+0 - .quad 0 - .long .Ldebug_line0 - .uleb128 0x2 - .long .LASF7 - .byte 0x2 - .byte 0xd8 - .long 0x34 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF0 - .uleb128 0x3 - .byte 0x1 - .byte 0x8 - .long .LASF1 - .uleb128 0x3 - .byte 0x2 - .byte 0x7 - .long .LASF2 - .uleb128 0x3 - .byte 0x4 - .byte 0x7 - .long .LASF3 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF4 - .uleb128 0x3 - .byte 0x2 - .byte 0x5 - .long .LASF5 - .uleb128 0x4 - .byte 0x4 - .byte 0x5 - .string "int" - .uleb128 0x3 - .byte 0x8 - .byte 0x5 - .long .LASF6 - .uleb128 0x2 - .long .LASF8 - .byte 0x3 - .byte 0x83 - .long 0x65 - .uleb128 0x2 - .long .LASF9 - .byte 0x3 - .byte 0x84 - .long 0x65 - .uleb128 0x3 - .byte 0x8 - .byte 0x7 - .long .LASF10 - .uleb128 0x5 - .byte 0x8 - .uleb128 0x6 - .byte 0x8 - .long 0x91 - .uleb128 0x3 - .byte 0x1 - .byte 0x6 - .long .LASF11 - .uleb128 0x7 - .long 0x91 - .uleb128 0x8 - .long .LASF41 - .byte 0xd8 - .byte 0x4 - .byte 0xf1 - .long 0x21a - .uleb128 0x9 - .long .LASF12 - .byte 0x4 - .byte 0xf2 - .long 0x5e - .byte 0 - .uleb128 0x9 - .long .LASF13 - .byte 0x4 - .byte 0xf7 - .long 0x8b - .byte 0x8 - .uleb128 0x9 - .long .LASF14 - .byte 0x4 - .byte 0xf8 - .long 0x8b - .byte 0x10 - .uleb128 0x9 - .long .LASF15 - .byte 0x4 - .byte 0xf9 - .long 0x8b - .byte 0x18 - .uleb128 0x9 - .long .LASF16 - .byte 0x4 - .byte 0xfa - .long 0x8b - .byte 0x20 - .uleb128 0x9 - .long .LASF17 - .byte 0x4 - .byte 0xfb - .long 0x8b - .byte 0x28 - .uleb128 0x9 - .long .LASF18 - .byte 0x4 - .byte 0xfc - .long 0x8b - .byte 0x30 - .uleb128 0x9 - .long .LASF19 - .byte 0x4 - .byte 0xfd - .long 0x8b - .byte 0x38 - .uleb128 0x9 - .long .LASF20 - .byte 0x4 - .byte 0xfe - .long 0x8b - .byte 0x40 - .uleb128 0xa - .long .LASF21 - .byte 0x4 - .value 0x100 - .long 0x8b - .byte 0x48 - .uleb128 0xa - .long .LASF22 - .byte 0x4 - .value 0x101 - .long 0x8b - .byte 0x50 - .uleb128 0xa - .long .LASF23 - .byte 0x4 - .value 0x102 - .long 0x8b - .byte 0x58 - .uleb128 0xa - .long .LASF24 - .byte 0x4 - .value 0x104 - .long 0x252 - .byte 0x60 - .uleb128 0xa - .long .LASF25 - .byte 0x4 - .value 0x106 - .long 0x258 - .byte 0x68 - .uleb128 0xa - .long .LASF26 - .byte 0x4 - .value 0x108 - .long 0x5e - .byte 0x70 - .uleb128 0xa - .long .LASF27 - .byte 0x4 - .value 0x10c - .long 0x5e - .byte 0x74 - .uleb128 0xa - .long .LASF28 - .byte 0x4 - .value 0x10e - .long 0x6c - .byte 0x78 - .uleb128 0xa - .long .LASF29 - .byte 0x4 - .value 0x112 - .long 0x42 - .byte 0x80 - .uleb128 0xa - .long .LASF30 - .byte 0x4 - .value 0x113 - .long 0x50 - .byte 0x82 - .uleb128 0xa - .long .LASF31 - .byte 0x4 - .value 0x114 - .long 0x25e - .byte 0x83 - .uleb128 0xa - .long .LASF32 - .byte 0x4 - .value 0x118 - .long 0x26e - .byte 0x88 - .uleb128 0xa - .long .LASF33 - .byte 0x4 - .value 0x121 - .long 0x77 - .byte 0x90 - .uleb128 0xa - .long .LASF34 - .byte 0x4 - .value 0x129 - .long 0x89 - .byte 0x98 - .uleb128 0xa - .long .LASF35 - .byte 0x4 - .value 0x12a - .long 0x89 - .byte 0xa0 - .uleb128 0xa - .long .LASF36 - .byte 0x4 - .value 0x12b - .long 0x89 - .byte 0xa8 - .uleb128 0xa - .long .LASF37 - .byte 0x4 - .value 0x12c - .long 0x89 - .byte 0xb0 - .uleb128 0xa - .long .LASF38 - .byte 0x4 - .value 0x12e - .long 0x29 - .byte 0xb8 - .uleb128 0xa - .long .LASF39 - .byte 0x4 - .value 0x12f - .long 0x5e - .byte 0xc0 - .uleb128 0xa - .long .LASF40 - .byte 0x4 - .value 0x131 - .long 0x274 - .byte 0xc4 - .byte 0 - .uleb128 0xb - .long .LASF57 - .byte 0x4 - .byte 0x96 - .uleb128 0x8 - .long .LASF42 - .byte 0x18 - .byte 0x4 - .byte 0x9c - .long 0x252 - .uleb128 0x9 - .long .LASF43 - .byte 0x4 - .byte 0x9d - .long 0x252 - .byte 0 - .uleb128 0x9 - .long .LASF44 - .byte 0x4 - .byte 0x9e - .long 0x258 - .byte 0x8 - .uleb128 0x9 - .long .LASF45 - .byte 0x4 - .byte 0xa2 - .long 0x5e - .byte 0x10 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x221 - .uleb128 0x6 - .byte 0x8 - .long 0x9d - .uleb128 0xc - .long 0x91 - .long 0x26e - .uleb128 0xd - .long 0x82 - .byte 0 - .byte 0 - .uleb128 0x6 - .byte 0x8 - .long 0x21a - .uleb128 0xc - .long 0x91 - .long 0x284 - .uleb128 0xd - .long 0x82 - .byte 0x13 - .byte 0 - .uleb128 0xe - .long .LASF58 - .uleb128 0xf - .long .LASF46 - .byte 0x4 - .value 0x13b - .long 0x284 - .uleb128 0xf - .long .LASF47 - .byte 0x4 - .value 0x13c - .long 0x284 - .uleb128 0xf - .long .LASF48 - .byte 0x4 - .value 0x13d - .long 0x284 - .uleb128 0x6 - .byte 0x8 - .long 0x98 - .uleb128 0x7 - .long 0x2ad - .uleb128 0x10 - .long .LASF49 - .byte 0x5 - .byte 0xaa - .long 0x258 - .uleb128 0x10 - .long .LASF50 - .byte 0x5 - .byte 0xab - .long 0x258 - .uleb128 0x10 - .long .LASF51 - .byte 0x5 - .byte 0xac - .long 0x258 - .uleb128 0x10 - .long .LASF52 - .byte 0x6 - .byte 0x1a - .long 0x5e - .uleb128 0xc - .long 0x2b3 - .long 0x2ef - .uleb128 0x11 - .byte 0 - .uleb128 0x7 - .long 0x2e4 - .uleb128 0x10 - .long .LASF53 - .byte 0x6 - .byte 0x1b - .long 0x2ef - .uleb128 0x12 - .long .LASF59 - .byte 0x1 - .byte 0x18 - .long 0x5e - .quad .LFB12 - .quad .LFE12-.LFB12 - .uleb128 0x1 - .byte 0x9c - .long 0x34b - .uleb128 0x13 - .string "a" - .byte 0x1 - .byte 0x19 - .long 0x91 - .byte 0x2 - .uleb128 0x14 - .quad .LVL3 - .long 0x38a - .uleb128 0x15 - .uleb128 0x1 - .byte 0x55 - .uleb128 0x9 - .byte 0x3 - .quad .LC0 - .uleb128 0x15 - .uleb128 0x1 - .byte 0x54 - .uleb128 0x1 - .byte 0x32 - .byte 0 - .byte 0 - .uleb128 0x16 - .long .LASF60 - .byte 0x1 - .byte 0xb - .long 0x5e - .byte 0x1 - .long 0x365 - .uleb128 0x17 - .string "a" - .byte 0x1 - .byte 0xb - .long 0x5e - .byte 0 - .uleb128 0x18 - .long 0x34b - .quad .LFB11 - .quad .LFE11-.LFB11 - .uleb128 0x1 - .byte 0x9c - .long 0x38a - .uleb128 0x19 - .long 0x35b - .long .LLST0 - .byte 0 - .uleb128 0x1a - .long .LASF61 - .long .LASF61 - .byte 0x5 - .value 0x16c - .byte 0 - .section .debug_abbrev,"",@progbits -.Ldebug_abbrev0: - .uleb128 0x1 - .uleb128 0x11 - .byte 0x1 - .uleb128 0x25 - .uleb128 0xe - .uleb128 0x13 - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x1b - .uleb128 0xe - .uleb128 0x55 - .uleb128 0x17 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x10 - .uleb128 0x17 - .byte 0 - .byte 0 - .uleb128 0x2 - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x3 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0xe - .byte 0 - .byte 0 - .uleb128 0x4 - .uleb128 0x24 - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3e - .uleb128 0xb - .uleb128 0x3 - .uleb128 0x8 - .byte 0 - .byte 0 - .uleb128 0x5 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x6 - .uleb128 0xf - .byte 0 - .uleb128 0xb - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x7 - .uleb128 0x26 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x8 - .uleb128 0x13 - .byte 0x1 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0xb - .uleb128 0xb - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x9 - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xa - .uleb128 0xd - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x38 - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xb - .uleb128 0x16 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xc - .uleb128 0x1 - .byte 0x1 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0xd - .uleb128 0x21 - .byte 0 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x2f - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0xe - .uleb128 0x13 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0xf - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x10 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .byte 0 - .byte 0 - .uleb128 0x11 - .uleb128 0x21 - .byte 0 - .byte 0 - .byte 0 - .uleb128 0x12 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2117 - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x13 - .uleb128 0x34 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x1c - .uleb128 0xb - .byte 0 - .byte 0 - .uleb128 0x14 - .uleb128 0x4109 - .byte 0x1 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x31 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x15 - .uleb128 0x410a - .byte 0 - .uleb128 0x2 - .uleb128 0x18 - .uleb128 0x2111 - .uleb128 0x18 - .byte 0 - .byte 0 - .uleb128 0x16 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x27 - .uleb128 0x19 - .uleb128 0x49 - .uleb128 0x13 - .uleb128 0x20 - .uleb128 0xb - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x17 - .uleb128 0x5 - .byte 0 - .uleb128 0x3 - .uleb128 0x8 - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0xb - .uleb128 0x49 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x18 - .uleb128 0x2e - .byte 0x1 - .uleb128 0x31 - .uleb128 0x13 - .uleb128 0x11 - .uleb128 0x1 - .uleb128 0x12 - .uleb128 0x7 - .uleb128 0x40 - .uleb128 0x18 - .uleb128 0x2117 - .uleb128 0x19 - .uleb128 0x1 - .uleb128 0x13 - .byte 0 - .byte 0 - .uleb128 0x19 - .uleb128 0x5 - .byte 0 - .uleb128 0x31 - .uleb128 0x13 - .uleb128 0x2 - .uleb128 0x17 - .byte 0 - .byte 0 - .uleb128 0x1a - .uleb128 0x2e - .byte 0 - .uleb128 0x3f - .uleb128 0x19 - .uleb128 0x3c - .uleb128 0x19 - .uleb128 0x6e - .uleb128 0xe - .uleb128 0x3 - .uleb128 0xe - .uleb128 0x3a - .uleb128 0xb - .uleb128 0x3b - .uleb128 0x5 - .byte 0 - .byte 0 - .byte 0 - .section .debug_loc,"",@progbits -.Ldebug_loc0: -.LLST0: - .quad .LVL0 - .quad .LVL1 - .value 0x1 - .byte 0x55 - .quad .LVL1 - .quad .LFE11 - .value 0x4 - .byte 0xf3 - .uleb128 0x1 - .byte 0x55 - .byte 0x9f - .quad 0 - .quad 0 - .section .debug_aranges,"",@progbits - .long 0x3c - .value 0x2 - .long .Ldebug_info0 - .byte 0x8 - .byte 0 - .value 0 - .value 0 - .quad .Ltext0 - .quad .Letext0-.Ltext0 - .quad .LFB12 - .quad .LFE12-.LFB12 - .quad 0 - .quad 0 - .section .debug_ranges,"",@progbits -.Ldebug_ranges0: - .quad .Ltext0 - .quad .Letext0 - .quad .LFB12 - .quad .LFE12 - .quad 0 - .quad 0 - .section .debug_line,"",@progbits -.Ldebug_line0: - .section .debug_str,"MS",@progbits,1 -.LASF20: - .string "_IO_buf_end" -.LASF28: - .string "_old_offset" -.LASF60: - .string "isRMS" -.LASF52: - .string "sys_nerr" -.LASF23: - .string "_IO_save_end" -.LASF5: - .string "short int" -.LASF7: - .string "size_t" -.LASF10: - .string "sizetype" -.LASF33: - .string "_offset" -.LASF17: - .string "_IO_write_ptr" -.LASF12: - .string "_flags" -.LASF19: - .string "_IO_buf_base" -.LASF24: - .string "_markers" -.LASF14: - .string "_IO_read_end" -.LASF55: - .string "/tmp/beardbolt-LsubiK/beardbolt.c" -.LASF51: - .string "stderr" -.LASF56: - .string "/tmp/beardbolt-LsubiK" -.LASF32: - .string "_lock" -.LASF6: - .string "long int" -.LASF61: - .string "printf" -.LASF29: - .string "_cur_column" -.LASF48: - .string "_IO_2_1_stderr_" -.LASF58: - .string "_IO_FILE_plus" -.LASF45: - .string "_pos" -.LASF44: - .string "_sbuf" -.LASF41: - .string "_IO_FILE" -.LASF1: - .string "unsigned char" -.LASF4: - .string "signed char" -.LASF46: - .string "_IO_2_1_stdin_" -.LASF3: - .string "unsigned int" -.LASF42: - .string "_IO_marker" -.LASF31: - .string "_shortbuf" -.LASF16: - .string "_IO_write_base" -.LASF40: - .string "_unused2" -.LASF13: - .string "_IO_read_ptr" -.LASF2: - .string "short unsigned int" -.LASF11: - .string "char" -.LASF59: - .string "main" -.LASF43: - .string "_next" -.LASF34: - .string "__pad1" -.LASF35: - .string "__pad2" -.LASF36: - .string "__pad3" -.LASF37: - .string "__pad4" -.LASF38: - .string "__pad5" -.LASF0: - .string "long unsigned int" -.LASF18: - .string "_IO_write_end" -.LASF9: - .string "__off64_t" -.LASF8: - .string "__off_t" -.LASF25: - .string "_chain" -.LASF22: - .string "_IO_backup_base" -.LASF49: - .string "stdin" -.LASF27: - .string "_flags2" -.LASF39: - .string "_mode" -.LASF15: - .string "_IO_read_base" -.LASF30: - .string "_vtable_offset" -.LASF21: - .string "_IO_save_base" -.LASF53: - .string "sys_errlist" -.LASF26: - .string "_fileno" -.LASF54: - .string "GNU C11 6.3.0 20170516 -masm=intel -mtune=generic -march=x86-64 -g -O3" -.LASF50: - .string "stdout" -.LASF47: - .string "_IO_2_1_stdout_" -.LASF57: - .string "_IO_lock_t" - .ident "GCC: (Debian 6.3.0-18+deb9u1) 6.3.0 20170516" - .section .note.GNU-stack,"",@progbits