gpt4 book ai didi

c - 内联汇编的弱链接

转载 作者:行者123 更新时间:2023-11-30 18:45:49 25 4
gpt4 key购买 nike

我正在尝试将 ELF 格式的 weak 符号属性与内联汇编一起使用。当我尝试使用 .weak 汇编指令时,汇编输出同时包含 .weak.global 指令。

foo.c

__asm(".weak foo");
void foo(void)
{
/* EMPTY FUNCTION! */
}

foo.s

#APP
.weak foo
#NO_APP
.global foo

代码运行良好;但在这种情况下,当链接器看到全局符号和弱符号时,是否会导致任何问题?

最佳答案

不要使用内联汇编来尝试绕过编译器,使用__attribute__((weak))让编译器发出 .weak本身。 gcc function attributes in the docs

__attribute__((weak))
void foo(void){
}

Compiled on the Godbolt compiler explorer with gcc and clang :

    .text
.intel_syntax noprefix
.file "example.cpp"
.weak foo() # -- Begin function foo()
.p2align 4, 0x90
.type foo(),@function
foo(): # @foo()
.Lfunc_begin0:
ret
.Lfunc_end0:
.size foo(), .Lfunc_end0-foo()

关于c - 内联汇编的弱链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53590498/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com