当前位置: 首页 > 面试题库 >

__udivdi3 undefined —如何找到使用它的代码?

荣德厚
2023-03-14
问题内容

在32位Linux内核上编译内核模块会导致

"__udivdi3" [mymodule.ko] undefined!
"__umoddi3" [mymodule.ko] undefined!

在64位系统上,一切都很好。据我所知,其原因是32位Linux内核不支持64位整数除法和取模。

我如何找到发出64位操作的代码。很难手动找到它们,因为我无法轻松地检查“
/”是32位还是64位。如果未定义“普通”函数,则可以对它们进行grep,但这在这里是不可能的。还有另一种搜索参考文献的好方法吗?某种“机器代码grep”?

该模块包含数千行代码。我真的不能手动检查每一行。


问题答案:

首先,您可以使用do_div宏进行64位分割。(请注意,原型为uint32_t do_div(uint64_t dividend, uint32_t divisor),并且“ dividend”可能会被多次评估。

{
    unsigned long long int x = 6;
    unsigned long int y = 4;
    unsigned long int rem;

    rem = do_div(x, y);
    /* x now contains the result of x/y */
}

此外,您应该能够在代码中找到long long int(或uint64_t)类型的用法,或者可以-g使用标志构建模块并用于objdump -S获取带源注释的反汇编

注意: 这适用于2.6内核,我还没有检查使用率是否更低



 类似资料:
  • 问题内容: 因此,在相当庞大的项目中,您会得到一些遗留代码。您如何找到和删除无效功能? 我已经看到了这两个参考:查找未使用的代码和用于在php项目中查找未使用的函数的工具,但它们似乎分别特定于C#和PHP。 是否有Python工具可帮助您找到源代码中其他地方未引用的函数(尽管有反射/等)? 问题答案: 在Python中,您可以使用动态或静态代码分析器查找未使用的代码。动态分析器的两个示例是和。它们

  • 问题内容: 我是Android编程的新手。 我一直在遵循有关从此网站创建音乐播放器的教程 本教程要求 使用不推荐使用的 Class 方法。哪种方法尤其可以代替此不推荐使用的方法?而且,是否有资料来源可以找到所有不赞成使用的方法及其当前替代方法? 这是我的代码,其中有关于不推荐使用的方法的警告: 问题答案: 如果按CTRL +左键单击方法,则会找到方法声明。这就是使用其内容和javadoc创建方法的

  • 我对webpack非常陌生,我发现在生产构建中我们可以减少整体代码的大小。目前,webpack构建了大约8MB的文件,main.js构建了大约5MB的文件。如何在生产构建中减少代码的大小?我从internet上找到了一个示例webpack配置文件,并为我的应用程序进行了配置,然后运行,它开始构建,它在目录中生成了一些文件。 null webpack.config.js webpack.produc

  • 我正在尝试使用: ...但我没有任何运气找到定义它的DLL。 首先,我尝试添加对微软的引用。Http以及类不可用。 那么,谁能告诉我在哪里可以找到类?

  • 问题内容: 当我在.java文件中时,未使用的代码通常显示为灰色或带有绿色下划线,表示该代码可能(可能由于某些奇怪的JNI / Reflection极端情况)未使用。但是我有一个包含成千上万个Java文件的项目,我想找到所有此类可能未使用的代码的实例。如何在IntelliJ IDEA中做到这一点? 问题答案: 只需在启用适当检查的情况下 使用即可 ( “声明冗余” 组下的 “ 未使用的声明 ” )

  • 问题内容: 我是webpack的新手,我发现在生产版本中我们可以减少整体代码的大小。目前,webpack构建大约8MB的文件,而main.js构建大约5MB的文件。如何减少生产构建中的代码大小?我从互联网上找到了一个样本webpack配置文件,并为我的应用程序进行了配置,然后运行并开始构建它,并在目录中生成了一些文件。 这些文件仍然很重(与开发版本相同) 如何使用这些文件?目前,我正在使用webp