setarch - zmienia zgłaszaną architekturę w
środowisku nowego programu i/lub ustawia flagi osobowości
setarch [architektura] [opcje] [program
[argument...]]
architektura [opcje] [program
[argument...]]
setarch modyfikuje domenę wykonywania i przetwarza
flagi osobowości.
Domena wykonywania obecnie wpływa jedynie na wynik
polecenia uname -m. Na przykład w systemie AMD64, wykonanie
setarch i386 program spowoduje, że program
zobaczy i686 zamiast x86_64 jako typ komputera.
Domyślnym programem jest /bin/sh.
Od wersji 2.33, argument wiersza polecenia architektura
jest opcjonalny a setarch może służyć do
zmiany flag osobowości (ADDR_LIMIT_3GB, SHORT_INODE, etc) bez
modyfikowania domeny wykonywania.
--list
Wypisuje architektury znane narzędziu
setarch. To, czy setarch może faktycznie ustawić
każdą z tych architektur, zależy od
działającego jądra.
--show[=osobowość]
Pokazuje obecnie aktywną osobowość
wraz z flagami. Jeśli poda się argument
osobowość, pokazuje ją, zamiast
bieżącej. Osobowość jest liczbą
szesnastkową, której dopuszczalne wartości opisano w
sys/personality.h.
-p, --pid=pid
Przy stosowaniu z --show, pokazuje
osobowość i flagi podanego procesu.
--uname-2.6
Powoduje, że podany program zobaczy numer
wersji jądra zaczynający się od 2.6. Włącza
UNAME26.
-v, --verbose
Więcej szczegółów.
-3, --3gb
Podany program powinien używać co
najwyżej 3GB przestrzeni adresowej. Obsługiwane na x86.
Włącza ADDR_LIMIT_3GB.
--4gb
Opcja nie odnosi skutku. Zachowano ją tylko ze
względu na kompatybilność wsteczną i może
być usunięta w przyszłych wydaniach.
-B, --32bit
Ogranicza przestrzeń adresową do 32
bitów, w celu emulacji sprzętu. Obsługiwane na ARM i
Alpha. Włącza ADDR_LIMIT_32BIT.
-F, --fdpic-funcptrs
Traktuje wskaźniki funkcji z przestrzeni
użytkownika do procedur obsługi sygnałów jako
wskaźniki do deskryptorów adresów. Opcja nie odnosi
skutku na architekturach nieobsługujących plików
binarnych ELF FDPIC. W jądrze v4.14 obsługa
ograniczała się do architektur ARM, Blackfin, Fujitsu FR-V oraz
SuperH CPU.
-I, --short-inode
Flaga emulująca starą usterkę.
Włącza SHORT_INODE.
-L, --addr-compat-layout
Udostępnia starszy układ wirtualnej
przestrzeni adresowej. Należy stosować, gdy plik wykonywalny
programu nie posiada nagłówka ELF PT_GNU_STACK.
Włącza ADDR_COMPAT_LAYOUT.
-R, --addr-no-randomize
Wyłącza stosowanie losowości
wirtualnej przestrzeni adresowej. Włącza
ADDR_NO_RANDOMIZE.
-S, --whole-seconds
Flaga emulująca starą usterkę.
Włącza WHOLE_SECONDS.
-T, --sticky-timeouts
Wywołania systemowe
select(2),
pselect(2) i
ppoll(2) będą zachowywały
wartość czasu przeterminowania, zamiast modyfikować
ją, aby uwzględnić okres braku uśpienia przy
przerwaniu przez procedurę obsługi sygnału. Opcję
należy stosować, gdy
program polega na tym zachowaniu.
Więcej szczegółów w opisie czasu przeterminowania
w podręczniku
select(2). Włącza
STICKY_TIMEOUTS.
-X, --read-implies-exec
Po podaniu opcji
PROT_READ mmap(2) doda
również bit
PROT_EXEC - jak oczekują tego stare
pliki wykonywalne x86. Proszę zauważyć, że
mechanizm ładujący ELF automatycznie ustawi ten bit, gdy natrafi
na stary plik wykonywalny. Włącza
READ_IMPLIES_EXEC.
-Z, --mmap-page-zero
Emulacja usterki SVr4, ustawiająca
mmap(2)
strony zerowej jako tylko do odczytu. Należy stosować, gdy
program polega na tym zachowaniu, a jego kod
źródłowy jest niedostępny,
uniemożliwiając jego poprawę. Włącza
MMAP_PAGE_ZERO.
-h, --help
Wyświetla ten tekst i wychodzi.
-V, --version
Wyświetla wersję i wychodzi.
setarch --addr-no-randomize mytestprog
setarch ppc32 rpmbuild --target=ppc --rebuild foo.src.rpm
setarch ppc32 -vL3 rpmbuild --target=ppc --rebuild bar.src.rpm
setarch ppc32 --32bit rpmbuild --target=ppc --rebuild foo.src.rpm
setarch --show
setarch --show=$(cat /proc/9284/personality)
setarch --show --pid 9284
Elliot Lee <sopwith@redhat.com>, Jindrich Novy
<jnovy@redhat.com>, Karel Zak <kzak@redhat.com>