[lld] r230594 - Add Example Sub Target.
Eric Christopher
echristo at gmail.com
Wed Feb 25 16:55:09 PST 2015
Seems like a silly nit, but SubTarget is pretty loaded in llvm. Also a lot
of it seems subtarget and target for various parts of the example. Curious
what's going on with the example :)
-eric
On Wed Feb 25 2015 at 4:53:04 PM Michael J. Spencer <bigcheesegs at gmail.com>
wrote:
> Author: mspencer
> Date: Wed Feb 25 18:48:10 2015
> New Revision: 230594
>
> URL: http://llvm.org/viewvc/llvm-project?rev=230594&view=rev
> Log:
> Add Example Sub Target.
>
> Added:
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/CMakeLists.txt
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleLinkingContext.cpp
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleLinkingContext.h
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleTargetHandler.cpp
> lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleTargetHandler.h
> lld/trunk/test/elf/X86_64/ExampleTarget/
> lld/trunk/test/elf/X86_64/ExampleTarget/triple.test
> Modified:
> lld/trunk/include/lld/ReaderWriter/ELFTargets.h
> lld/trunk/lib/Driver/CMakeLists.txt
> lld/trunk/lib/Driver/GnuLdDriver.cpp
> lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt
>
> Modified: lld/trunk/include/lld/ReaderWriter/ELFTargets.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/include/lld/
> ReaderWriter/ELFTargets.h?rev=230594&r1=230593&r2=230594&view=diff
> ============================================================
> ==================
> --- lld/trunk/include/lld/ReaderWriter/ELFTargets.h (original)
> +++ lld/trunk/include/lld/ReaderWriter/ELFTargets.h Wed Feb 25 18:48:10
> 2015
> @@ -27,6 +27,7 @@ LLVM_TARGET(ARM)
> LLVM_TARGET(Hexagon)
> LLVM_TARGET(Mips)
> LLVM_TARGET(X86)
> +LLVM_TARGET(Example)
> LLVM_TARGET(X86_64)
>
> #undef LLVM_TARGET
>
> Modified: lld/trunk/lib/Driver/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/
> CMakeLists.txt?rev=230594&r1=230593&r2=230594&view=diff
> ============================================================
> ==================
> --- lld/trunk/lib/Driver/CMakeLists.txt (original)
> +++ lld/trunk/lib/Driver/CMakeLists.txt Wed Feb 25 18:48:10 2015
> @@ -28,6 +28,7 @@ add_llvm_library(lldDriver
> lldHexagonELFTarget
> lldMipsELFTarget
> lldX86ELFTarget
> + lldExampleSubTarget
> lldX86_64ELFTarget
> lldCore
> lldNative
>
> Modified: lld/trunk/lib/Driver/GnuLdDriver.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/Driver/
> GnuLdDriver.cpp?rev=230594&r1=230593&r2=230594&view=diff
> ============================================================
> ==================
> --- lld/trunk/lib/Driver/GnuLdDriver.cpp (original)
> +++ lld/trunk/lib/Driver/GnuLdDriver.cpp Wed Feb 25 18:48:10 2015
> @@ -353,6 +353,7 @@ GnuLdDriver::createELFLinkingContext(llv
> LLVM_TARGET(Hexagon)
> LLVM_TARGET(Mips)
> LLVM_TARGET(X86)
> + LLVM_TARGET(Example)
> LLVM_TARGET(X86_64)
> #undef LLVM_TARGET
> return nullptr;
>
> Modified: lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/CMakeLists.txt?rev=230594&r1=
> 230593&r2=230594&view=diff
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt (original)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/CMakeLists.txt Wed Feb 25
> 18:48:10 2015
> @@ -9,3 +9,5 @@ add_llvm_library(lldX86_64ELFTarget
> LLVMObject
> LLVMSupport
> )
> +
> +add_subdirectory(ExampleSubTarget)
>
> Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> CMakeLists.txt
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/ExampleSubTarget/CMakeLists.
> txt?rev=230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/CMakeLists.txt
> (added)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/CMakeLists.txt
> Wed Feb 25 18:48:10 2015
> @@ -0,0 +1,6 @@
> +add_llvm_library(lldExampleSubTarget
> + ExampleLinkingContext.cpp
> + ExampleTargetHandler.cpp
> + LINK_LIBS
> + lldX86_64ELFTarget
> + )
>
> Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleLinkingContext.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp?rev=
> 230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp
> (added)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.cpp
> Wed Feb 25 18:48:10 2015
> @@ -0,0 +1,36 @@
> +//===- lib/ReaderWriter/ELF/X86_64/ExampleTarget/ExampleLinkingContext.cpp
> ----===//
> +//
> +// The LLVM Linker
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ----------------===//
> +
> +#include "ExampleLinkingContext.h"
> +
> +#include "ExampleTargetHandler.h"
> +
> +using namespace lld;
> +using namespace elf;
> +
> +std::unique_ptr<ELFLinkingContext>
> +ExampleLinkingContext::create(llvm::Triple triple) {
> + if (triple.getVendorName() == "example")
> + return llvm::make_unique<ExampleLinkingContext>(triple);
> + return nullptr;
> +}
> +
> +ExampleLinkingContext::ExampleLinkingContext(llvm::Triple triple)
> + : X86_64LinkingContext(triple, std::unique_ptr<TargetHandlerBase>(
> + new ExampleTargetHandler(*this))) {
> + _outputELFType = llvm::ELF::ET_LOPROC;
> +}
> +
> +StringRef ExampleLinkingContext::entrySymbolName() const {
> + return "_start";
> +}
> +
> +void ExampleLinkingContext::addPasses(PassManager &p) {
> + ELFLinkingContext::addPasses(p);
> +}
>
> Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleLinkingContext.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.h?rev=
> 230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.h
> (added)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleLinkingContext.h
> Wed Feb 25 18:48:10 2015
> @@ -0,0 +1,31 @@
> +//===- lib/ReaderWriter/ELF/X86_64/ExampleTarget/ExampleLinkingContext.h
> --===//
> +//
> +// The LLVM Linker
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ----------------===//
> +
> +#ifndef LLD_READER_WRITER_ELF_X86_64_EXAMPLE_TARGET_EXAMPLE_
> LINKING_CONTEXT
> +#define LLD_READER_WRITER_ELF_X86_64_EXAMPLE_TARGET_EXAMPLE_
> LINKING_CONTEXT
> +
> +#include "../X86_64LinkingContext.h"
> +#include "../X86_64TargetHandler.h"
> +
> +namespace lld {
> +namespace elf {
> +
> +class ExampleLinkingContext final : public X86_64LinkingContext {
> +public:
> + static std::unique_ptr<ELFLinkingContext> create(llvm::Triple);
> + ExampleLinkingContext(llvm::Triple triple);
> +
> + StringRef entrySymbolName() const override;
> + void addPasses(PassManager &) override;
> +};
> +
> +} // end namespace elf
> +} // end namespace lld
> +
> +#endif
>
> Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleTargetHandler.cpp
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.cpp?rev=
> 230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.cpp
> (added)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.cpp
> Wed Feb 25 18:48:10 2015
> @@ -0,0 +1,24 @@
> +//===- lib/ReaderWriter/ELF/X86_64/ExampleTarget/ExampleTargetHandler.cpp
> -===//
> +//
> +// The LLVM Linker
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ----------------===//
> +
> +#include "ExampleTargetHandler.h"
> +
> +#include "ExampleLinkingContext.h"
> +#include "../X86_64ExecutableWriter.h"
> +
> +using namespace lld;
> +using namespace elf;
> +
> +ExampleTargetHandler::ExampleTargetHandler(ExampleLinkingContext &c)
> + : X86_64TargetHandler(c), _exampleContext(c) {}
> +
> +std::unique_ptr<Writer> ExampleTargetHandler::getWriter() {
> + return std::unique_ptr<Writer>(
> + new X86_64ExecutableWriter(_exampleContext, *_x86_64TargetLayout));
> +}
>
> Added: lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/
> ExampleTargetHandler.h
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/
> ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.h?rev=
> 230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.h
> (added)
> +++ lld/trunk/lib/ReaderWriter/ELF/X86_64/ExampleSubTarget/ExampleTargetHandler.h
> Wed Feb 25 18:48:10 2015
> @@ -0,0 +1,31 @@
> +//===- lib/ReaderWriter/ELF/X86_64/ExampleTarget/ExampleTargetHandler.h
> ---===//
> +//
> +// The LLVM Linker
> +//
> +// This file is distributed under the University of Illinois Open Source
> +// License. See LICENSE.TXT for details.
> +//
> +//===------------------------------------------------------
> ----------------===//
> +
> +#ifndef LLD_READER_WRITER_ELF_X86_64_EXAMPLE_TARGET_EXAMPLE_TARGET_
> HANDLER_H
> +#define LLD_READER_WRITER_ELF_X86_64_EXAMPLE_TARGET_EXAMPLE_TARGET_
> HANDLER_H
> +
> +#include "../X86_64TargetHandler.h"
> +
> +namespace lld {
> +namespace elf {
> +class ExampleLinkingContext;
> +
> +class ExampleTargetHandler final : public X86_64TargetHandler {
> +public:
> + ExampleTargetHandler(ExampleLinkingContext &c);
> +
> + std::unique_ptr<Writer> getWriter() override;
> +
> +private:
> + ExampleLinkingContext &_exampleContext;
> +};
> +} // end namespace elf
> +} // end namespace lld
> +
> +#endif
>
> Added: lld/trunk/test/elf/X86_64/ExampleTarget/triple.test
> URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/elf/
> X86_64/ExampleTarget/triple.test?rev=230594&view=auto
> ============================================================
> ==================
> --- lld/trunk/test/elf/X86_64/ExampleTarget/triple.test (added)
> +++ lld/trunk/test/elf/X86_64/ExampleTarget/triple.test Wed Feb 25
> 18:48:10 2015
> @@ -0,0 +1,32 @@
> +# Check that the Example Target is actually used.
> +
> +# RUN: yaml2obj -format=elf %s -o %t.o
> +# RUN: lld -flavor gnu -target x86_64-example-freebsd9 %t.o -o %t.exe
> +# RUN: llvm-readobj -file-headers %t.exe | FileCheck %s
> +#
> +# CHECK: Type: 0xFF00
> +
> +# object
> +
> +FileHeader:
> + Class: ELFCLASS64
> + Data: ELFDATA2LSB
> + OSABI: ELFOSABI_GNU
> + Type: ET_REL
> + Machine: EM_X86_64
> +Sections:
> + - Name: .text
> + Type: SHT_PROGBITS
> + Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
> + AddressAlign: 0x0000000000000010
> + Content: 554889E5B864000000C745FC000000
> 005DC366666666662E0F1F840000000000554889E531C05DC3
> +Symbols:
> + Local:
> + - Name: .text
> + Type: STT_SECTION
> + Section: .text
> + Global:
> + - Name: _start
> + Type: STT_FUNC
> + Section: .text
> + Size: 0x0000000000000000
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20150226/f63de4be/attachment.html>
More information about the llvm-commits
mailing list