Код ржавчины, о котором идет речь:
#[no_mangle]
fn add(a: isize, b: isize) -> isize {
a + b
}
Создает следующий код сборки при использовании с командой rustc rustc add.rs --crate-type=lib --emit=asm -C opt-level=z
:
.text
.file "add.3a1fbbbh-cgu.0"
.section .text.add,"ax",@progbits
.globl add
.type add,@function
add:
.cfi_startproc
leaq (%rdi,%rsi), %rax
retq
.Lfunc_end0:
.size add, .Lfunc_end0-add
.cfi_endproc
.section ".note.GNU-stack","",@progbits
И следующее без #[no_mangle]
:
.text
.file "add.3a1fbbbh-cgu.0"
.section ".note.GNU-stack","",@progbits
Почему это так?Разве это не должно просто поменять add
на что-то вроде _Zaddm
без проступка?