From ab54e7f5befe32e572c7f168adf8b65179cc0077 Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Mon, 12 Jul 2021 23:39:29 +0100 Subject: [PATCH] [PoC] Use clang driver to link the object files --- bin/serene.cpp | 30 +++++++++--------- docs/videos.org | 2 +- resources/museum/first_executable_2021_07_12 | Bin 0 -> 19600 bytes resources/museum/first_object_file_2021_06_29 | Bin 0 -> 2400 bytes 4 files changed, 16 insertions(+), 16 deletions(-) create mode 100755 resources/museum/first_executable_2021_07_12 create mode 100644 resources/museum/first_object_file_2021_06_29 diff --git a/bin/serene.cpp b/bin/serene.cpp index 35fa067..582839b 100644 --- a/bin/serene.cpp +++ b/bin/serene.cpp @@ -166,25 +166,25 @@ int dumpAsObject(Namespace &ns) { llvm::outs() << "Wrote " << filename << "\n"; - clang::IntrusiveRefCntPtr diagID( - new clang::DiagnosticIDs()); - clang::IntrusiveRefCntPtr diagOpts = - new clang::DiagnosticOptions(); - clang::TextDiagnosticPrinter diagPrinter(llvm::errs(), &*diagOpts); - clang::DiagnosticsEngine diags(diagID, &*diagOpts, &diagPrinter); - clang::driver::Driver d("clang", targetTriple, diags, "Serene compiler"); - std::vector args; + llvm::IntrusiveRefCntPtr opts = + new clang::DiagnosticOptions; + clang::DiagnosticsEngine diags( + new clang::DiagnosticIDs, opts, + new clang::TextDiagnosticPrinter(llvm::errs(), opts.get())); - args.push_back(filename); - args.push_back("-o"); - args.push_back( + clang::driver::Driver d("clang", targetTriple, diags, "Serene compiler"); + std::vector args = {"hnt"}; + auto objf = llvm::formatv("/home/lxsameer/src/serene/serene/build/{0}.o", filename) - .str() - .c_str()); + .str(); + args.push_back(objf.c_str()); + args.push_back("-o"); + args.push_back(filename); d.setCheckInputsExist(false); - const std::unique_ptr compilation( - d.BuildCompilation(args)); + + std::unique_ptr compilation; + compilation.reset(d.BuildCompilation(args)); if (!compilation) { return 1; diff --git a/docs/videos.org b/docs/videos.org index e6199d5..8693cfb 100644 --- a/docs/videos.org +++ b/docs/videos.org @@ -39,7 +39,7 @@ CLOSED: [2021-07-10 Sat 09:04] - Lexical analyzer (Lexer) - Syntax analyzer (Parser) - Semantic analyzer -- Middeend +- Middleend - Intermediate code generation - Code optimizer - Backend diff --git a/resources/museum/first_executable_2021_07_12 b/resources/museum/first_executable_2021_07_12 new file mode 100755 index 0000000000000000000000000000000000000000..6b9b7ea7c064980f6869b6171964f4a53f8a8f94 GIT binary patch literal 19600 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 CaO<%E literal 0 HcmV?d00001 diff --git a/resources/museum/first_object_file_2021_06_29 b/resources/museum/first_object_file_2021_06_29 new file mode 100644 index 0000000000000000000000000000000000000000..0f83cc4d34ff0ce3c89c3307a62e5e6dd488e209 GIT binary patch literal 2400 zcmbW2&1(};5WweU`;mUQZR$r`D;mLGDsEa3L`55`Rg_di(R%Pull0XF^TqB)S}!7q z=Ys!%M~~v6cmDy8{uQEl5j^P3?#yQMe7!iZJM(@sZ)V=dCa+dYw=+tCh=S|T8wmx- z5BBV0WELTZkp~VAK5u&yXWm3K9;=+1caIJ_?&S2G`)Or1r>2GgG9HjooN2j^yF3fv zq`{T3t78P=F+KxPvTW2zCbG@f2?U7;lY^ppkx)yK^kZCQvr+e?6jM@(AW(sO|AVx;MWR)_H|2(s&?y* zEr9jaaw$HtKDatm1@=3FTe}+ZU~;Q8x?kRy47&6qXQGR@UkO}X9uC*=dZW6+wte= zwc4Tf?%aQLAqXqA=Y3I)dP_6VJDb}+X0-eWc$hq_RKW}OnxyHgk3aTg4gX=h$2sYH zC@FS$^A7~DHowjZW=`^LaDd!59{v;i03EjZ?|1@zpJ_2; z@1Zk&&m{H>U#2`ypuQ2<|0lC=e&?$!VX=sUEKxXUz zJ0Gg_N&OGwWA;zK7qwiFIuAPeg;zD0(fI>st`TqrD`Hmp~ literal 0 HcmV?d00001