[lld] r281108 - [ELF] Add support for -b binary

Michael Spencer via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 9 18:51:22 PDT 2016


On Fri, Sep 9, 2016 at 5:01 PM, Mike Aizatsky <aizatsky at google.com> wrote:

> Michael,
>
> I think this change introduces a memory leak. Could you take a look?
>
> http://lab.llvm.org:8011/builders/sanitizer-x86_64-
> linux-fast/builds/16225/steps/check-lld%20asan/logs/stdio
>
> Script:
> --
> echo -n "Fluffle Puff" > /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.binary
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/./bin/ld.lld -m elf_x86_64 -r -b binary /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.binary -o /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.out
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/./bin/llvm-readobj /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.out -sections -section-data -symbols | /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/./bin/FileCheck /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/elf/format-binary.test
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/./bin/llvm-mc -filetype=obj -triple=x86_64-pc-linux /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/test/elf/format-binary.test -o /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.o
> /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/./bin/ld.lld /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.o -b binary /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.binary -b default /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.o -shared -o /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm_build_asan/tools/lld/test/elf/Output/format-binary.test.tmp.out
> --
> Exit Code: 1
>
> Command Output (stderr):
> --
>
> =================================================================
> ==4521==ERROR: LeakSanitizer: detected memory leaks
>
> Direct leak of 968 byte(s) in 1 object(s) allocated from:
>     #0 0x657980 in operator new(unsigned long) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:78
>     #1 0x6dc7c6 in __allocate /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/new:171:10
>     #2 0x6dc7c6 in allocate /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/memory:1771
>     #3 0x6dc7c6 in allocate /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/memory:1526
>     #4 0x6dc7c6 in __split_buffer /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/__split_buffer:311
>     #5 0x6dc7c6 in std::__1::vector<unsigned char, std::__1::allocator<unsigned char> >::__append(unsigned long) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/vector:1032
>     #6 0x7e0bce in resize /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/libcxx_build_asan/include/c++/v1/vector:1989:15
>     #7 0x7e0bce in std::__1::unique_ptr<lld::elf::InputFile, std::__1::default_delete<lld::elf::InputFile> > lld::elf::BinaryFile::createELF<llvm::object::ELFType<(llvm::support::endianness)1, true> >() /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/InputFiles.cpp:765
>     #8 0xa18171 in lld::elf::SymbolTable<llvm::object::ELFType<(llvm::support::endianness)1, true> >::addFile(std::__1::unique_ptr<lld::elf::InputFile, std::__1::default_delete<lld::elf::InputFile> >) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/SymbolTable.cpp:58:16
>     #9 0x758e17 in void lld::elf::LinkerDriver::link<llvm::object::ELFType<(llvm::support::endianness)1, true> >(llvm::opt::InputArgList&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:620:12
>     #10 0x7446eb in lld::elf::LinkerDriver::main(llvm::ArrayRef<char const*>) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:315:5
>     #11 0x742800 in lld::elf::link(llvm::ArrayRef<char const*>, llvm::raw_ostream&) /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/ELF/Driver.cpp:52:11
>     #12 0x65b171 in main /mnt/b/sanitizer-buildbot3/sanitizer-x86_64-linux-fast/build/llvm/tools/lld/tools/lld/lld.cpp:106:13
>     #13 0x7f6158eb6f44 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21f44)
>
> SUMMARY: AddressSanitizer: 968 byte(s) leaked in 1 allocation(s).
>
>
>
>
Fixed in r281129. Thanks for the poke!

- Michael Spencer


>
> On Fri, Sep 9, 2016 at 4:47 PM Michael Spencer via llvm-commits <
> llvm-commits at lists.llvm.org> wrote:
>
>> On Fri, Sep 9, 2016 at 3:55 PM, Hans Wennborg <hwennborg at google.com>
>> wrote:
>>
>>> On Fri, Sep 9, 2016 at 3:08 PM, Michael J. Spencer via llvm-commits
>>> <llvm-commits at lists.llvm.org> wrote:
>>> > Author: mspencer
>>> > Date: Fri Sep  9 17:08:04 2016
>>> > New Revision: 281108
>>> >
>>> > URL: http://llvm.org/viewvc/llvm-project?rev=281108&view=rev
>>> > Log:
>>> > [ELF] Add support for -b binary
>>> >
>>> > Implemented by building an ELF file in memory.
>>> >
>>> > elf, default, and binary match gold behavior.
>>> >
>>> > Differential Revision: https://reviews.llvm.org/D24060
>>> >
>>> > Added:
>>> >     lld/trunk/ELF/ELFCreator.cpp
>>> >     lld/trunk/ELF/ELFCreator.h
>>> >     lld/trunk/test/elf/
>>> >     lld/trunk/test/elf/format-binary.test
>>>
>>> I assume the test was supposed to go in test/ELF/ ? Having two svn
>>> directories with the same name modulo case did not work well on
>>> Windows :-) I've tried to fix in r281115.
>>>
>>> Thanks,
>>> Hans
>>>
>>
>> Yep, thanks for fixing. I thought I had fixed that previously, but
>> apparently not.
>>
>> - Michael Spencer
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>>
> --
> Mike
> Sent from phone
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20160909/ea9ad610/attachment.html>


More information about the llvm-commits mailing list