LinuxCommandLibrary

setarch

Change reported architecture for program execution

TLDR

Run a command as if the machine architecture is i686

$ setarch i686 [command]
copy
Run a shell with x86_64 architecture
$ setarch x86_64 [bash]
copy
Disable randomization of the virtual address space
$ setarch [linux32] -R [command]
copy
List supported architectures
$ setarch --list
copy

SYNOPSIS

setarch [arch] [options] [program [arguments]]

DESCRIPTION

setarch changes the reported architecture for a program's execution environment. It modifies what uname -m reports and can affect how programs behave based on architecture detection.
The command is useful for running 32-bit applications on 64-bit systems, compatibility testing, and debugging programs that behave differently based on architecture. The linux32 and linux64 symlinks are shortcuts for common uses.

PARAMETERS

arch

Target architecture (i686, x86_64, linux32, linux64, etc.)
-R, --addr-no-randomize
Disable address space layout randomization (ASLR)
-S, --short-inode
Use legacy 32-bit inode values
-L, --uname-2.6
Set uname to report 2.6 kernel
-B, --32bit
Limit address space to 32 bits
--list
List supported architectures
-v, --verbose
Verbose output

CAVEATS

Does not enable actual architecture emulation; the underlying CPU must support the requested mode. Disabling ASLR (-R) reduces security and should only be used for debugging. Part of the util-linux package.

SEE ALSO

linux32(8), linux64(8), uname(1), personality(2)

> TERMINAL_GEAR

Curated for the Linux community

Copied to clipboard

> TERMINAL_GEAR

Curated for the Linux community