mirror of
https://github.com/neovim/neovim.git
synced 2025-10-01 15:38:33 +00:00
Merge pull request #5595 from jamessan/tsan-pie
tsan: Compile with -fPIE and updated clang
This commit is contained in:
@@ -326,6 +326,7 @@ elseif(CLANG_TSAN)
|
||||
message(STATUS "Enabling Clang thread sanitizer for nvim.")
|
||||
set_property(TARGET nvim APPEND_STRING PROPERTY COMPILE_FLAGS "-DEXITFREE ")
|
||||
set_property(TARGET nvim APPEND_STRING PROPERTY COMPILE_FLAGS "-fsanitize=thread ")
|
||||
set_property(TARGET nvim APPEND_STRING PROPERTY COMPILE_FLAGS "-fPIE ")
|
||||
set_property(TARGET nvim APPEND_STRING PROPERTY LINK_FLAGS "-fsanitize=thread ")
|
||||
endif()
|
||||
|
||||
|
@@ -788,8 +788,28 @@ EXTERN int vr_lines_changed INIT(= 0); /* #Lines changed by "gR" so far */
|
||||
/// Encoding used when 'fencs' is set to "default"
|
||||
EXTERN char_u *fenc_default INIT(= NULL);
|
||||
|
||||
// To speed up BYTELEN() we keep a table with the byte lengths for utf-8
|
||||
EXTERN char utf8len_tab[256];
|
||||
// To speed up BYTELEN(); keep a lookup table to quickly get the length in
|
||||
// bytes of a UTF-8 character from the first byte of a UTF-8 string. Bytes
|
||||
// which are illegal when used as the first byte have a 1. The NUL byte has
|
||||
// length 1.
|
||||
EXTERN char utf8len_tab[256] INIT(= {
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
|
||||
3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
|
||||
4, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 1, 1,
|
||||
});
|
||||
|
||||
# if defined(USE_ICONV) && defined(DYNAMIC_ICONV)
|
||||
/* Pointers to functions and variables to be loaded at runtime */
|
||||
|
@@ -68,24 +68,6 @@ struct interval {
|
||||
# include "unicode_tables.generated.h"
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Lookup table to quickly get the length in bytes of a UTF-8 character from
|
||||
* the first byte of a UTF-8 string.
|
||||
* Bytes which are illegal when used as the first byte have a 1.
|
||||
* The NUL byte has length 1.
|
||||
*/
|
||||
char utf8len_tab[256] =
|
||||
{
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,
|
||||
2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,
|
||||
3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,3,4,4,4,4,4,4,4,4,5,5,5,5,6,6,1,1,
|
||||
};
|
||||
|
||||
/*
|
||||
* Like utf8len_tab above, but using a zero for illegal lead bytes.
|
||||
*/
|
||||
|
@@ -326,7 +326,9 @@ void msgpack_rpc_from_string(String result, msgpack_packer *res)
|
||||
FUNC_ATTR_NONNULL_ARG(2)
|
||||
{
|
||||
msgpack_pack_str(res, result.size);
|
||||
msgpack_pack_str_body(res, result.data, result.size);
|
||||
if (result.size > 0) {
|
||||
msgpack_pack_str_body(res, result.data, result.size);
|
||||
}
|
||||
}
|
||||
|
||||
typedef struct {
|
||||
|
@@ -1575,7 +1575,9 @@ static char *shada_filename(const char *file)
|
||||
do { \
|
||||
const String s_ = (s); \
|
||||
msgpack_pack_bin(spacker, s_.size); \
|
||||
msgpack_pack_bin_body(spacker, s_.data, s_.size); \
|
||||
if (s_.size > 0) { \
|
||||
msgpack_pack_bin_body(spacker, s_.data, s_.size); \
|
||||
} \
|
||||
} while (0)
|
||||
|
||||
/// Write single ShaDa entry
|
||||
|
Reference in New Issue
Block a user