MCPcopy Index your code
hub / github.com/compiler-explorer/compiler-explorer / objdump

Method objdump

lib/base-compiler.ts:658–723  ·  view source on GitHub ↗
(
        outputFilename: string,
        result: any,
        maxSize: number,
        intelAsm: boolean,
        demangle: boolean,
        staticReloc: boolean | undefined,
        dynamicReloc: boolean,
        filters: ParseFiltersAndOutputOptions,
    )

Source from the content-addressed store, hash-verified

656 }
657
658 async objdump(
659 outputFilename: string,
660 result: any,
661 maxSize: number,
662 intelAsm: boolean,
663 demangle: boolean,
664 staticReloc: boolean | undefined,
665 dynamicReloc: boolean,
666 filters: ParseFiltersAndOutputOptions,
667 ) {
668 const objdumpInputFile = this.getObjdumpInputFilename(outputFilename, filters);
669
670 if (!(await utils.fileExists(objdumpInputFile))) {
671 result.asm = '<No output file ' + objdumpInputFile + '>';
672 return result;
673 }
674
675 const objdumperInfo = this.getObjdumperForResult(result);
676 if (!objdumperInfo) {
677 result.asm = '<No objdumper configured>';
678 return result;
679 }
680
681 const objdumper = new objdumperInfo.cls();
682 const args = objdumper.getArgs(
683 objdumpInputFile,
684 demangle,
685 intelAsm,
686 staticReloc,
687 dynamicReloc,
688 this.compiler.objdumperArgs,
689 filters,
690 );
691
692 if (this.externalparser) {
693 const objResult = await this.externalparser.objdumpAndParseAssembly(result.dirPath, args, filters);
694 if (objResult.parsingTime !== undefined) {
695 objResult.objdumpTime = (objResult.execTime ?? 0) - (objResult.parsingTime ?? 0);
696 delete objResult.execTime;
697 }
698
699 result = {...result, ...objResult};
700 } else {
701 const execOptions: ExecutionOptions = {
702 maxOutput: maxSize,
703 customCwd: (result.dirPath as string) || path.dirname(objdumpInputFile),
704 };
705
706 const objResult = await objdumper.executeObjdump(
707 objdumperInfo.exe,
708 args,
709 execOptions,
710 this.exec.bind(this),
711 );
712
713 if (objResult.code === 0) {
714 result.objdumpTime = objResult.objdumpTime;
715 result.asm = this.postProcessObjdumpOutput(objResult.asm ?? '');

Callers 1

postProcessMethod · 0.95

Calls 7

getObjdumperForResultMethod · 0.95
fileExistsMethod · 0.80
errorMethod · 0.80
getArgsMethod · 0.45

Tested by

no test coverage detected