- std::ostringstream str;
- Dl_info info;
- if (internal->value_ == NULL)
- str << "NULL";
- else if (dladdr(value, &info) == 0)
- str << internal->value_;
- else {
- str << info.dli_sname;
- off_t offset(value - reinterpret_cast<uint8_t *>(info.dli_saddr));
- if (offset != 0)
- str << "+0x" << std::hex << offset;
+
+ CYLocalPool pool;
+
+ sig::Function function(internal->variadic_);
+ sig::Copy(pool, function.signature, internal->signature_);
+
+ auto typed(CYDecodeType(pool, &function)); {
+ std::ostringstream str;
+ Dl_info info;
+ if (internal->value_ == NULL)
+ str << "NULL";
+ else if (dladdr(value, &info) == 0)
+ str << internal->value_;
+ else {
+ str << info.dli_sname;
+ off_t offset(value - reinterpret_cast<uint8_t *>(info.dli_saddr));
+ if (offset != 0)
+ str << "+0x" << std::hex << offset;
+ }
+
+ typed->identifier_ = new(pool) CYIdentifier(pool.strdup(str.str().c_str()));