libiberty: Add Rust symbol demangling.
authorDavid Tolnay <dtolnay@gmail.com>
Wed, 16 Nov 2016 23:09:27 +0000 (23:09 +0000)
committerMark Wielaard <mark@gcc.gnu.org>
Wed, 16 Nov 2016 23:09:27 +0000 (23:09 +0000)
commit10d48c59b0df93ea62b2f5d5850e10a60c43acff
tree3b8f116c9b4374f4fdcfa2ea9deeb92b304dde92
parent46b2baa723df876837763f269717413d04a226e0
libiberty: Add Rust symbol demangling.

Adds Rust symbol demangler. Rust mangles symbols using GNU_V3 style,
adding a hash and various special character subtitutions. This adds
a new rust style to cplus_demangle and adds 3 helper functions
rust_demangle, rust_demangle_sym and rust_is_mangled.

rust-demangle.c was written by David. Mark did the code formatting to
GNU style and integration into the gcc/libiberty build system and
testsuite.

include/ChangeLog:

2016-11-03  David Tolnay <dtolnay@gmail.com>
           Mark Wielaard  <mark@klomp.org>

       * demangle.h (DMGL_RUST): New macro.
       (DMGL_STYLE_MASK): Add DMGL_RUST.
       (demangling_styles): Add dlang_rust.
       (RUST_DEMANGLING_STYLE_STRING): New macro.
       (RUST_DEMANGLING): New macro.
       (rust_demangle): New prototype.
       (rust_is_mangled): Likewise.
       (rust_demangle_sym): Likewise.

libiberty/ChangeLog:

2016-11-03  David Tolnay <dtolnay@gmail.com>
           Mark Wielaard  <mark@klomp.org>

       * Makefile.in (CFILES): Add rust-demangle.c.
       (REQUIRED_OFILES): Add rust-demangle.o.
       * cplus-dem.c (libiberty_demanglers): Add rust_demangling case.
       (cplus_demangle): Handle RUST_DEMANGLING.
       (rust_demangle): New function.
       * rust-demangle.c: New file.
       * testsuite/Makefile.in (really-check): Add check-rust-demangle.
       (check-rust-demangle): New rule.
       * testsuite/rust-demangle-expected: New file.

Co-Authored-By: Mark Wielaard <mark@klomp.org>
From-SVN: r242524
include/ChangeLog
include/demangle.h
libiberty/ChangeLog
libiberty/Makefile.in
libiberty/cplus-dem.c
libiberty/rust-demangle.c [new file with mode: 0644]
libiberty/testsuite/Makefile.in
libiberty/testsuite/rust-demangle-expected [new file with mode: 0644]