On Tue, Apr 19, 2016 at 12:23 PM, Xishi Qiu <
qiux...@huawei.com> wrote:
> On 2016/4/19 17:40, Andrey Ryabinin wrote:
>
>>
>>
>> On 04/19/2016 12:33 PM, Dmitry Vyukov wrote:
>>> On Tue, Apr 19, 2016 at 11:19 AM, Xishi Qiu <
qiux...@huawei.com> wrote:
>>>> Hi,
>>>>
>>>> Where does this function defined? __asan_loadN_noabort()
>>>> Is __asan_loadN_noabort() the same as __asan_loadN()?
>>>>
>>>> ...
>>>> void __asan_loadN(unsigned long addr, size_t size)
>>>> {
>>>> check_memory_region(addr, size, false);
>>>> }
>>>> EXPORT_SYMBOL(__asan_loadN);
>>>>
>>>> __alias(__asan_loadN)
>>>> void __asan_loadN_noabort(unsigned long, size_t);
>>>> EXPORT_SYMBOL(__asan_loadN_noabort);
>>>> ...
>>>
>>>
>>> Hi Xishi,
>>>
>>> __asan_loadN_noabort is not defined, it is aliased to __asan_loadN. It
>>> means that both symbols point to the same contents.
>>>
>>> __asan_loadN_noabort and __asan_loadN are the same code-wise, but
>>> compiler treats _noabort version as, well, noabort (can return, while
>>> __asan_loadN must not return).
>>
>
> Hi, what does return mean? The two functions are both "void".
Void functions can also return. But functions like exit or abort do
not return, and they are treated specially by compilers. __asan_loadN
is like exit -- it does not return. __asan_loadN_noabort is like a