[lld] r316849 - Fix ubsan error.

Rui Ueyama via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 29 09:50:06 PDT 2017


Sorry for the breakage. Should be fixed in r316863.

On Sat, Oct 28, 2017 at 5:35 PM, Vitaly Buka <vitalybuka at google.com> wrote:

> That's too large even for 64bit
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-
> linux-bootstrap-ubsan/builds/225/steps/check-lld%20ubsan/logs/stdio
>
> /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/InputFiles.cpp:766:31: runtime error: shift exponent 64 is too large for 64-bit type 'unsigned long long'
>     #0 0x5ae623 in lld::elf::SharedFile<llvm::object::ELFType<(llvm::support::endianness)1, true> >::parseRest() /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/InputFiles.cpp:766:31
>     #1 0x6267ed in void lld::elf::SymbolTable::addFile<llvm::object::ELFType<(llvm::support::endianness)1, true> >(lld::elf::InputFile*) /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/SymbolTable.cpp:97:8
>     #2 0x5649d1 in void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::opt::InputArgList&) /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/Driver.cpp:1044:13
>     #3 0x55b5fa in lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>, bool) /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/Driver.cpp:407:5
>     #4 0x55a1c3 in lld::elf::link(llvm::ArrayRef<char const*>, bool, llvm::raw_ostream&) /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/ELF/Driver.cpp:95:11
>     #5 0x464944 in main /b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm/tools/lld/tools/lld/lld.cpp:116:13
>     #6 0x7f7068c082b0 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x202b0)
>     #7 0x44cdb9 in _start (/b/sanitizer-x86_64-linux-bootstrap-ubsan/build/llvm_build_ubsan/bin/lld+0x44cdb9)
>
>
>
> On Sat, Oct 28, 2017 at 3:18 PM, Rui Ueyama via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> Author: ruiu
>> Date: Sat Oct 28 15:18:29 2017
>> New Revision: 316849
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=316849&view=rev
>> Log:
>> Fix ubsan error.
>>
>> This patch fixes ubsan's "shift exponent 64 is too large for 32-bit type
>> 'int'" error.
>>
>> Modified:
>>     lld/trunk/ELF/InputFiles.cpp
>>
>> Modified: lld/trunk/ELF/InputFiles.cpp
>> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/InputFiles
>> .cpp?rev=316849&r1=316848&r2=316849&view=diff
>> ============================================================
>> ==================
>> --- lld/trunk/ELF/InputFiles.cpp (original)
>> +++ lld/trunk/ELF/InputFiles.cpp Sat Oct 28 15:18:29 2017
>> @@ -763,7 +763,7 @@ template <class ELFT> void SharedFile<EL
>>      // files because the loader takes care of it. However, if we promote
>> a
>>      // DSO symbol to point to .bss due to copy relocation, we need to
>> keep
>>      // the original alignment requirements. We infer it here.
>> -    uint32_t Alignment = 1 << countTrailingZeros((uint64_t)S
>> ym.st_value);
>> +    uint32_t Alignment = 1ULL << countTrailingZeros((uint64_t)S
>> ym.st_value);
>>      if (0 < Sym.st_shndx && Sym.st_shndx < Sections.size()) {
>>        uint32_t SecAlign = Sections[Sym.st_shndx].sh_addralign;
>>        Alignment = std::min(Alignment, SecAlign);
>>
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20171029/10eaf57d/attachment.html>


More information about the llvm-commits mailing list