Deleted Added
full compact
llvm-mc.cpp (221337) llvm-mc.cpp (223013)
1//===-- llvm-mc.cpp - Machine Code Hacking Driver -------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 169 unchanged lines hidden (view full) ---

178 OwningPtr<MemoryBuffer> BufferPtr;
179 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, BufferPtr)) {
180 errs() << ProgName << ": " << ec.message() << '\n';
181 return 1;
182 }
183 MemoryBuffer *Buffer = BufferPtr.take();
184
185 SourceMgr SrcMgr;
1//===-- llvm-mc.cpp - Machine Code Hacking Driver -------------------------===//
2//
3// The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//

--- 169 unchanged lines hidden (view full) ---

178 OwningPtr<MemoryBuffer> BufferPtr;
179 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, BufferPtr)) {
180 errs() << ProgName << ": " << ec.message() << '\n';
181 return 1;
182 }
183 MemoryBuffer *Buffer = BufferPtr.take();
184
185 SourceMgr SrcMgr;
186
186
187 // Tell SrcMgr about this buffer, which is what TGParser will pick up.
188 SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
187 // Tell SrcMgr about this buffer, which is what TGParser will pick up.
188 SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
189
189
190 // Record the location of the include directories so that the lexer can find
191 // it later.
192 SrcMgr.setIncludeDirs(IncludeDirs);
193
194 const Target *TheTarget = GetTarget(ProgName);
195 if (!TheTarget)
196 return 1;
197

--- 76 unchanged lines hidden (view full) ---

274 // Print the token string.
275 Out->os() << " (\"";
276 Out->os().write_escaped(Tok.getString());
277 Out->os() << "\")\n";
278 }
279
280 // Keep output if no errors.
281 if (Error == 0) Out->keep();
190 // Record the location of the include directories so that the lexer can find
191 // it later.
192 SrcMgr.setIncludeDirs(IncludeDirs);
193
194 const Target *TheTarget = GetTarget(ProgName);
195 if (!TheTarget)
196 return 1;
197

--- 76 unchanged lines hidden (view full) ---

274 // Print the token string.
275 Out->os() << " (\"";
276 Out->os().write_escaped(Tok.getString());
277 Out->os() << "\")\n";
278 }
279
280 // Keep output if no errors.
281 if (Error == 0) Out->keep();
282
282
283 return Error;
284}
285
286static int AssembleInput(const char *ProgName) {
287 const Target *TheTarget = GetTarget(ProgName);
288 if (!TheTarget)
289 return 1;
290
291 OwningPtr<MemoryBuffer> BufferPtr;
292 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, BufferPtr)) {
293 errs() << ProgName << ": " << ec.message() << '\n';
294 return 1;
295 }
296 MemoryBuffer *Buffer = BufferPtr.take();
283 return Error;
284}
285
286static int AssembleInput(const char *ProgName) {
287 const Target *TheTarget = GetTarget(ProgName);
288 if (!TheTarget)
289 return 1;
290
291 OwningPtr<MemoryBuffer> BufferPtr;
292 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, BufferPtr)) {
293 errs() << ProgName << ": " << ec.message() << '\n';
294 return 1;
295 }
296 MemoryBuffer *Buffer = BufferPtr.take();
297
297
298 SourceMgr SrcMgr;
298 SourceMgr SrcMgr;
299
299
300 // Tell SrcMgr about this buffer, which is what the parser will pick up.
301 SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
300 // Tell SrcMgr about this buffer, which is what the parser will pick up.
301 SrcMgr.AddNewSourceBuffer(Buffer, SMLoc());
302
302
303 // Record the location of the include directories so that the lexer can find
304 // it later.
305 SrcMgr.setIncludeDirs(IncludeDirs);
303 // Record the location of the include directories so that the lexer can find
304 // it later.
305 SrcMgr.setIncludeDirs(IncludeDirs);
306
307
306
307
308 llvm::OwningPtr<MCAsmInfo> MAI(TheTarget->createAsmInfo(TripleName));
309 assert(MAI && "Unable to create target asm info!");
308 llvm::OwningPtr<MCAsmInfo> MAI(TheTarget->createAsmInfo(TripleName));
309 assert(MAI && "Unable to create target asm info!");
310
310
311 // Package up features to be passed to target/subtarget
312 std::string FeaturesStr;
313 if (MCPU.size()) {
314 SubtargetFeatures Features;
315 Features.setCPU(MCPU);
316 FeaturesStr = Features.getString();
317 }
318

--- 54 unchanged lines hidden (view full) ---

