Hi!
I was wondering what exactly needs to be done to add built-in target support for armv5te-unknown-linux-uclibcgnueabi
. It's a pretty common target used by many devices like routers and IP cameras. There is already a Tier 3 support for mips(el)-unknown-linux-uclibc
, so I guess it shouldn't be that difficult.
Currently, I'm using this custom target specification:
{
"abi-blacklist": [
"stdcall",
"fastcall",
"vectorcall",
"thiscall",
"win64",
"sysv64"
],
"arch": "arm",
"data-layout": "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64",
"dynamic-linking": true,
"env": "uclibc",
"executables": true,
"features": "+soft-float,+strict-align",
"has-elf-tls": true,
"has-rpath": true,
"is-builtin": false,
"linker-flavor": "gcc",
"linker-is-gnu": true,
"llvm-target": "armv5te-unknown-linux-uclibcgnueabi",
"max-atomic-width": 32,
"os": "linux",
"position-independent-executables": true,
"pre-link-args": {
"gcc": [
"-Wl,--as-needed",
"-Wl,-z,noexecstack"
]
},
"post-link-args": {
"gcc": [
"-ldl"
]
},
"relro-level": "full",
"target-c-int-width": "32",
"target-endian": "little",
"target-family": "unix",
"target-mcount": "\u0001__gnu_mcount_nc",
"target-pointer-width": "32",
"vendor": "unknown"
}
It's mostly a copy-paste of armv5te-unknown-linux-gnueabi
. I've tested it on a quite complex application that uses tokio and everything seems to be working. I'm using Rust nightly with this in my .cargo/config
:
[unstable]
build-std = ["core", "std", "alloc", "proc_macro", "panic_abort"]
build-std-features = ["panic_immediate_abort"]
I can even create a PR if needed.