Kysymys:
ARM64-syscall-taulukko
merrychap
2017-12-06 01:46:46 UTC
view on stackexchange narkive permalink

Mietin, onko Linux ARM64 -arkkitehtuurille syscall-taulukkoa? Löysin syscall-taulukon Linux ARM32: lle ja monille muille arkkitehtuureille, mutta ongelma on edelleen olemassa.

Tietääkö kukaan mistä löydän syscall-taulukon tarkalleen ARM64: lle?

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

arm64 syscall-numerot määritetään osoitteessa: https://github.com/torvalds/linux/blob/v4.17/include/uapi/asm-generic/unistd.h

Tämä on hieman hämmentävää, koska se eroaa melkoisesti x86: sta ja x86_64: stä ja arm: stä, jotka määrittelevät syscall-numerot arch / -kohdassa, mutta tällä tiedostolla on kommentti sanomalla:

Uusien arkkitehtuurien tulisi käyttää tätä tiedostoa ja toteuttaa vähemmän tilaa sisältäviä puheluita käyttäjäavaruudessa.

joten arvaan, että se johtuu vain siitä, että aarch64 on uusi ja käyttää uudempaa enemmän kaaria agnostinen mekanismi, kun taas vanhat eivät koskaan voi rikkoa käyttömaan yhteensopivuutta, joten niitä ei voi päivittää uuteen mekanismiin.

Tätä tukee seuraava minimaalinen suoritettava aarch64-kokoonpanon Linux-puhelun esimerkki, joka toimii QEMU: lla ja käyttää 64 kirjoita ja 93 varten exit:

main.S

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

GitHub ylävirtaan.

Kokoa ja suorita:

  aarch64-linux-gnu- nimellä -o main.o main.Saarch64-linux-gnu-ld -o main.out main.oqemu-aarch64 main.out  

Testattu Ubuntu 16.04 amd64: ssä.

strace lähdekoodi

Tämä on hyvä paikka huijata helposti tarkistaa syscall-numerot, katso: https: // unix .stackexchange.com / questions / 421750 / where-do-you-find-the syscall-table-for-Linux / 499016 # 499016

Se vahvistaa myös sen, mitä sanoin uudemmista kaareista näyttää olevan yhtenäisiä puhelinnumeroita.

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

Päivitä : Katso tämä vastaus saadaksesi ajantasaista tietoa siitä, mistä ARM64-syscall-määritelmät löytyvät. Huomaa, että alla olevat tiedot saattavat olla vain yhteensopivia taaksepäin.


Katso 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) #def___________________________________________________________________________________________________________________________________ and_ and_ and_ and_ ja ja ja ja to ja to ja , 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________________________________________________________________________________________________________________________________________________________________ ja ja sen jaisen __SYSCALL (__ NR_creat, sys_creat) ...  

Löydät myös muutaman AArch64-spesifisen syscallen hakemistosta arch / arm64 / include / asm / unistd.h .

Mielestäni arm64: n todella mielenkiintoinen tiedosto on `include / uapi / asm-generic / unistd.h`: https://reverseengineering.stackexchange.com/a/18834/12321
@CiroSantilli 新疆 改造 中心 六四 事件 法轮功: Huh - ihmettelen, mihin linkittyjä tiedostoja nyt käytetään? Ehkä `glibc`-versiolla on jotain tekemistä sen kanssa ... joka tapauksessa kokeilutulosten perusteella` asm-generic`-tiedosto on todennäköisesti oikea.


Tämä Q & A käännettiin automaattisesti englanniksi.Alkuperäinen sisältö on saatavilla stackexchange-palvelussa, jota kiitämme cc by-sa 3.0-lisenssistä, jolla sitä jaetaan.
Loading...