diff options
-rw-r--r-- | include/ChangeLog | 5 | ||||
-rw-r--r-- | include/demangle.h | 18 | ||||
-rw-r--r-- | libiberty/ChangeLog | 6 | ||||
-rw-r--r-- | libiberty/cplus-dem.c | 1 | ||||
-rw-r--r-- | libiberty/rust-demangle.c | 1 | ||||
-rw-r--r-- | libiberty/rust-demangle.h | 45 |
6 files changed, 58 insertions, 18 deletions
diff --git a/include/ChangeLog b/include/ChangeLog index 6d09a8d..a4f3fe5 100644 --- a/include/ChangeLog +++ b/include/ChangeLog @@ -1,3 +1,8 @@ +2019-07-18 Eduard-Mihai Burtescu <eddyb@lyken.rs> + + * demangle.h (rust_is_mangled): Move to libiberty/rust-demangle.h. + (rust_demangle_sym): Move to libiberty/rust-demangle.h. + 2019-06-18 Thomas Schwinge <thomas@codesourcery.com> * gomp-constants.h (enum gomp_map_kind): Fix description of diff --git a/include/demangle.h b/include/demangle.h index f5d9b9e..06c3257 100644 --- a/include/demangle.h +++ b/include/demangle.h @@ -159,24 +159,6 @@ ada_demangle (const char *mangled, int options); extern char * dlang_demangle (const char *mangled, int options); -/* Returns non-zero iff MANGLED is a rust mangled symbol. MANGLED must - already have been demangled through cplus_demangle_v3. If this function - returns non-zero then MANGLED can be demangled (in-place) using - RUST_DEMANGLE_SYM. */ -extern int -rust_is_mangled (const char *mangled); - -/* Demangles SYM (in-place) if RUST_IS_MANGLED returned non-zero for SYM. - If RUST_IS_MANGLED returned zero for SYM then RUST_DEMANGLE_SYM might - replace characters that cannot be demangled with '?' and might truncate - SYM. After calling RUST_DEMANGLE_SYM SYM might be shorter, but never - larger. */ -extern void -rust_demangle_sym (char *sym); - -/* Demangles MANGLED if it was GNU_V3 and then RUST mangled, otherwise - returns NULL. Uses CPLUS_DEMANGLE_V3, RUST_IS_MANGLED and - RUST_DEMANGLE_SYM. Returns a new string that is owned by the caller. */ extern char * rust_demangle (const char *mangled, int options); diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index c3daf2a..af24257 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2019-07-18 Eduard-Mihai Burtescu <eddyb@lyken.rs> + + * cplus-dem.c: Include rust-demangle.h. + * rust-demangle.c: Include rust-demangle.h. + * rust-demangle.h: New file. + 2019-05-31 Michael Forney <mforney@mforney.org> * cp-demangle.c: Don't define CP_DYNAMIC_ARRAYS if __STDC_NO_VLA__ diff --git a/libiberty/cplus-dem.c b/libiberty/cplus-dem.c index afceed2..a39e2bf 100644 --- a/libiberty/cplus-dem.c +++ b/libiberty/cplus-dem.c @@ -52,6 +52,7 @@ void * realloc (); #define CURRENT_DEMANGLING_STYLE options #include "libiberty.h" +#include "rust-demangle.h" enum demangling_styles current_demangling_style = auto_demangling; diff --git a/libiberty/rust-demangle.c b/libiberty/rust-demangle.c index 9b2d2db..2302db4 100644 --- a/libiberty/rust-demangle.c +++ b/libiberty/rust-demangle.c @@ -47,6 +47,7 @@ extern void *memset(void *s, int c, size_t n); #include <demangle.h> #include "libiberty.h" +#include "rust-demangle.h" /* Mangled Rust symbols look like this: diff --git a/libiberty/rust-demangle.h b/libiberty/rust-demangle.h new file mode 100644 index 0000000..abf4c6c --- /dev/null +++ b/libiberty/rust-demangle.h @@ -0,0 +1,45 @@ +/* Internal demangler interface for the Rust programming language. + Copyright (C) 2016-2019 Free Software Foundation, Inc. + Written by David Tolnay (dtolnay@gmail.com). + +This file is part of the libiberty library. +Libiberty is free software; you can redistribute it and/or +modify it under the terms of the GNU Library General Public +License as published by the Free Software Foundation; either +version 2 of the License, or (at your option) any later version. + +In addition to the permissions in the GNU Library General Public +License, the Free Software Foundation gives you unlimited permission +to link the compiled version of this file into combinations with other +programs, and to distribute those combinations without any restriction +coming from the use of this file. (The Library Public License +restrictions do apply in other respects; for example, they cover +modification of the file, and distribution when not linked into a +combined executable.) + +Libiberty is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +Library General Public License for more details. + +You should have received a copy of the GNU Library General Public +License along with libiberty; see the file COPYING.LIB. +If not, see <http://www.gnu.org/licenses/>. */ + +/* This file provides some definitions shared by cplus-dem.c and + rust-demangle.c. It should not be included by any other files. */ + +/* Returns non-zero iff MANGLED is a rust mangled symbol. MANGLED must + already have been demangled through cplus_demangle_v3. If this function + returns non-zero then MANGLED can be demangled (in-place) using + RUST_DEMANGLE_SYM. */ +extern int +rust_is_mangled (const char *mangled); + +/* Demangles SYM (in-place) if RUST_IS_MANGLED returned non-zero for SYM. + If RUST_IS_MANGLED returned zero for SYM then RUST_DEMANGLE_SYM might + replace characters that cannot be demangled with '?' and might truncate + SYM. After calling RUST_DEMANGLE_SYM SYM might be shorter, but never + larger. */ +extern void +rust_demangle_sym (char *sym); |