EmbCCdocs Repository

Target reference#

Every target --target= accepts, generated from EmbCC's target database (src/targets/) by embcc --reference=targets. The first name in each row is the one EmbCC prints back (--print-target); the others are accepted too. Targets covers each family in depth.

x86-64#

int is 4 bytes, long 8, a pointer 8, double 8 and long double 16. Plain char is signed. Little-endian; __int128 exists.

Target Runs on Object format Also spelled
x86_64-elf bare metal ELF x86_64, x86_64-none-elf
x86_64-emblink EmbLinkOS ELF
x86_64-linux-gnu Linux ELF x86_64-linux
x86_64-apple-darwin macOS Mach-O x86_64-darwin
x86_64-windows-gnu Windows COFF x86_64-w64-mingw32

AArch64#

int is 4 bytes, long 8, a pointer 8, double 8 and long double 16. Plain char is unsigned. Little-endian; __int128 exists.

Target Runs on Object format Also spelled
aarch64-elf bare metal ELF aarch64, arm64, aarch64-none-elf
aarch64-emblink EmbLinkOS ELF
aarch64-linux-gnu Linux ELF aarch64-linux
aarch64-apple-darwin macOS Mach-O arm64-apple-darwin, aarch64-darwin

ARM: Cortex-M and ARMv7-A#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is unsigned. Little-endian.

Target Runs on Object format Also spelled
thumbv7m-none-eabi bare metal, ARMv7-M (Cortex-M3) ELF thumbv7m, armv7m-none-eabi, arm-none-eabi
thumbv7em-none-eabi bare metal, ARMv7E-M (Cortex-M4, M7) ELF thumbv7em, armv7em-none-eabi
thumbv6m-none-eabi bare metal, ARMv6-M (Cortex-M0, M0+) ELF thumbv6m, armv6m-none-eabi
thumbv8m.base-none-eabi bare metal, ARMv8-M Baseline (Cortex-M23) ELF thumbv8m.base, armv8m.base-none-eabi
thumbv8m.main-none-eabi bare metal, ARMv8-M Mainline (Cortex-M33, M55) ELF thumbv8m.main, thumbv8m-none-eabi, armv8m.main-none-eabi
thumbv7em-none-eabihf bare metal, ARMv7E-M (Cortex-M4, M7), hardware float ELF
armv7a-none-eabi bare metal, ARMv7-A in ARM state ELF armv7a, armv7-none-eabi, armv7a-unknown-none-eabi
armv7a-none-eabihf bare metal, ARMv7-A in ARM state, hardware float ELF armv7a-unknown-none-eabihf
thumbv8m.main-none-eabihf bare metal, ARMv8-M Mainline (Cortex-M33, M55), hardware float ELF

RISC-V, 32-bit#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 16. Plain char is unsigned. Little-endian.

Target Runs on Object format Also spelled
riscv32-unknown-elf bare metal ELF riscv32-none-elf, riscv32, riscv32-elf, rv32

RISC-V, 64-bit#

int is 4 bytes, long 8, a pointer 8, double 8 and long double 16. Plain char is unsigned. Little-endian; __int128 exists.

Target Runs on Object format Also spelled
riscv64-unknown-elf bare metal ELF riscv64-none-elf, riscv64, riscv64-elf, rv64

AVR#

int is 2 bytes, long 4, a pointer 2, double 4 and long double 4. Plain char is signed. Little-endian.

Target Runs on Object format Also spelled
avr bare metal ELF avr-none-elf, avr-elf, avr-unknown-none

MIPS32#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is signed. Either byte order (the target names it).

Target Runs on Object format Also spelled
mipsel-none-elf bare metal ELF mipsel-unknown-elf, mipsel-elf, mipsel
mips-none-elf bare metal, big-endian ELF mips-unknown-elf, mips-elf, mips

MIPS64#

int is 4 bytes, long 8, a pointer 8, double 8 and long double 16. Plain char is signed. Either byte order (the target names it); __int128 exists.

Target Runs on Object format Also spelled
mips64el-none-elf bare metal ELF mips64el-unknown-elf, mips64el-elf, mips64el
mips64-none-elf bare metal, big-endian ELF mips64-unknown-elf, mips64-elf, mips64

LoongArch64#

int is 4 bytes, long 8, a pointer 8, double 8 and long double 16. Plain char is signed. Little-endian; __int128 exists.

Target Runs on Object format Also spelled
loongarch64-unknown-elf bare metal ELF loongarch64-none-elf, loongarch64-elf, loongarch64

TriCore#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is signed. Little-endian.

Target Runs on Object format Also spelled
tricore-none-elf bare metal ELF tricore-elf, tricore-unknown-elf, tricore

Xtensa (ESP32)#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is unsigned. Little-endian.

Target Runs on Object format Also spelled
xtensa-none-elf bare metal ELF xtensa-esp32-elf, xtensa-esp32s3-elf, xtensa-esp-elf, xtensa-elf, xtensa

PowerPC, 32-bit#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is unsigned. Big-endian.

Target Runs on Object format Also spelled
powerpc-none-eabi bare metal ELF powerpc-unknown-eabi, powerpc-eabi, powerpc, ppc

Renesas RX#

int is 4 bytes, long 4, a pointer 4, double 4 and long double 4. Plain char is unsigned. Little-endian.

Target Runs on Object format Also spelled
rx-none-elf bare metal ELF rx-elf, rx-unknown-elf, rx

SPARC V8 (LEON)#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 16. Plain char is signed. Big-endian.

Target Runs on Object format Also spelled
sparc-none-elf bare metal ELF sparc-unknown-elf, sparc-elf, sparc-gaisler-elf, sparc

ColdFire (m68k)#

int is 4 bytes, long 4, a pointer 4, double 8 and long double 8. Plain char is signed. Big-endian.

Target Runs on Object format Also spelled
m68k-none-elf bare metal ELF m68k-unknown-elf, m68k-elf, m68k