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

Mike Aizatsky via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 9 17:01:26 PDT 2016


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).




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/20160910/3b45f958/attachment.html>


More information about the llvm-commits mailing list