#if !KERNEL
#include <stdlib.h>
extern char *
__cxa_demangle(const char* __mangled_name, char* __output_buffer,
size_t* __length, int* __status);
#endif
#include "kxld_demangle.h"
const char *
kxld_demangle(const char *str, char **buffer __unused, size_t *length __unused)
{
#if KERNEL
return str;
#else
const char *rval = NULL;
char *demangled = NULL;
int status;
if (!str) goto finish;
rval = str;
if (!buffer || !length) goto finish;
demangled = __cxa_demangle(str+1, *buffer, length, &status);
if (!demangled || status) goto finish;
*buffer = demangled;
rval = demangled;
finish:
return rval;
#endif
}