Kérdés:
ARM64 syscalls táblázat
merrychap
2017-12-06 01:46:46 UTC
view on stackexchange narkive permalink

Kíváncsi vagyok, van-e syscall tábla a Linux ARM64 architektúrához? Találtam egy syscall táblázatot a Linux ARM32 és sok más architektúrához, de a probléma továbbra is fennáll.

Tudja valaki hol találok egy syscall táblázatot pontosan az ARM64-hez?

Kettő válaszokat:
Ciro Santilli 郝海东冠状病六四事件法轮功
2018-07-18 13:42:33 UTC
view on stackexchange narkive permalink

Az arm64 syscall számok a következő helyen vannak meghatározva: https://github.com/torvalds/linux/blob/v4.17/include/uapi/asm-generic/unistd.h

Ez kissé zavaró, mivel teljesen különbözik az x86-tól és az x86_64-től, valamint az arm-tól, amelyek a syscall számokat definiálják az arch / alatt, de a fájlhoz tartozik egy megjegyzés:

Az új architektúráknak ezt a fájlt kell használniuk, és a kevésbé funkciókkal teli hívásokat végre kell hajtaniuk a felhasználói térben.

szóval feltételezem, hogy csak azért, mert az aarch64 új, és egy újabb arch-ot használ agnosztikus mechanizmus, míg a régiek soha nem tudják megszakítani a felhasználói országok kompatibilitását, és így nem frissíthetők az új mechanizmusra.

Ezt alátámasztja a következő minimálisan futtatható aarch64 assembly Linux hívási példa, amely QEMU-n működik és 64 a write és 93 esetén a exit:

main.S

  .text.global _start_start: / * write * / mov x0, # 1 ldr x1, = msg ldr x2, = len mov x8, # 64 svc # 0 / * exit * / mov x0, # 0 mov x8, # 93 svc # 0msg: .ascii "hello world \ n" len =. - msg  

GitHub upstream.

Összeállítás és futtatás:

  aarch64-linux-gnu- mint -o main.o main.Saarch64-linux-gnu-ld -o main.out main.oqemu-aarch64 main.out  

Az Ubuntu 16.04 amd64 verziójában tesztelve.

strace forráskód

Ez egy jó hely a csalásra, hogy ellenőrizze a syscall számokat, lásd: https: // unix .stackexchange.com / questions / 421750 / hol találja meg a syscall-táblázatot a linux számára / 499016 # 499016

Ez megerősíti azt is, amit az újabb arch-okról mondtam látszólag egységes hívószámuk van.

tonysdg
2018-05-18 19:20:49 UTC
view on stackexchange narkive permalink

Frissítés : ebben a válaszban olvashat naprakész információkat arról, hogy hol találhatók az ARM64 syscall-definíciók. Ne feledje, hogy az alábbi információk csak a kompatibilitásra vonatkoznak.


Lásd: arch / arm64 / include / asm / unistd32.h :

  ... #define __NR_restart_syscall 0 __SYSCALL (__ NR_restart_syscall, sys_restart_syscall) #define __NR_exit 1 __SYSCALL (__ NR_exit, sys_exit) NRf______________________________________________________J_ , sys_read) #define __NR_write 4 __SYSCALL (__ NR_write, sys_write) #define __NR_open 5 __SYSCALL (__ NR_open, compat_sys_open) #define __NR_close 6 __SYSCALL_s__close_s_________________________ __SYSCALL (__ NR_creat, sys_creat) ...  

Néhány arch / arm64 / include / asm / unistd.h .

Úgy gondolom, hogy az arm64 igazán érdekes fájlja a `include / uapi / asm-generic / unistd.h`: https://reverseengineering.stackexchange.com/a/18834/12321
@CiroSantilli 新疆 改造 中心 六四 事件 法轮功: Huh - Kíváncsi vagyok, mire használják most az általam linkelt fájlokat? Talán a `glibc` verziónak van köze hozzá ... mindenesetre a kísérleti eredményei alapján az` asm-generic` fájl valószínűleg helyes.


Ezt a kérdést és választ automatikusan lefordították angol nyelvről.Az eredeti tartalom elérhető a stackexchange oldalon, amelyet köszönünk az cc by-sa 3.0 licencért, amely alatt terjesztik.
Loading...