ubsan

    1熱度

    1回答

    我有一個遺留的c項目與許多類型轉換和鑄件。通常檢查溢出動態行爲,gcc(和C朗)定義了一個內置函數: 內置函數:布爾__builtin_add_overflow(TYPE1一個,2型B,類型3 * RES) 如果結果溢出,則函數返回true。然後我的計劃可能會抓住這種情況並採取相應的行動 爲了在不更改任何遺留代碼的情況下具有相同的功能,是否可以指示gcc使用此類內置函數並調用提供的函數作爲捕獲器(

    3熱度

    1回答

    我們使用以下代碼來確定編譯時是否爲clang和gcc指定了-sanitize = address。我們如何確定-sanitize = undefined是否已被指定? bool isSanitized = false; #if defined(__has_feature) #if __has_feature(address_sanitizer) isSanitized = true;

    0熱度

    1回答

    我想建立一個簡單的Android二進制文件來測試UBSAN(未定義的行爲消毒劑)使用ndk r15c和鏗。 jni/main.cpp:17: error: undefined reference to '__ubsan_handle_type_mismatch_v1' jni/main.cpp:24: error: undefined reference to '__ubsan_handle_a

    3熱度

    1回答

    使用-fsanitize鏗鏘3.6編譯應用程序後=未定義, 我試圖同時使用抑制文件忽略一些錯誤,啓動儀器程序: UBSAN_OPTIONS="suppressions=ubsan.supp" ./app.exe 的抑制文件ubsan.supp包含: signed-integer-overflow:example.c 這就導致了一個錯誤信息: UndefinedBehaviorSanitiz

    1熱度

    1回答

    我們特拉維斯build matrix包括行與未定義行爲建立消毒: matrix: - BUILD_MODE="all" - BUILD_MODE="no-asm" - BUILD_MODE="asan" - BUILD_MODE="ubsan" GCC需要4.9(或者5.0)的UBsan,其引起我們的測試失敗的忠實的: ... $ gcc --vers

    1熱度

    1回答

    我想運行我的單元測試套件-fsanitize=address,undefined,並將所有消毒劑錯誤寫入report.txt文件。默認情況下,所有的清理器錯誤都會寫入標準輸出,但是該軟件也會將信息寫入標準輸出,因此很難檢測到錯誤。我想: export ASAN_OPTIONS="log_path=asan.log" ./mytests 而且我也嘗試運行測試之前調用C API: #includ

    -4熱度

    1回答

    我正在嘗試修復一些帶地址清理程序的C++代碼。 代碼說: unsigned result = *(uint32_t*)data; 而且消毒給出: runtime error: load of misaligned address 0x6280033f410a for type 'uint32_t', which requires 4 byte alignment 如何需要解決這一問題?

    24熱度

    2回答

    最近版本的GCC和Clang功能未定義的行爲Sanitizer(UBSan)是一個編譯標誌(-fsanitize=undefined),它添加了運行時檢測代碼。在出現錯誤時,會顯示如下這樣的警告: packet-ber.c:1917:23: runtime error: left shift of 54645397829836991 by 8 places cannot be represente

    2熱度

    1回答

    加載地址X的我正在通過未定義行爲消毒劑一些更新。消毒劑是生產的消息我不太明白: kalyna.cpp:1326:61: runtime error: load of address 0x0000016262c0 with insufficient space for an object of type 'const uint32_t' 0x0000016262c0: note: pointer

    3熱度

    1回答

    下面的代碼將崩潰,當它們被編譯通過鐺UBSAN #include <stdio.h> #include <stdlib.h> #include <iostream> #include <sstream> template<class T> inline std::string floatToString(T i){ printf("in floatToString\n");