diff options
author | Dimitry Andric <dim@FreeBSD.org> | 2017-03-25 12:51:11 +0000 |
---|---|---|
committer | Dimitry Andric <dim@FreeBSD.org> | 2017-03-25 12:51:11 +0000 |
commit | 44f3e9df0cdcbc4875abcd37c5783278c55fece4 (patch) | |
tree | 791c0314d69ff2d7bb30f66c1040de0405ca9740 | |
parent | 68c772440bea6b8080326b60b8208dbfdfd491ee (diff) |
Notes
-rw-r--r-- | CMakeLists.txt | 7 | ||||
-rw-r--r-- | libelftc_dem_gnu3.c | 54 | ||||
-rw-r--r-- | typeinfo.cc | 10 | ||||
-rw-r--r-- | unwind-arm.h | 6 |
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; |