summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitry Andric <dim@FreeBSD.org>2017-03-25 12:51:11 +0000
committerDimitry Andric <dim@FreeBSD.org>2017-03-25 12:51:11 +0000
commit44f3e9df0cdcbc4875abcd37c5783278c55fece4 (patch)
tree791c0314d69ff2d7bb30f66c1040de0405ca9740
parent68c772440bea6b8080326b60b8208dbfdfd491ee (diff)
Notes
-rw-r--r--CMakeLists.txt7
-rw-r--r--libelftc_dem_gnu3.c54
-rw-r--r--typeinfo.cc10
-rw-r--r--unwind-arm.h6
4 files changed, 35 insertions, 42 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 0202ca8625c9d..2054e4fb3214f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -13,11 +13,8 @@ set(CXXRT_SOURCES
add_library(cxxrt-static STATIC ${CXXRT_SOURCES})
add_library(cxxrt-shared SHARED ${CXXRT_SOURCES})
-
-if ("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux")
- target_link_libraries(cxxrt-shared dl)
- target_link_libraries(cxxrt-static dl)
-endif()
+target_link_libraries(cxxrt-shared ${CMAKE_DL_LIBS})
+target_link_libraries(cxxrt-static ${CMAKE_DL_LIBS})
set_target_properties(cxxrt-static cxxrt-shared PROPERTIES
OUTPUT_NAME "cxxrt"
diff --git a/libelftc_dem_gnu3.c b/libelftc_dem_gnu3.c
index 70ef3e8e1da8a..14a9b74200958 100644
--- a/libelftc_dem_gnu3.c
+++ b/libelftc_dem_gnu3.c
@@ -846,7 +846,7 @@ cpp_demangle_push_type_qualifier(struct cpp_demangle_data *ddata,
free(buf);
++e_idx;
break;
- };
+ }
--idx;
}
@@ -1007,7 +1007,7 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata)
return (cpp_demangle_push_str(ddata, "true", 4));
default:
return (0);
- };
+ }
case 'd':
++ddata->cur;
@@ -1057,7 +1057,7 @@ cpp_demangle_read_expr_primary(struct cpp_demangle_data *ddata)
default:
return (0);
- };
+ }
}
static int
@@ -1332,14 +1332,14 @@ cpp_demangle_read_expression(struct cpp_demangle_data *ddata)
/* operator sizeof */
ddata->cur += 2;
return (cpp_demangle_read_expression_unary(ddata, "sizeof", 6));
- };
+ }
switch (*ddata->cur) {
case 'L':
return (cpp_demangle_read_expr_primary(ddata));
case 'T':
return (cpp_demangle_read_tmpl_param(ddata));
- };
+ }
return (0);
}
@@ -1555,11 +1555,13 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
if (!cpp_demangle_push_str(ddata,
"non-transaction clone for ", 26))
return (0);
+ break;
case 't':
default:
if (!cpp_demangle_push_str(ddata,
"transaction clone for ", 22))
return (0);
+ break;
}
++ddata->cur;
return (cpp_demangle_read_encoding(ddata));
@@ -1712,7 +1714,7 @@ cpp_demangle_read_encoding(struct cpp_demangle_data *ddata)
if (*ddata->cur == '\0')
return (0);
break;
- };
+ }
return (cpp_demangle_read_name(ddata));
}
@@ -1784,7 +1786,7 @@ cpp_demangle_read_name(struct cpp_demangle_data *ddata)
return (cpp_demangle_read_nested_name(ddata));
case 'Z':
return (cpp_demangle_read_local_name(ddata));
- };
+ }
if (!vector_str_init(&v))
return (0);
@@ -1885,7 +1887,7 @@ cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata)
case 'K':
ddata->mem_cst = true;
break;
- };
+ }
++ddata->cur;
}
@@ -1913,7 +1915,7 @@ cpp_demangle_read_nested_name(struct cpp_demangle_data *ddata)
default:
if (!cpp_demangle_read_uqname(ddata))
goto clean;
- };
+ }
if ((subst_str = vector_str_substr(output, p_idx,
output->size - 1, &subst_str_len)) == NULL)
@@ -2188,35 +2190,35 @@ cpp_demangle_read_subst(struct cpp_demangle_data *ddata)
case SIMPLE_HASH('S', 'd'):
/* std::basic_iostream<char, std::char_traits<char> > */
- if (!cpp_demangle_push_str(ddata, "std::iostream", 19))
+ if (!cpp_demangle_push_str(ddata, "std::basic_iostream", 19))
return (0);
- ddata->last_sname = "iostream";
+ ddata->last_sname = "basic_iostream";
ddata->cur += 2;
if (*ddata->cur == 'I')
return (cpp_demangle_read_subst_stdtmpl(ddata,
- "std::iostream", 19));
+ "std::basic_iostream", 19));
return (1);
case SIMPLE_HASH('S', 'i'):
/* std::basic_istream<char, std::char_traits<char> > */
- if (!cpp_demangle_push_str(ddata, "std::istream", 18))
+ if (!cpp_demangle_push_str(ddata, "std::basic_istream", 18))
return (0);
- ddata->last_sname = "istream";
+ ddata->last_sname = "basic_istream";
ddata->cur += 2;
if (*ddata->cur == 'I')
return (cpp_demangle_read_subst_stdtmpl(ddata,
- "std::istream", 18));
+ "std::basic_istream", 18));
return (1);
case SIMPLE_HASH('S', 'o'):
/* std::basic_ostream<char, std::char_traits<char> > */
- if (!cpp_demangle_push_str(ddata, "std::ostream", 18))
+ if (!cpp_demangle_push_str(ddata, "std::basic_ostream", 18))
return (0);
- ddata->last_sname = "istream";
+ ddata->last_sname = "basic_ostream";
ddata->cur += 2;
if (*ddata->cur == 'I')
return (cpp_demangle_read_subst_stdtmpl(ddata,
- "std::ostream", 18));
+ "std::basic_ostream", 18));
return (1);
case SIMPLE_HASH('S', 's'):
@@ -2238,7 +2240,7 @@ cpp_demangle_read_subst(struct cpp_demangle_data *ddata)
case SIMPLE_HASH('S', 't'):
/* std:: */
return (cpp_demangle_read_subst_std(ddata));
- };
+ }
if (*(++ddata->cur) == '\0')
return (0);
@@ -2386,7 +2388,7 @@ cpp_demangle_read_tmpl_arg(struct cpp_demangle_data *ddata)
return (cpp_demangle_read_expr_primary(ddata));
case 'X':
return (cpp_demangle_read_expression(ddata));
- };
+ }
return (cpp_demangle_read_type(ddata, 0));
}
@@ -2842,7 +2844,7 @@ again:
case 'w':
/* wchar_t */
- if (!cpp_demangle_push_str(ddata, "wchar_t", 6))
+ if (!cpp_demangle_push_str(ddata, "wchar_t", 7))
goto clean;
++ddata->cur;
goto rtn;
@@ -2863,11 +2865,11 @@ again:
case 'z':
/* ellipsis */
- if (!cpp_demangle_push_str(ddata, "ellipsis", 8))
+ if (!cpp_demangle_push_str(ddata, "...", 3))
goto clean;
++ddata->cur;
goto rtn;
- };
+ }
if (!cpp_demangle_read_name(ddata))
goto clean;
@@ -3331,7 +3333,7 @@ cpp_demangle_read_uqname(struct cpp_demangle_data *ddata)
return (0);
ddata->cur += 2;
return (1);
- };
+ }
/* vendor extened operator */
if (*ddata->cur == 'v' && ELFTC_ISDIGIT(*(ddata->cur + 1))) {
@@ -3377,7 +3379,7 @@ cpp_demangle_read_uqname(struct cpp_demangle_data *ddata)
return (0);
ddata->cur +=2;
return (1);
- };
+ }
/* source name */
if (ELFTC_ISDIGIT(*ddata->cur) != 0)
@@ -3740,7 +3742,7 @@ hex_to_dec(char c)
return (15);
default:
return (-1);
- };
+ }
}
static void
diff --git a/typeinfo.cc b/typeinfo.cc
index 71de9ae59bd85..5c44ef1fd2cac 100644
--- a/typeinfo.cc
+++ b/typeinfo.cc
@@ -86,15 +86,7 @@ extern "C" char* __cxa_demangle(const char* mangled_name,
if (NULL != demangled)
{
size_t len = strlen(demangled);
- if (buf == NULL)
- {
- if (n)
- {
- *n = len;
- }
- return demangled;
- }
- if (*n < len+1)
+ if (!buf || (*n < len+1))
{
buf = static_cast<char*>(realloc(buf, len+1));
}
diff --git a/unwind-arm.h b/unwind-arm.h
index 52e563e41b626..870b7fd0f3af5 100644
--- a/unwind-arm.h
+++ b/unwind-arm.h
@@ -28,7 +28,7 @@
{
_URC_OK = 0, /* operation completed successfully */
_URC_FOREIGN_EXCEPTION_CAUGHT = 1,
- _URC_END_OF_STACK = 5,
+ _URC_END_OF_STACK = 5,
_URC_HANDLER_FOUND = 6,
_URC_INSTALL_CONTEXT = 7,
_URC_CONTINUE_UNWIND = 8,
@@ -41,10 +41,12 @@ typedef uint32_t _Unwind_State;
static const _Unwind_State _US_VIRTUAL_UNWIND_FRAME = 0;
static const _Unwind_State _US_UNWIND_FRAME_STARTING = 1;
static const _Unwind_State _US_UNWIND_FRAME_RESUME = 2;
+static const _Unwind_State _US_ACTION_MASK = 3;
#else // GCC fails at knowing what a constant expression is
# define _US_VIRTUAL_UNWIND_FRAME 0
# define _US_UNWIND_FRAME_STARTING 1
-# define _US_UNWIND_FRAME_RESUME 2
+# define _US_UNWIND_FRAME_RESUME 2
+# define _US_ACTION_MASK 3
#endif
typedef struct _Unwind_Context _Unwind_Context;