# linux64 - change reported architecture in new program environmen... - man(8) - [phpMan]

[_SETARCH_(8)](https://www.chedong.com/phpMan.php/man/SETARCH/8/markdown)                              System Administration                             [_SETARCH_(8)](https://www.chedong.com/phpMan.php/man/SETARCH/8/markdown)

## NAME
       setarch - change reported architecture in new program environment and/or set personality
       flags

## SYNOPSIS
       **setarch **[_arch_] [options] [_program_ [_argument_...]]

       **setarch --list**|**-h**|**-V**

       **arch **[options] [_program_ [_argument_...]]

## DESCRIPTION
       **setarch **modifies execution domains and process personality flags.

       The execution domains currently only affects the output of **uname -m**. For example, on an AMD64
       system, running **setarch i386 _**program_ will cause _program_ to see i686 instead of _x86_64_ as the
       machine type. It can also be used to set various personality options. The default _program_ is
       **/bin/sh**.

       Since version 2.33 the _arch_ command line argument is optional and **setarch **may be used to
       change personality flags (ADDR_LIMIT_*, SHORT_INODE, etc) without modification of the
       execution domain.

## OPTIONS
### --list
           List the architectures that **setarch **knows about. Whether **setarch **can actually set each of
           these architectures depends on the running kernel.

### --show[=personality]
           Show the currently active personality and flags. If the **personality **argument is provided,
           it is shown instead of the current one. **personality **is a hexadecimal number with values
           was described in **sys/personality.h**.

### --uname-2.6
           Causes the _program_ to see a kernel version number beginning with 2.6. Turns on **UNAME26**.

### -v --verbose
           Be verbose.

### -3 --3gb
           Specifies _program_ should use a maximum of 3GB of address space. Supported on x86. Turns
           on **ADDR_LIMIT_3GB**.

### --4gb
           This option has no effect. It is retained for backward compatibility only, and may be
           removed in future releases.

### -B --32bit
           Limit the address space to 32 bits to emulate hardware. Supported on ARM and Alpha. Turns
           on **ADDR_LIMIT_32BIT**.

### -F --fdpic-funcptrs
           Treat user-space function pointers to signal handlers as pointers to address descriptors.
           This option has no effect on architectures that do not support **FDPIC **ELF binaries. In
           kernel v4.14 support is limited to ARM, Blackfin, Fujitsu FR-V, and SuperH CPU
           architectures.

### -I --short-inode
           Obsolete bug emulation flag. Turns on **SHORT_INODE**.

### -L --addr-compat-layout
           Provide legacy virtual address space layout. Use when the _program_ binary does not have
           **PT_GNU_STACK **ELF header. Turns on **ADDR_COMPAT_LAYOUT**.

### -R --addr-no-randomize
           Disables randomization of the virtual address space. Turns on **ADDR_NO_RANDOMIZE**.

### -S --whole-seconds
           Obsolete bug emulation flag. Turns on **WHOLE_SECONDS**.

### -T --sticky-timeouts
           This makes [**select**(2)](https://www.chedong.com/phpMan.php/man/select/2/markdown), [**pselect**(2)](https://www.chedong.com/phpMan.php/man/pselect/2/markdown), and [**ppoll**(2)](https://www.chedong.com/phpMan.php/man/ppoll/2/markdown) system calls preserve the timeout value
           instead of modifying it to reflect the amount of time not slept when interrupted by a
           signal handler. Use when _program_ depends on this behavior. For more details see the
           timeout description in [**select**(2)](https://www.chedong.com/phpMan.php/man/select/2/markdown) manual page. Turns on **STICKY_TIMEOUTS**.

### -X --read-implies-exec
           If this is set then [**mmap**(2)](https://www.chedong.com/phpMan.php/man/mmap/2/markdown) **PROT_READ **will also add the **PROT_EXEC **bit - as expected by
           legacy x86 binaries. Notice that the ELF loader will automatically set this bit when it
           encounters a legacy binary. Turns on **READ_IMPLIES_EXEC**.

### -Z --mmap-page-zero
           SVr4 bug emulation that will set [**mmap**(2)](https://www.chedong.com/phpMan.php/man/mmap/2/markdown) page zero as read-only. Use when _program_ depends
           on this behavior, and the source code is not available to be fixed. Turns on
           **MMAP_PAGE_ZERO**.

### -h --help
           Display help text and exit.

### -V --version
           Print version and exit.

## EXAMPLE
           setarch --addr-no-randomize mytestprog
           setarch ppc32 rpmbuild --target=ppc --rebuild foo.src.rpm
           setarch ppc32 -v -vL3 rpmbuild --target=ppc --rebuild bar.src.rpm
           setarch ppc32 --32bit rpmbuild --target=ppc --rebuild foo.src.rpm

## AUTHORS
       Elliot Lee <<sopwith@redhat.com>>, Jindrich Novy <<jnovy@redhat.com>>, Karel Zak
       <<kzak@redhat.com>>

## SEE ALSO
       [**personality**(2)](https://www.chedong.com/phpMan.php/man/personality/2/markdown), [**select**(2)](https://www.chedong.com/phpMan.php/man/select/2/markdown)

## REPORTING BUGS
       For bug reports, use the issue tracker at <https://github.com/util-linux/util-linux/issues>.

## AVAILABILITY
       The **setarch **command is part of the util-linux package which can be downloaded from Linux
       Kernel Archive <<https://www.kernel.org/pub/linux/utils/util-linux/>>.

util-linux 2.39.3                            2023-11-21                                   [_SETARCH_(8)](https://www.chedong.com/phpMan.php/man/SETARCH/8/markdown)
