aboutsummaryrefslogtreecommitdiff
path: root/backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake
diff options
context:
space:
mode:
authorRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 19:46:28 +0800
committerRichard-Qin-X <richard.qin.001@gmail.com>2026-08-12 19:46:28 +0800
commit2ef71f86a2b3e23967e8af08ba1eaaa950f0e1b5 (patch)
tree106812bfab46391030440d3f138333e815c4d053 /backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake
parentde2d87751e05f8f0a804be45284f1314ec39055d (diff)
downloadrcc-project-2ef71f86a2b3e23967e8af08ba1eaaa950f0e1b5.tar.gz
rcc-project-2ef71f86a2b3e23967e8af08ba1eaaa950f0e1b5.tar.xz
[Tooling] Remove the duplicate assembly emitter
Diffstat (limited to 'backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake')
-rw-r--r--backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake88
1 files changed, 0 insertions, 88 deletions
diff --git a/backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake b/backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake
deleted file mode 100644
index 5ba800c..0000000
--- a/backend/tools/AssemblyEmitter/ObjectPipelineTest.cmake
+++ /dev/null
@@ -1,88 +0,0 @@
-# SPDX-License-Identifier: GPL-3.0-or-later
-
-if(NOT DEFINED EMITTER OR NOT DEFINED INPUT OR NOT DEFINED OUTPUT)
- message(FATAL_ERROR "object pipeline test is missing a required path")
-endif()
-
-set(RepeatedOutput "${OUTPUT}.repeat")
-execute_process(
- COMMAND "${EMITTER}" --input "${INPUT}" --filetype obj --output "${OUTPUT}"
- RESULT_VARIABLE FirstResult
- ERROR_VARIABLE FirstDiagnostics
-)
-if(NOT FirstResult EQUAL 0)
- message(FATAL_ERROR "object pipeline failed: ${FirstDiagnostics}")
-endif()
-
-execute_process(
- COMMAND "${EMITTER}" --input "${INPUT}" --filetype obj --output "${RepeatedOutput}"
- RESULT_VARIABLE SecondResult
- ERROR_VARIABLE SecondDiagnostics
-)
-if(NOT SecondResult EQUAL 0)
- message(FATAL_ERROR "repeated object pipeline failed: ${SecondDiagnostics}")
-endif()
-
-execute_process(
- COMMAND "${CMAKE_COMMAND}" -E compare_files "${OUTPUT}" "${RepeatedOutput}"
- RESULT_VARIABLE ComparisonResult
-)
-if(NOT ComparisonResult EQUAL 0)
- message(FATAL_ERROR "object pipeline output is not deterministic")
-endif()
-
-file(READ "${OUTPUT}" ObjectMagic OFFSET 0 LIMIT 4 HEX)
-if(NOT ObjectMagic STREQUAL "7f454c46")
- message(FATAL_ERROR "object pipeline did not produce an ELF file")
-endif()
-
-if(DEFINED LLVM_READELF AND NOT LLVM_READELF STREQUAL "LLVM_READELF-NOTFOUND" AND
- NOT LLVM_READELF STREQUAL "")
- execute_process(
- COMMAND "${LLVM_READELF}" -h -S -s -r "${OUTPUT}"
- RESULT_VARIABLE ReadELFResult
- OUTPUT_VARIABLE ReadELFOutput
- ERROR_VARIABLE ReadELFDiagnostics
- )
- if(NOT ReadELFResult EQUAL 0)
- message(FATAL_ERROR "LLVM readelf rejected generated object: ${ReadELFDiagnostics}")
- endif()
- if(NOT ReadELFOutput MATCHES "Type:[ \t]+REL" OR
- NOT ReadELFOutput MATCHES "Machine:[ \t]+RISC-V" OR
- NOT ReadELFOutput MATCHES "Flags:[ \t]+0x5" OR
- NOT ReadELFOutput MATCHES "\\.text" OR
- NOT ReadELFOutput MATCHES "\\.eh_frame" OR
- NOT ReadELFOutput MATCHES "\\.riscv\\.attributes")
- message(FATAL_ERROR "generated object is missing required RV64GC ELF metadata")
- endif()
- if(INPUT MATCHES "RISCVDataPipeline" AND
- (NOT ReadELFOutput MATCHES "\\.rodata" OR
- NOT ReadELFOutput MATCHES "\\.rela\\.text" OR
- NOT ReadELFOutput MATCHES "R_RISCV_64"))
- message(FATAL_ERROR "data pipeline object is missing data or relocation sections")
- endif()
-endif()
-
-if(DEFINED LLVM_OBJDUMP AND NOT LLVM_OBJDUMP STREQUAL "LLVM_OBJDUMP-NOTFOUND" AND
- NOT LLVM_OBJDUMP STREQUAL "")
- execute_process(
- COMMAND "${LLVM_OBJDUMP}" -dr --no-show-raw-insn "${OUTPUT}"
- RESULT_VARIABLE ObjdumpResult
- OUTPUT_VARIABLE ObjdumpOutput
- ERROR_VARIABLE ObjdumpDiagnostics
- )
- if(NOT ObjdumpResult EQUAL 0)
- message(FATAL_ERROR "LLVM objdump rejected generated object: ${ObjdumpDiagnostics}")
- endif()
- if(NOT ObjdumpOutput MATCHES "file format elf64-littleriscv" OR
- NOT ObjdumpOutput MATCHES "ret")
- message(FATAL_ERROR "generated object does not contain RV64GC function code")
- endif()
- if(INPUT MATCHES "RISCVStackFramePipeline" AND
- (NOT ObjdumpOutput MATCHES "addi[ \t]+sp, sp, -0x20" OR
- NOT ObjdumpOutput MATCHES "addi[ \t]+sp, sp, 0x20"))
- message(FATAL_ERROR "stack-frame object does not balance its stack pointer")
- endif()
-endif()
-
-file(REMOVE "${OUTPUT}" "${RepeatedOutput}")