373 if (EnableLogging) {
374 Str.reset(createLoggingStreamer(Str.take(), errs()));
375 }
376
377 OwningPtr<MCAsmParser> Parser(createMCAsmParser(*TheTarget, SrcMgr, Ctx,
378 *Str.get(), *MAI));
379 OwningPtr<TargetAsmParser> TAP(TheTarget->createAsmParser(*Parser, *TM));
380 if (!TAP) {
311 // Package up features to be passed to target/subtarget
312 std::string FeaturesStr;
313 if (MCPU.size()) {
314 SubtargetFeatures Features;
315 Features.setCPU(MCPU);
316 FeaturesStr = Features.getString();
317 }
318

--- 54 unchanged lines hidden (view full) ---

373 if (EnableLogging) {
374 Str.reset(createLoggingStreamer(Str.take(), errs()));
375 }
376
377 OwningPtr<MCAsmParser> Parser(createMCAsmParser(*TheTarget, SrcMgr, Ctx,
378 *Str.get(), *MAI));
379 OwningPtr<TargetAsmParser> TAP(TheTarget->createAsmParser(*Parser, *TM));
380 if (!TAP) {
381 errs() << ProgName
381 errs() << ProgName
382 << ": error: this target does not support assembly parsing.\n";
383 return 1;
384 }
385
386 Parser->setShowParsedOperands(ShowInstOperands);
387 Parser->setTargetParser(*TAP.get());
388
389 int Res = Parser->Run(NoInitialTextSection);

--- 9 unchanged lines hidden (view full) ---

399 if (!TheTarget)
400 return 0;
401
402 OwningPtr<MemoryBuffer> Buffer;
403 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, Buffer)) {
404 errs() << ProgName << ": " << ec.message() << '\n';
405 return 1;
406 }
382 << ": error: this target does not support assembly parsing.\n";
383 return 1;
384 }
385
386 Parser->setShowParsedOperands(ShowInstOperands);
387 Parser->setTargetParser(*TAP.get());
388
389 int Res = Parser->Run(NoInitialTextSection);

--- 9 unchanged lines hidden (view full) ---

399 if (!TheTarget)
400 return 0;
401
402 OwningPtr<MemoryBuffer> Buffer;
403 if (error_code ec = MemoryBuffer::getFileOrSTDIN(InputFilename, Buffer)) {
404 errs() << ProgName << ": " << ec.message() << '\n';
405 return 1;
406 }
407
407
408 OwningPtr<tool_output_file> Out(GetOutputStream());
409 if (!Out)
410 return 1;
411
412 int Res;
413 if (Enhanced) {
414 Res =
415 Disassembler::disassembleEnhanced(TripleName, *Buffer.take(), Out->os());

--- 38 unchanged lines hidden (view full) ---

454
455 // Initialize targets and assembly printers/parsers.
456 llvm::InitializeAllTargetInfos();
457 // FIXME: We shouldn't need to initialize the Target(Machine)s.
458 llvm::InitializeAllTargets();
459 llvm::InitializeAllAsmPrinters();
460 llvm::InitializeAllAsmParsers();
461 llvm::InitializeAllDisassemblers();
408 OwningPtr<tool_output_file> Out(GetOutputStream());
409 if (!Out)
410 return 1;
411
412 int Res;
413 if (Enhanced) {
414 Res =
415 Disassembler::disassembleEnhanced(TripleName, *Buffer.take(), Out->os());

--- 38 unchanged lines hidden (view full) ---

454
455 // Initialize targets and assembly printers/parsers.
456 llvm::InitializeAllTargetInfos();
457 // FIXME: We shouldn't need to initialize the Target(Machine)s.
458 llvm::InitializeAllTargets();
459 llvm::InitializeAllAsmPrinters();
460 llvm::InitializeAllAsmParsers();
461 llvm::InitializeAllDisassemblers();
462
462
463 cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
464 TripleName = Triple::normalize(TripleName);
465
466 switch (Action) {
467 default:
468 case AC_AsLex:
469 return AsLexInput(argv[0]);
470 case AC_Assemble:
471 return AssembleInput(argv[0]);
472 case AC_Disassemble:
473 return DisassembleInput(argv[0], false);
474 case AC_EDisassemble:
475 return DisassembleInput(argv[0], true);
476 }
463 cl::ParseCommandLineOptions(argc, argv, "llvm machine code playground\n");
464 TripleName = Triple::normalize(TripleName);
465
466 switch (Action) {
467 default:
468 case AC_AsLex:
469 return AsLexInput(argv[0]);
470 case AC_Assemble:
471 return AssembleInput(argv[0]);
472 case AC_Disassemble:
473 return DisassembleInput(argv[0], false);
474 case AC_EDisassemble:
475 return DisassembleInput(argv[0], true);
476 }
477
477
478 return 0;
479}
480
478 return 0;
479}
480