Skip to content

get_elf_hwcap 在鸿蒙平台无法正常工作。 #5950

@peerless2012

Description

@peerless2012

错误信息

在鸿蒙平台,使用推荐工具链编译后,在Debug运行时,正常。在Release运行时,返回值是0。

设备信息

HarmonyOS 5.0.3

复现步骤

  1. 在Debug构建模式下运行,get_elf_hwcap(AT_HWCAP)返回4261410815。
  2. 在Release模式下运行,get_elf_hwcap(AT_HWCAP)方法返回0。

更多

定位到的原因是,cpu.cppget_elf_hwcap,只有在Android下才会走get_elf_hwcap_from_getauxval, 通过<sys/auxv.h>getauxval()获取cpu 特性。
在鸿蒙单框架下,会走到读取/proc/self/auxv,但是这个文件实测情况下,Debug构建时能读取,Release构建下,无法读取,导致返回0。

建议解决方案:
跟Android一样,通过<sys/auxv.h>getauxval()获取cpu 特性。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions