openeuler-riscv / oerv-team

OERV 实习生工作中心
11 stars 43 forks source link

[平行宇宙] 修复使用 rdcycle 的 mariadb #917

Closed jchzhou closed 1 month ago

jchzhou commented 4 months ago

软件包信息

软件包名称: mariadb

openEuler 仓库地址: https://gitee.com/src-openeuler/mariadb/tree/master RISC-V 中间仓地址: https://gitee.com/openeuler-risc-v/mariadb/

构建仓库地址: https://build.tarsier-infra.com/package/show/Mega:24.09/mariadb

说明

问题背景: 参考其他 rdcycle 修正补丁进行修复和验证,正常通过编译后开 PR 提交到 parallel 分支或直接提到 openEuler 源码仓 master 分支

所需技能:

其它:

参考信息

IZUMI-Zu commented 2 months ago

@jchzhou 老师我想认领这个issue OBS工程

mariadb 上游在 https://github.com/MariaDB/server/pull/1981 引入了对RISCV cycle timer 的支持 并在 https://github.com/MariaDB/server/pull/2980 这个pr修复了RDCYCLE引发的问题

我们可以backport这两个pr

对于 clang 编译时 __builtin_readcyclecounter 产生的RDCYCLE 非法指令 我们可以让所有RISCV编译出的my_timer_cycles都走架构相关分支而不走内建函数

-# if __has_builtin(__builtin_readcyclecounter) && !defined (__aarch64__)
+# if __has_builtin(__builtin_readcyclecounter) && !defined(__aarch64__) && !defined(__riscv)

这样可以正常启动 mariadb.service image

对应pr src-openeuler/mariadb#104