| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
feat: atrace提供打桩so (#960) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4845 merge feature-issue-960 into master feat: atrace提供打桩so (#960) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 实现摘要: 在某些芯片形态,不需要trace的功能,但由于上下游依赖,需要提供一个桩so,确保接口调用能正常返回; - 变更文件: - src/dfx/trace/atrace/utrace/CMakeLists.txt - src/dfx/trace/atrace/utrace/atrace_stub.c - tests/ut/atrace/ut/CMakeLists.txt - tests/ut/atrace/ut/utrace/CMakeLists.txt - tests/ut/atrace/ut/utrace/testcase/atrace_stub_utest.cc ### Diff 摘要 text src/dfx/trace/atrace/utrace/CMakeLists.txt | 56 ++++- src/dfx/trace/atrace/utrace/atrace_stub.c | 186 ++++++++++++++++ tests/ut/atrace/ut/CMakeLists.txt | 1 + tests/ut/atrace/ut/utrace/CMakeLists.txt | 43 ++++ .../atrace/ut/utrace/testcase/atrace_stub_utest.cc | 238 +++++++++++++++++++++ 5 files changed, 523 insertions(+), 1 deletion(-) ## 变更类型 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 关联的Issue https://gitcode.com/cann/runtime/issues/960 ## 如何测试 - 测试结论: PASS - 检测到代码变更文件 5 个: src/dfx/trace/atrace/utrace/CMakeLists.txt, src/dfx/trace/atrace/utrace/atrace_stub.c, tests/ut/atrace/ut/CMakeLists.txt, tests/ut/atrace/ut/utrace/CMakeLists.txt, tests/ut/atrace/ut/utrace/testcase/atrace_stub_utest.cc - 测试日志包含通过信号 - 测试日志覆盖计划测试项 2 条 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 ## 风险和遗留问题 - (none) See merge request: cann/runtime!4845 | 17 天前 | |
feat: trace 代码同步,打通 cpu_detect/trace_server 编译 (#815) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4176 merge feature-issue-815 into master feat: trace 代码同步,打通 cpu_detect/trace_server 编译 (#815) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 需求 关联 issue: #815 打通 trace 仓中此前被注释、未参与编译的产物(cpu_detect、trace_server、libutrace.so),并对 libutrace.so 做归一化:device 与 host 分别以不同源文件集编译,产物统一命名为 libascend_trace.so,libutrace.so 为兼容性保留。 ## 改动说明 源码文件按 issue 附带 diff 照搬。CMakeLists 按本仓实际路径与目标名适配: | 适配点 | 原 diff | 本仓 | |---|---|---| | libc_sec 头文件 | ${TOP_DIR}/abl/libc_sec/include(TOP_DIR 未定义) | ${LIBC_SEC_HEADER} | | trace_server 头文件 | ../../inc/utrace、../../inc/trace_server、${RUNTIME_DIR}/inc/driver | inc/toolchain、pkg_inc/driver、pkg_inc/trace | | cpu_detect 头文件 | ../inc/cpu_detect | ../inc/toolchain,并补 ${ATRACE_DIR}/common | | hal 链接 | 无条件 ascend_hal | PRODUCT_SIDE/PRODUCT 生成式表达式(与 utrace 一致) | | cpu_detect 依赖库 | 裸路径 slog.so、libc_sec.so | unified_dlog、c_sec 目标 | | PRODUCT 型号 | ascend910_95 | ascend950(对齐本仓其余模块) | 其中 hal 链接一项,trace_server 与 cpu_detect 无条件链接 ascend_hal 会导致 host 侧编译失败(host 仅有 stub),已改用本仓既有写法。 ## 归一化实际编译效果核对 不止于「编译通过」,已核对产物构成是否真正符合 issue 的归一化要求: | 检查项 | host | device_default | |---|---|---| | libascend_trace.so 目标文件数 | 51 | 105 | | atrace 专属源(atrace_client_api 等) | 13 | 0 | | utrace 专属源(utrace_socket 等) | 0 | 13 | | ATRACE_HOST / HOST_ALOG 宏 | 有 | 无 | | ATRACE_ROOT_PATH 宏 | 无 | 有 | | hal 链接实际解析 | cmake/stub/libascend_hal.so | 不链 hal(实测未解析 hal 符号数为 0) | | 导出 API 符号 | Atrace* 25 个 | Atrace* 25 个 | libascend_trace.so 的两条路径分别对齐 master 原有 atrace_share(host)与 utrace_share(device_default)的源文件集,两者仅通过 ATRACE_API/UTRACE_API 宏切换对外符号名,这正是归一化的实现方式:同一份实现,两种符号导出。 ## cpu_detect 与 trace_server 以 ENABLE_OPEN_SRC 门控 cpu_detect 无条件编译 185 个 AArch64 .S 文件并附加 -march=armv8.3-a+crc+crypto+fp16,目录内 CMAKE_SYSTEM_PROCESSOR 出现 0 次、无任何架构守卫。在 x86_64 host 构建下宿主 gcc 会拒绝该 -march 值并无法汇编 AArch64 指令(STP X1, X2, [SP, #-16]!),属本 PR 打开该目录后引入的回归——感谢 @zhangpengpeng8 指出。 现两者置于 if (NOT ENABLE_OPEN_SRC) 内。build.sh 的 build_rts() 传入 -DENABLE_OPEN_SRC=True,故正式构建路径不再编译,x86 风险消除;内部构建(不带该宏)仍产出 libcpu_detect.so 与 libutrace_server.so。 需 reviewer 留意的取舍:trace_server 本身不含 AArch64 汇编、无 x86 障碍,对它门控属「暂不作为开源交付件」的产品决策而非技术必需。issue 点名打通的三项中,cpu_detect 与 trace_server 在 build.sh 路径下不产出交付件,仅保证内部构建可编译。若二者应随开源版交付,则 trace_server 的门控可去掉、cpu_detect 需改为按 CMAKE_SYSTEM_PROCESSOR 门控。 UT 不受影响:cpu_detect UT 使用 stub/cpu_detect_testcase_stub.c,.S 引用数与 -march 出现数均为 0;且 build_rts() 同时传入 ENABLE_UT,实测该组合下四个 UT 目标均正常编译运行。 ## 删除 UT 下重复的 cpu_detect 头文件 删除 tests/ut/atrace/ut/cpu_detect/stub/ 下的 cpu_detect.h 与 cpu_detect_types.h。 该 UT 的 include 顺序中 stub/ 先于 inc/toolchain,故此前 UT 实际编译的是 stub 版本,而其错误码与本 PR 新增的对外头文件冲突: | 宏 | stub 头 | 对外头文件(出货用) | |---|---|---| | CPUD_ERROR_INIT | -11 | 10 | | CPUD_ERROR_TESTCASE | -6 | 100 | | CPUD_ERROR_CGROUP_BIND | -7 | 50 | | CPUD_DETECT_MAX_TIME | 3600 | 604800 | 即 UT 校验的契约与出货 libcpu_detect.so 所用的并不一致。删除后 UT 转而编译 inc/toolchain 下的真实头文件,两侧统一。 已排查:stub 头中另有 CpuDetectServerInit、CpuDetectInfo、CPU_DETECT_MAGIC_NUM 等声明,其引用方均在 log_daemon/cpu_detect/ 且该模块有独立头文件,与本 stub 无关;该 stub 目录亦无其他 UT 引用。 ## 补充 awatchdog 打包选项 依 issue 评论(2026-08-17)补充。awatchdog_share 此前无任何安装规则——实测安装产物中的 libascend_watchdog.so(72112 字节)实为 awatchdog_stub_share,真正的 awatchdog_share(104376 字节)从未被交付: | 安装路径 | 补充前 | 补充后 | |---|---|---| | lib/libascend_watchdog.so | 无 | 104376(真实库) | | lib/stub/libascend_watchdog.so | 72112(桩) | 72112(桩) | 头文件路径按本仓实际位置适配:评论中的 ${ADIAG_DIR}/inc/awatchdog/ 在本仓 ADIAG_DIR 未定义且目录不存在,awatchdog 对外头文件实际位于 pkg_inc/watchdog/,故改用 ${RUNTIME_DIR}。 ## 修复 diff 自身引入的缺陷 - **trace_recorder.c 两处格式化字符串占位符多于参数**(第 376、404 行),运行时会读取栈上垃圾数据、参数错位甚至崩溃,补入缺失的 ret。该缺陷会导致 UT TestGetDirMkdirFailed 段错误(退出码 139),即线上 UT 崩溃的根因,已用「修复前复现 139 / 修复后通过」双向验证 - **trace_core.c 信号模块 Init/Exit 不对称**:device 分支 TraceInit 不再调用 TraceSignalInit,但 TraceExit 仍调用 TraceSignalExit;同时 diff 移除了 stacktrace_signal.c 中 #else 分支的空实现,使该调用由「调空壳」转为「调真实现」。按 device 侧不启用 signal 的设计意图,移除未配对的 TraceSignalExit。host(ATRACE_HOST) 分支配对关系不变 - **ktrace_ts.c 字段初始化不对称**:eventMsg 经 AdiagMalloc 分配后未初始化 eventType 与 sequence,与 socket 路径保持一致补齐 ## 修复 so 无法加载问题 atrace_stackcore_api.c 原在 libtraceSrcFiles 中,而其 AtraceStackcoreParse 仅转调 scd_process.c 的 ScdProcessParseCore。libutrace.so 与 device_default 路径的 libascend_trace.so 复用 libtraceSrcFiles 但不含 scd_process.c,留下无法解析的 ScdProcessParseCore——实测 RTLD_NOW/RTLD_LAZY 均报 undefined symbol,即**整个 so 无法 dlopen**,而非仅调用失败。 该缺陷 master 上已存在(master 的 host libutrace.so 同样导出该符号且同样无法 dlopen),但此前 utrace_share 的 install_package 为注释状态、不作为交付件,故未暴露;本 PR 打开安装后会使其成为已发布的破损交付件。 现将该文件移入 libatraceStackcoreSrcFiles,使其与 scd_* 实现同进同出。修复后 device 侧两个 so 由 dlopen 失败转为 RTLD_NOW 加载成功。 需知悉的行为变化:host libutrace.so 相比基线少导出 AtraceStackcoreParse,但基线该库本就无法加载,属由「有符号但整库不可用」变为「无符号但整库可用」。 ## UT 适配 - **trace_server_utest.cc**:生产代码已从 log_get_device_id 迁移到 halGetDevNumEx/halGetDevIDsEx,原打桩失效导致失败注入不生效(期望 -1 实得 0)。改为对两个 hal 接口分别打桩,并在两个场景间插入 GlobalMockObject::verify() 避免桩残留。已验证两条失败分支(trace_server_core.c:59、:65)均真实命中 - **cpu_detect_core_utest.cc**:UTEST_NORMAL 场景移除多余的 MOCKER(halBindCgroup)。aarch64 上该打桩会越界破坏入口仅相隔 28 字节的 halGetDeviceInfo(0x17d4c vs 0x17d68),使其返回全零,导致 CpuDetectGetCpuNum 读到 cpuNum=0 而用例失败。stub 中 halBindCgroup 本就返回 DRV_ERROR_NONE,无需打桩。该失败在未改动的 master 上以相同断言复现,非本 PR 引入,但会导致流水线 UT 阶段失败,故一并修复。同套件中 UTEST_BIND_CGROUP_FAIL 等场景因 mockcpp 在 aarch64 的同一限制已标注 GTEST_SKIP ## 验证结果 > 本地环境为 aarch64(gcc -dumpmachine = aarch64-linux-gnu,且无 x86 交叉编译器),因此**下述 host 结果均为 aarch64 host**;x86_64 host 构建无法在本地复现,ENABLE_OPEN_SRC 门控的有效性经代码审查与镜像测试确认(在 aarch64 上喂 x86 专属 -march 得到 cc1: error: unknown value,对称成立)。 编译: | 构建模式 | 结果 | |---|---| | ENABLE_OPEN_SRC=True(build.sh 路径) | atrace_share、utrace_share、awatchdog_share、awatchdog_stub_share 通过;cpu_detect 与 trace_server 按预期不参与编译 | | 不带该宏(内部构建) | 上述四者加 utrace_server_share、cpu_detect_share 共六个目标通过 | | device (ascend910B1) | 四个 trace 目标通过 | | pegasus (device_mdc) | 补齐外部 stub 后源文件 100% 编译通过(51/51、35/35、14/14、3/3),仅余 libiam 等 MDC 外部二进制缺失导致无法链接 | 原有交付件无回归(以 HEAD~1 worktree 建基线逐项比对):host libascend_trace.so 导出符号与基线**完全一致**(12 个),libutrace.so 源文件集完全一致;体积微变源于 diff 自身的源码删减而非 CMake 适配。 UT(ENABLE_OPEN_SRC=True + ENABLE_UT=on,与 CI 一致): | UT 目标 | 结果 | |---|---| | utrace_utest | 287 通过 | | trace_server_utest | 73 通过 | | cpu_detect_utest | 7 通过 / 6 跳过 | | awatchdog_utest | 14 通过 | | awatchdog_stub_utest | 2 通过 | ## 已知遗留(非本 PR 引入) - **RraceRbLogUtest.TestMsgNumEQBufferSize / TestMsgNumGTBufferSize 间歇失败**:8 写线程向容量 1024 的环形缓冲写满 1024 条,写满边界与读线程存在竞态。在未改动的 master 上连跑 3 次分别失败 1 个、0 个、2 个;trace_rb_log.c 与对应 UT 均与 master 逐字节相同。建议单独开 issue 处理生产代码的并发时序,不宜并入本 PR - **device_mdc 与 host_default 走同一 else() 分支**:三分支的 libtrace_type 实际只产生两种编译结果,device_mdc 该值被计算但未单独使用。按 issue「device 和 host 分别做不同的编译」的说法,pegasus 走 host 那套源文件集是否符合预期,请提交人确认 ## 检视意见处理情况 | 来源 | 条数 | 处理 | |---|---|---| | atomgit-bot | 3(2×High + 1×Medium) | 全部已修复,见「修复 diff 自身引入的缺陷」 | | @zhangpengpeng8 | 2(同一问题重述) | 已修复,见「ENABLE_OPEN_SRC 门控」 | | @newstarzj | 4 | 经核实均无需改动,理由见下 | @newstarzj 四条的核实结论: 1. **dataLength 下溢绕过校验** — 同一函数第 150 行已有 len < sizeof(UtraceMsg) 前置守卫(master 上即存在),走到减法时不可能下溢;且本 PR 该行实际是**收紧**了 master 的校验(上界由 len 改为 len - sizeof(UtraceMsg),正确排除头部长度) 2. **信号注册成 dead code** — 仅 device 分支移除,host 分支第 49、61 行仍完整配对(ATRACE_HOST 仅由 host 侧 atrace_share 定义),host 侧崩溃栈捕获能力完好 3. **device_default 未链 hal** — 事实准确,但实测该产物未解析 hal 符号数为 **0**。host 侧那 4 个 hal 符号(halHdcSend/Recv/SessionConnectEx/GetSessionAttr)来自 trace_client 的 HDC 通信代码,由两侧都链接的 adcore 提供,device_default 源集不含该路径 4. **版权年份 2026 疑似笔误** — 当前确为 2026 年,且上游 master 近期新增文件(如 aicpu_timeout_control.h)同样使用 2026 ## 关于 clang-format 格式化 commit 本 PR 含两个 commit: | commit | 内容 | |---|---| | feat: trace 代码同步... | 功能改动,即 #815 的需求实现 | | style: 按 clang-format 格式化... | 纯排版调整,无逻辑变更 | 拆分原因:upstream 提交 0f9386192 【PR】: feat:remove all exclude 移除了 .pre-commit-config.yaml 中 clang-format 的绝大部分排除规则——排除范围由 docs/example/include/pkg_inc/scripts/stub/tests 以及 src/(dfx/adump|dfx/log|dfx/trace/(atrace|common|cpu_detect|inc)) 收缩为仅剩 include/external/acl 下 5 个头文件。 该提交未同步格式化 trace 存量代码(其改动的 101 个文件中 trace 相关为 0),master 上 trace_attr.c、trace_msg.h 等至今仍不符合 clang-format。由于 pre-commit 仅检查 PR 改动的文件,未触碰 trace 时 master 可正常通过;而本 PR 改动了 24 个 trace 文件,rebase 到该提交之后这些文件全部进入检查范围,导致流水线 clang-format 检查失败。 格式化规模为 23 个文件、814 insertions / 903 deletions,**其中大部分是存量代码的重排**(这些文件历史上从未被 clang-format 处理),与 #815 的需求改动无关。故单独成一个 commit,评审时可用 git show --stat 区分,或只审第一个 commit 的功能改动。 无语义变更的验证依据:格式化前后各 so 的导出符号数完全一致(libascend_trace T=12/W=52、libutrace T=0/W=24、libcpu_detect T=13、libutrace_server T=21/W=53、libascend_watchdog T=2),五个编译目标与四个 UT 目标均通过。 若 reviewer 认为 trace 存量代码的格式化应由独立 PR 统一处理(例如与 remove all exclude 的作者协同分批推进),可将该 commit 摘出,但届时本 PR 的 clang-format 检查仍会失败,需要 CI 侧豁免或重新加回 trace 排除规则。 See merge request: cann/runtime!4176 | 1 个月前 | |
fix: runtime 仓dfx组件代码未进行代码格式化不符合代码规范,需要整改 (#840) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4361 merge fix-issue-840 into master fix: runtime 仓dfx组件代码未进行代码格式化不符合代码规范,需要整改 (#840) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 修复摘要: runtime 仓 dfx 组件代码未进行代码格式化,不符合代码规范,需要按仓内 pre-commit / clang-format 规范整改。 - 变更范围按 /mnt/workspace/.cann_fix/runtime_issue_840_20260819153258/cann-fix-plan.md 的候选修改点汇总,不在 PR 描述中逐文件展开: - src/dfx/log - src/dfx/trace - include/dfx/base/acl_log.h - include/dfx/base/alog_pub.h - include/dfx/base/log_types.h - pkg_inc/base/dlog_pub.h - pkg_inc/base/plog.h - pkg_inc/trace/atrace_pub.h - pkg_inc/trace/atrace_types.h - pkg_inc/watchdog/awatchdog.h - pkg_inc/watchdog/awatchdog_types.h - 文件级清单以计划产物 dfx-log-trace-expanded-files.txt 和 PR Files changed 为准,PR 描述不展开完整清单,避免描述过长。 - Diff 内容不逐文件展示,本次主体为格式化整改;检视反馈补充了文件末尾换行、宏表达式括号、atrace UT 中已有 utrace_arm_utest 目标的顶层依赖入口、stacktrace 覆盖率相关既有 UT 源文件的构建入口,以及线上覆盖率 UT 暴露的 ringbuffer 并发压测用例稳定性、AtraceStackcoreParse 包装层覆盖、atrace UT stub 依赖的 adcore 头文件 include 路径和 x86 ScdThreadsUtest 栈帧用例稳定性。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/840 ## 如何测试 - 测试结论: 格式化检查和新增覆盖率 focused 验证 PASS;ScdUtilUtest.TestScdPtraceAttach 超时已修复,完整 utrace_utest 不再因该用例超过 300s;线上覆盖率包中暴露的 RraceRbLogUtest 并发压测波动、atrace_stackcore_api.c 0 覆盖、atrace UT adcore_api.h 头文件缺失编译问题,以及 x86 ScdThreadsUtest.TestScdFramesInit/TestScdFramesMemcpyFailed 依赖真实栈展开导致的波动已补充处理。 - pre-commit run --files tests/ut/atrace/ut/utrace/testcase/stacktrace_dumper/scd_threads_utest.cc: PASS - pre-commit run --files tests/ut/atrace/ut/utrace/CMakeLists.txt tests/ut/atrace/ut/trace_server/CMakeLists.txt: PASS - pre-commit run --files tests/ut/atrace/ut/utrace/testcase/trace_rb_log_utest.cc tests/ut/atrace/ut/utrace/testcase/stacktrace_dumper/scd_process_utest.cc: PASS - git diff --check: PASS - cmake --build build --target utrace_arm_utest -- -j8: PASS - cmake --build build --target trace_server_utest -- -j8: PASS - cmake --build build --target utrace_utest -j$(nproc): PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter='RraceRbLogUtest.TestMsgNumLTBufferSize:RraceRbLogUtest.TestMsgNumEQBufferSize:RraceRbLogUtest.TestMsgNumGTBufferSize' --gtest_repeat=10 --gtest_break_on_failure: PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter='ScdProcessUtest.TestAtraceStackcoreParse': PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter=StacktraceDumperBinUtest.*: PASS, 8/8 passed - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter=ScdUtilUtest.*: PASS, 20/20 passed;TestScdPtraceAttach 约 21-32ms。 - bash tests/build_ut.sh --ut atrace --target utrace_utest --ut_timeout=300: PASS, 296/296 passed, 总耗时 23.855s。 - bash tests/build_ut.sh --ut atrace --target utrace_utest --ut_timeout=300: PASS;本机为 aarch64,x86-only ScdThreadsUtest 不编入本地目标;本次复验生成 UT XML: utrace_utest 296/296 passed, utrace_arm_utest 2/2 passed, trace_server_utest 73/73 passed。 - bash tests/build_ut.sh --ut atrace --target utrace_utest -c --ut_timeout=300: UT 阶段 PASS, 296/296 passed;本地生成 cov/coverage.info,重点文件覆盖率: atrace_stackcore_api.c 100.0%, stacktrace_dumper_bin.c 100.0%, stacktrace_parse.c 61.7%, trace_rb_log.c 90.6%。本地 genhtml 阶段因 /cmd_line 权限问题退出,不影响 UT 通过和 LCOV 数据生成。 - 变更范围核对: 变更文件均在计划范围或检视反馈补充范围内。 - cann-fix/test report 摘要: - 测试日志包含通过信号。 - 测试日志覆盖计划测试项 1 条。 - Problems: (none)。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次变更文件数量较多,PR 描述仅保留计划范围、测试结论和风险说明;完整文件级 diff 请以 PR Files changed 页面为准。 ## 风险和遗留问题 - 风险: 格式化文件数量较多,review 噪声较高。 - 控制: 仅按仓内格式化规则处理计划范围文件,不展开无关模块;通过 pre-commit clang-format 和 git diff --check 校验。 - 遗留问题: 本地 genhtml 阶段存在 /cmd_line 权限问题,已保留 coverage.info 和 UT XML 作为验证证据;线上环境可继续以平台生成的覆盖率 HTML 为准。 See merge request: cann/runtime!4361 | 1 个月前 | |
feat: log适配新芯片ascend350 (#961) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4907 merge feature-issue-961 into master feat: log适配新芯片ascend350 (#961) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 实现摘要: 针对log、trace仓下的所有编译交付件,适配新芯片ascend350 - 变更文件: - src/dfx/trace/cpu_detect/CMakeLists.txt ### Diff 摘要 text src/dfx/trace/cpu_detect/CMakeLists.txt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) ## 变更类型 <!-- [x] 表示选中 --> - [ ] Bug修复 - [x] 新特性 - [ ] 性能优化 - [ ] 文档更新 - [ ] 其他,请描述: ## 关联的Issue https://gitcode.com/cann/runtime/issues/961 ## 如何测试 - 测试结论: PASS - 检测到代码变更文件 1 个: src/dfx/trace/cpu_detect/CMakeLists.txt - 测试日志包含通过信号 - 测试日志覆盖计划测试项 2 条 ## 核对清单 <!-- [x] 表示选中 --> - [ ] 我的代码遵循了项目的代码风格 - [ ] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [ ] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [ ] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 在此添加任何其他关于本次 PR 的说明。 ## 风险和遗留问题 - (none) See merge request: cann/runtime!4907 | 14 天前 | |
fix: runtime 仓dfx组件代码未进行代码格式化不符合代码规范,需要整改 (#840) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4361 merge fix-issue-840 into master fix: runtime 仓dfx组件代码未进行代码格式化不符合代码规范,需要整改 (#840) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 描述 - 修复摘要: runtime 仓 dfx 组件代码未进行代码格式化,不符合代码规范,需要按仓内 pre-commit / clang-format 规范整改。 - 变更范围按 /mnt/workspace/.cann_fix/runtime_issue_840_20260819153258/cann-fix-plan.md 的候选修改点汇总,不在 PR 描述中逐文件展开: - src/dfx/log - src/dfx/trace - include/dfx/base/acl_log.h - include/dfx/base/alog_pub.h - include/dfx/base/log_types.h - pkg_inc/base/dlog_pub.h - pkg_inc/base/plog.h - pkg_inc/trace/atrace_pub.h - pkg_inc/trace/atrace_types.h - pkg_inc/watchdog/awatchdog.h - pkg_inc/watchdog/awatchdog_types.h - 文件级清单以计划产物 dfx-log-trace-expanded-files.txt 和 PR Files changed 为准,PR 描述不展开完整清单,避免描述过长。 - Diff 内容不逐文件展示,本次主体为格式化整改;检视反馈补充了文件末尾换行、宏表达式括号、atrace UT 中已有 utrace_arm_utest 目标的顶层依赖入口、stacktrace 覆盖率相关既有 UT 源文件的构建入口,以及线上覆盖率 UT 暴露的 ringbuffer 并发压测用例稳定性、AtraceStackcoreParse 包装层覆盖、atrace UT stub 依赖的 adcore 头文件 include 路径和 x86 ScdThreadsUtest 栈帧用例稳定性。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [x] 💄 代码风格更新(格式化,局部变量) - [ ] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [ ] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue https://gitcode.com/cann/runtime/issues/840 ## 如何测试 - 测试结论: 格式化检查和新增覆盖率 focused 验证 PASS;ScdUtilUtest.TestScdPtraceAttach 超时已修复,完整 utrace_utest 不再因该用例超过 300s;线上覆盖率包中暴露的 RraceRbLogUtest 并发压测波动、atrace_stackcore_api.c 0 覆盖、atrace UT adcore_api.h 头文件缺失编译问题,以及 x86 ScdThreadsUtest.TestScdFramesInit/TestScdFramesMemcpyFailed 依赖真实栈展开导致的波动已补充处理。 - pre-commit run --files tests/ut/atrace/ut/utrace/testcase/stacktrace_dumper/scd_threads_utest.cc: PASS - pre-commit run --files tests/ut/atrace/ut/utrace/CMakeLists.txt tests/ut/atrace/ut/trace_server/CMakeLists.txt: PASS - pre-commit run --files tests/ut/atrace/ut/utrace/testcase/trace_rb_log_utest.cc tests/ut/atrace/ut/utrace/testcase/stacktrace_dumper/scd_process_utest.cc: PASS - git diff --check: PASS - cmake --build build --target utrace_arm_utest -- -j8: PASS - cmake --build build --target trace_server_utest -- -j8: PASS - cmake --build build --target utrace_utest -j$(nproc): PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter='RraceRbLogUtest.TestMsgNumLTBufferSize:RraceRbLogUtest.TestMsgNumEQBufferSize:RraceRbLogUtest.TestMsgNumGTBufferSize' --gtest_repeat=10 --gtest_break_on_failure: PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter='ScdProcessUtest.TestAtraceStackcoreParse': PASS - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter=StacktraceDumperBinUtest.*: PASS, 8/8 passed - build/tests/ut/atrace/ut/utrace/utrace_utest --gtest_filter=ScdUtilUtest.*: PASS, 20/20 passed;TestScdPtraceAttach 约 21-32ms。 - bash tests/build_ut.sh --ut atrace --target utrace_utest --ut_timeout=300: PASS, 296/296 passed, 总耗时 23.855s。 - bash tests/build_ut.sh --ut atrace --target utrace_utest --ut_timeout=300: PASS;本机为 aarch64,x86-only ScdThreadsUtest 不编入本地目标;本次复验生成 UT XML: utrace_utest 296/296 passed, utrace_arm_utest 2/2 passed, trace_server_utest 73/73 passed。 - bash tests/build_ut.sh --ut atrace --target utrace_utest -c --ut_timeout=300: UT 阶段 PASS, 296/296 passed;本地生成 cov/coverage.info,重点文件覆盖率: atrace_stackcore_api.c 100.0%, stacktrace_dumper_bin.c 100.0%, stacktrace_parse.c 61.7%, trace_rb_log.c 90.6%。本地 genhtml 阶段因 /cmd_line 权限问题退出,不影响 UT 通过和 LCOV 数据生成。 - 变更范围核对: 变更文件均在计划范围或检视反馈补充范围内。 - cann-fix/test report 摘要: - 测试日志包含通过信号。 - 测试日志覆盖计划测试项 1 条。 - Problems: (none)。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 本次变更文件数量较多,PR 描述仅保留计划范围、测试结论和风险说明;完整文件级 diff 请以 PR Files changed 页面为准。 ## 风险和遗留问题 - 风险: 格式化文件数量较多,review 噪声较高。 - 控制: 仅按仓内格式化规则处理计划范围文件,不展开无关模块;通过 pre-commit clang-format 和 git diff --check 校验。 - 遗留问题: 本地 genhtml 阶段存在 /cmd_line 权限问题,已保留 coverage.info 和 UT XML 作为验证证据;线上环境可继续以平台生成的覆盖率 HTML 为准。 See merge request: cann/runtime!4361 | 1 个月前 | |
feat: trace 代码同步,打通 cpu_detect/trace_server 编译 (#815) Co-authored-by: GuoWenbo<guowenbo13@h-partners.com> # message auto-generated for no-merge-commit merge: !4176 merge feature-issue-815 into master feat: trace 代码同步,打通 cpu_detect/trace_server 编译 (#815) Created-by: GuoWenbo Commit-by: GuoWenbo Merged-by: cann-robot Description: ## 需求 关联 issue: #815 打通 trace 仓中此前被注释、未参与编译的产物(cpu_detect、trace_server、libutrace.so),并对 libutrace.so 做归一化:device 与 host 分别以不同源文件集编译,产物统一命名为 libascend_trace.so,libutrace.so 为兼容性保留。 ## 改动说明 源码文件按 issue 附带 diff 照搬。CMakeLists 按本仓实际路径与目标名适配: | 适配点 | 原 diff | 本仓 | |---|---|---| | libc_sec 头文件 | ${TOP_DIR}/abl/libc_sec/include(TOP_DIR 未定义) | ${LIBC_SEC_HEADER} | | trace_server 头文件 | ../../inc/utrace、../../inc/trace_server、${RUNTIME_DIR}/inc/driver | inc/toolchain、pkg_inc/driver、pkg_inc/trace | | cpu_detect 头文件 | ../inc/cpu_detect | ../inc/toolchain,并补 ${ATRACE_DIR}/common | | hal 链接 | 无条件 ascend_hal | PRODUCT_SIDE/PRODUCT 生成式表达式(与 utrace 一致) | | cpu_detect 依赖库 | 裸路径 slog.so、libc_sec.so | unified_dlog、c_sec 目标 | | PRODUCT 型号 | ascend910_95 | ascend950(对齐本仓其余模块) | 其中 hal 链接一项,trace_server 与 cpu_detect 无条件链接 ascend_hal 会导致 host 侧编译失败(host 仅有 stub),已改用本仓既有写法。 ## 归一化实际编译效果核对 不止于「编译通过」,已核对产物构成是否真正符合 issue 的归一化要求: | 检查项 | host | device_default | |---|---|---| | libascend_trace.so 目标文件数 | 51 | 105 | | atrace 专属源(atrace_client_api 等) | 13 | 0 | | utrace 专属源(utrace_socket 等) | 0 | 13 | | ATRACE_HOST / HOST_ALOG 宏 | 有 | 无 | | ATRACE_ROOT_PATH 宏 | 无 | 有 | | hal 链接实际解析 | cmake/stub/libascend_hal.so | 不链 hal(实测未解析 hal 符号数为 0) | | 导出 API 符号 | Atrace* 25 个 | Atrace* 25 个 | libascend_trace.so 的两条路径分别对齐 master 原有 atrace_share(host)与 utrace_share(device_default)的源文件集,两者仅通过 ATRACE_API/UTRACE_API 宏切换对外符号名,这正是归一化的实现方式:同一份实现,两种符号导出。 ## cpu_detect 与 trace_server 以 ENABLE_OPEN_SRC 门控 cpu_detect 无条件编译 185 个 AArch64 .S 文件并附加 -march=armv8.3-a+crc+crypto+fp16,目录内 CMAKE_SYSTEM_PROCESSOR 出现 0 次、无任何架构守卫。在 x86_64 host 构建下宿主 gcc 会拒绝该 -march 值并无法汇编 AArch64 指令(STP X1, X2, [SP, #-16]!),属本 PR 打开该目录后引入的回归——感谢 @zhangpengpeng8 指出。 现两者置于 if (NOT ENABLE_OPEN_SRC) 内。build.sh 的 build_rts() 传入 -DENABLE_OPEN_SRC=True,故正式构建路径不再编译,x86 风险消除;内部构建(不带该宏)仍产出 libcpu_detect.so 与 libutrace_server.so。 需 reviewer 留意的取舍:trace_server 本身不含 AArch64 汇编、无 x86 障碍,对它门控属「暂不作为开源交付件」的产品决策而非技术必需。issue 点名打通的三项中,cpu_detect 与 trace_server 在 build.sh 路径下不产出交付件,仅保证内部构建可编译。若二者应随开源版交付,则 trace_server 的门控可去掉、cpu_detect 需改为按 CMAKE_SYSTEM_PROCESSOR 门控。 UT 不受影响:cpu_detect UT 使用 stub/cpu_detect_testcase_stub.c,.S 引用数与 -march 出现数均为 0;且 build_rts() 同时传入 ENABLE_UT,实测该组合下四个 UT 目标均正常编译运行。 ## 删除 UT 下重复的 cpu_detect 头文件 删除 tests/ut/atrace/ut/cpu_detect/stub/ 下的 cpu_detect.h 与 cpu_detect_types.h。 该 UT 的 include 顺序中 stub/ 先于 inc/toolchain,故此前 UT 实际编译的是 stub 版本,而其错误码与本 PR 新增的对外头文件冲突: | 宏 | stub 头 | 对外头文件(出货用) | |---|---|---| | CPUD_ERROR_INIT | -11 | 10 | | CPUD_ERROR_TESTCASE | -6 | 100 | | CPUD_ERROR_CGROUP_BIND | -7 | 50 | | CPUD_DETECT_MAX_TIME | 3600 | 604800 | 即 UT 校验的契约与出货 libcpu_detect.so 所用的并不一致。删除后 UT 转而编译 inc/toolchain 下的真实头文件,两侧统一。 已排查:stub 头中另有 CpuDetectServerInit、CpuDetectInfo、CPU_DETECT_MAGIC_NUM 等声明,其引用方均在 log_daemon/cpu_detect/ 且该模块有独立头文件,与本 stub 无关;该 stub 目录亦无其他 UT 引用。 ## 补充 awatchdog 打包选项 依 issue 评论(2026-08-17)补充。awatchdog_share 此前无任何安装规则——实测安装产物中的 libascend_watchdog.so(72112 字节)实为 awatchdog_stub_share,真正的 awatchdog_share(104376 字节)从未被交付: | 安装路径 | 补充前 | 补充后 | |---|---|---| | lib/libascend_watchdog.so | 无 | 104376(真实库) | | lib/stub/libascend_watchdog.so | 72112(桩) | 72112(桩) | 头文件路径按本仓实际位置适配:评论中的 ${ADIAG_DIR}/inc/awatchdog/ 在本仓 ADIAG_DIR 未定义且目录不存在,awatchdog 对外头文件实际位于 pkg_inc/watchdog/,故改用 ${RUNTIME_DIR}。 ## 修复 diff 自身引入的缺陷 - **trace_recorder.c 两处格式化字符串占位符多于参数**(第 376、404 行),运行时会读取栈上垃圾数据、参数错位甚至崩溃,补入缺失的 ret。该缺陷会导致 UT TestGetDirMkdirFailed 段错误(退出码 139),即线上 UT 崩溃的根因,已用「修复前复现 139 / 修复后通过」双向验证 - **trace_core.c 信号模块 Init/Exit 不对称**:device 分支 TraceInit 不再调用 TraceSignalInit,但 TraceExit 仍调用 TraceSignalExit;同时 diff 移除了 stacktrace_signal.c 中 #else 分支的空实现,使该调用由「调空壳」转为「调真实现」。按 device 侧不启用 signal 的设计意图,移除未配对的 TraceSignalExit。host(ATRACE_HOST) 分支配对关系不变 - **ktrace_ts.c 字段初始化不对称**:eventMsg 经 AdiagMalloc 分配后未初始化 eventType 与 sequence,与 socket 路径保持一致补齐 ## 修复 so 无法加载问题 atrace_stackcore_api.c 原在 libtraceSrcFiles 中,而其 AtraceStackcoreParse 仅转调 scd_process.c 的 ScdProcessParseCore。libutrace.so 与 device_default 路径的 libascend_trace.so 复用 libtraceSrcFiles 但不含 scd_process.c,留下无法解析的 ScdProcessParseCore——实测 RTLD_NOW/RTLD_LAZY 均报 undefined symbol,即**整个 so 无法 dlopen**,而非仅调用失败。 该缺陷 master 上已存在(master 的 host libutrace.so 同样导出该符号且同样无法 dlopen),但此前 utrace_share 的 install_package 为注释状态、不作为交付件,故未暴露;本 PR 打开安装后会使其成为已发布的破损交付件。 现将该文件移入 libatraceStackcoreSrcFiles,使其与 scd_* 实现同进同出。修复后 device 侧两个 so 由 dlopen 失败转为 RTLD_NOW 加载成功。 需知悉的行为变化:host libutrace.so 相比基线少导出 AtraceStackcoreParse,但基线该库本就无法加载,属由「有符号但整库不可用」变为「无符号但整库可用」。 ## UT 适配 - **trace_server_utest.cc**:生产代码已从 log_get_device_id 迁移到 halGetDevNumEx/halGetDevIDsEx,原打桩失效导致失败注入不生效(期望 -1 实得 0)。改为对两个 hal 接口分别打桩,并在两个场景间插入 GlobalMockObject::verify() 避免桩残留。已验证两条失败分支(trace_server_core.c:59、:65)均真实命中 - **cpu_detect_core_utest.cc**:UTEST_NORMAL 场景移除多余的 MOCKER(halBindCgroup)。aarch64 上该打桩会越界破坏入口仅相隔 28 字节的 halGetDeviceInfo(0x17d4c vs 0x17d68),使其返回全零,导致 CpuDetectGetCpuNum 读到 cpuNum=0 而用例失败。stub 中 halBindCgroup 本就返回 DRV_ERROR_NONE,无需打桩。该失败在未改动的 master 上以相同断言复现,非本 PR 引入,但会导致流水线 UT 阶段失败,故一并修复。同套件中 UTEST_BIND_CGROUP_FAIL 等场景因 mockcpp 在 aarch64 的同一限制已标注 GTEST_SKIP ## 验证结果 > 本地环境为 aarch64(gcc -dumpmachine = aarch64-linux-gnu,且无 x86 交叉编译器),因此**下述 host 结果均为 aarch64 host**;x86_64 host 构建无法在本地复现,ENABLE_OPEN_SRC 门控的有效性经代码审查与镜像测试确认(在 aarch64 上喂 x86 专属 -march 得到 cc1: error: unknown value,对称成立)。 编译: | 构建模式 | 结果 | |---|---| | ENABLE_OPEN_SRC=True(build.sh 路径) | atrace_share、utrace_share、awatchdog_share、awatchdog_stub_share 通过;cpu_detect 与 trace_server 按预期不参与编译 | | 不带该宏(内部构建) | 上述四者加 utrace_server_share、cpu_detect_share 共六个目标通过 | | device (ascend910B1) | 四个 trace 目标通过 | | pegasus (device_mdc) | 补齐外部 stub 后源文件 100% 编译通过(51/51、35/35、14/14、3/3),仅余 libiam 等 MDC 外部二进制缺失导致无法链接 | 原有交付件无回归(以 HEAD~1 worktree 建基线逐项比对):host libascend_trace.so 导出符号与基线**完全一致**(12 个),libutrace.so 源文件集完全一致;体积微变源于 diff 自身的源码删减而非 CMake 适配。 UT(ENABLE_OPEN_SRC=True + ENABLE_UT=on,与 CI 一致): | UT 目标 | 结果 | |---|---| | utrace_utest | 287 通过 | | trace_server_utest | 73 通过 | | cpu_detect_utest | 7 通过 / 6 跳过 | | awatchdog_utest | 14 通过 | | awatchdog_stub_utest | 2 通过 | ## 已知遗留(非本 PR 引入) - **RraceRbLogUtest.TestMsgNumEQBufferSize / TestMsgNumGTBufferSize 间歇失败**:8 写线程向容量 1024 的环形缓冲写满 1024 条,写满边界与读线程存在竞态。在未改动的 master 上连跑 3 次分别失败 1 个、0 个、2 个;trace_rb_log.c 与对应 UT 均与 master 逐字节相同。建议单独开 issue 处理生产代码的并发时序,不宜并入本 PR - **device_mdc 与 host_default 走同一 else() 分支**:三分支的 libtrace_type 实际只产生两种编译结果,device_mdc 该值被计算但未单独使用。按 issue「device 和 host 分别做不同的编译」的说法,pegasus 走 host 那套源文件集是否符合预期,请提交人确认 ## 检视意见处理情况 | 来源 | 条数 | 处理 | |---|---|---| | atomgit-bot | 3(2×High + 1×Medium) | 全部已修复,见「修复 diff 自身引入的缺陷」 | | @zhangpengpeng8 | 2(同一问题重述) | 已修复,见「ENABLE_OPEN_SRC 门控」 | | @newstarzj | 4 | 经核实均无需改动,理由见下 | @newstarzj 四条的核实结论: 1. **dataLength 下溢绕过校验** — 同一函数第 150 行已有 len < sizeof(UtraceMsg) 前置守卫(master 上即存在),走到减法时不可能下溢;且本 PR 该行实际是**收紧**了 master 的校验(上界由 len 改为 len - sizeof(UtraceMsg),正确排除头部长度) 2. **信号注册成 dead code** — 仅 device 分支移除,host 分支第 49、61 行仍完整配对(ATRACE_HOST 仅由 host 侧 atrace_share 定义),host 侧崩溃栈捕获能力完好 3. **device_default 未链 hal** — 事实准确,但实测该产物未解析 hal 符号数为 **0**。host 侧那 4 个 hal 符号(halHdcSend/Recv/SessionConnectEx/GetSessionAttr)来自 trace_client 的 HDC 通信代码,由两侧都链接的 adcore 提供,device_default 源集不含该路径 4. **版权年份 2026 疑似笔误** — 当前确为 2026 年,且上游 master 近期新增文件(如 aicpu_timeout_control.h)同样使用 2026 ## 关于 clang-format 格式化 commit 本 PR 含两个 commit: | commit | 内容 | |---|---| | feat: trace 代码同步... | 功能改动,即 #815 的需求实现 | | style: 按 clang-format 格式化... | 纯排版调整,无逻辑变更 | 拆分原因:upstream 提交 0f9386192 【PR】: feat:remove all exclude 移除了 .pre-commit-config.yaml 中 clang-format 的绝大部分排除规则——排除范围由 docs/example/include/pkg_inc/scripts/stub/tests 以及 src/(dfx/adump|dfx/log|dfx/trace/(atrace|common|cpu_detect|inc)) 收缩为仅剩 include/external/acl 下 5 个头文件。 该提交未同步格式化 trace 存量代码(其改动的 101 个文件中 trace 相关为 0),master 上 trace_attr.c、trace_msg.h 等至今仍不符合 clang-format。由于 pre-commit 仅检查 PR 改动的文件,未触碰 trace 时 master 可正常通过;而本 PR 改动了 24 个 trace 文件,rebase 到该提交之后这些文件全部进入检查范围,导致流水线 clang-format 检查失败。 格式化规模为 23 个文件、814 insertions / 903 deletions,**其中大部分是存量代码的重排**(这些文件历史上从未被 clang-format 处理),与 #815 的需求改动无关。故单独成一个 commit,评审时可用 git show --stat 区分,或只审第一个 commit 的功能改动。 无语义变更的验证依据:格式化前后各 so 的导出符号数完全一致(libascend_trace T=12/W=52、libutrace T=0/W=24、libcpu_detect T=13、libutrace_server T=21/W=53、libascend_watchdog T=2),五个编译目标与四个 UT 目标均通过。 若 reviewer 认为 trace 存量代码的格式化应由独立 PR 统一处理(例如与 remove all exclude 的作者协同分批推进),可将该 commit 摘出,但届时本 PR 的 clang-format 检查仍会失败,需要 CI 侧豁免或重新加回 trace 排除规则。 See merge request: cann/runtime!4176 | 1 个月前 | |
feat:清理DFX冗余头文件 Co-authored-by: yring_8<yangrui1@huawei.com> # message auto-generated for no-merge-commit merge: !2735 merge master into master feat:清理DFX冗余头文件 Created-by: yring_8 Commit-by: yring_8 Merged-by: cann-robot Description: # Pull Request ## 描述 统一 DFX 模块头文件的维护位置,删除 adump、msprof、trace 和 log 模块中的冗余副本。 主要变更: - 删除 adump、msprof、trace 目录下重复及无归属的头文件。 - 将兼容路径下的重复头文件改为软链接,保留原有引用方式。 - 将 trace 内部头文件迁移至 src/dfx/trace/inc/toolchain。 - 以 include/dfx/base/log_types.h、include/external/acl/acl_prof.h 等文件作为唯一实体。 - 调整 CMake include 路径及 adump_headers 等接口依赖。 - 调整打包配置,从实体文件位置复制头文件,确保安装包中的兼容目录仍包含普通实体文件。 - 更新 msprof、atrace、runtime 和 slog 单测的头文件依赖路径。 ## 变更类型 请选择本次引入的变更类型: <!-- [x] 表示选中 --> - [ ] 🐛 Bug 修复 - [ ] ✨ 新功能 - [ ] 💄 代码风格更新(格式化,局部变量) - [x] ♻️ 重构(既不修复错误也不增加功能的代码变动) - [x] 📦 构建过程或辅助工具的变动 - [ ] 📝 文档内容更新 ## 关联的Issue 无。 ## 如何测试 1. 执行全量构建: ```bash sh build.sh 2. 执行相关模块单元测试: bash tests/build_ut.sh --ut=adump -c bash tests/build_ut.sh --ut=msprof -c bash tests/build_ut.sh --ut=atrace -c 3. 检查打包 staging 目录,确认兼容路径中的头文件为实体文件,并与对应源文件内容一致。 ## 核对清单 <!-- [x] 表示选中 --> - [x] 我的代码遵循了项目的代码风格 - [x] 我已对代码进行了自测 - [ ] 我已更新了相关的文档 - [x] 我在标题中使用了合适的类型标签(如:feat:, fix:) - [x] 我已经详细阅读了贡献指南(CONTRIBUTING.md),并遵守了其中的所有规定,包括但不限于commit message的格式、无效commit的合并等 ## 其他信息 - 提交 ID:978532b3f84c506f4e39d613f1ee2ad750dbc0cf - 兼容目录仍保留原有头文件访问路径。 - 打包时从唯一实体文件位置复制,避免将无效软链接带入安装包。 See merge request: cann/runtime!2735 | 3 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 17 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 14 天前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 3 个月前 |