(
outputFilename: string,
result: any,
maxSize: number,
intelAsm: boolean,
demangle: boolean,
staticReloc: boolean | undefined,
dynamicReloc: boolean,
filters: ParseFiltersAndOutputOptions,
)
| 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 ?? ''); |
no test coverage detected