mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-07 06:28:55 +02:00
Merged aarch64-android, x86_64-android targets and fixes for the Android target.
Revision(s) 39739, 39749, 39860, 39862, 39865, 39869, 39871, 39903, 39905, 39917, 39956, 39959-39960, 39969, 39971, 39980, 39987, 40198-40201, 40472, 40532, 40535-40536 from trunk: * Android: The list of supported syscalls has been auto-generated directly from android sources for each CPU. * Minor adjustments to make all compilable with the proper list of Android syscalls. ........ * Re-generated lists of android syscalls by a new script. The lists are more correct now. The script's location: https://svn.freepascal.org/svn/fpcbuild/scripts/android ........ * Fixed UnhookSignal when RTL_SIGDEFAULT is passed. The bug have caused crash on aarch64-android due to out of bounds read of the rtlsig2ossig[] array. ........ + Added support for the aarch64-android target. ........ * Set ICU data dir if it is not set by the system. It fixes issues on newer Android versions. * Added more predefined ICU versions. ........ * android: Use the current dir as temp. ........ * Corrected TUContext record for aarch64-linux and aarch64-android. It fixes obtaining of an address of the instruction where a signal has thrown. ........ * Enabled safecall support for aarch64 to be on par with other cpus. ........ * Android: Reworked the startup code to use no assembly instructions. Generic assembler startup files contains only section data and are compiled for each CPU. * Android: argc and argv are correct for shared libraries. ........ * Use syscall_nr_renameat for android. ........ + added support for x86_64-android target. ........ + Added the auto-generated list syscalls for mips64-android. It will be needed when mips64 is supported. ........ * x86_64-android requires sigreturn for proper signal handling. ........ * Register external gas assembler for aarch64-android and x86_64-android. ........ * Enabled compilation of the cpu unit for arm-android and x86_64-android. ........ * ucnv_open() must be called with some SSE exception masked on x86_64-android. * Call u_init() during initialization. ........ * Create the ".note.gnu.build-id" section for android. It fixes debugging of shared libs in Android Studio. ........ * android: Removed cwstring from the uses clause of the unix unit. Use cwstring indirectly. It allows to avoid using cwstring if needed. ........ * ICU v3.8 on Android 1.5-2.1 is buggy and can't be unloaded properly. ........ * Fixed locale detection on new Android versions. ........ * Fixed obtaining a time zone information for 64-bit android. ........ * Since Android 8 the net.dnsX properties can't be read. Use Google Public DNS servers. ........ * android: Use libc for sockets since the "accept" syscall is blocked by SECCOMP, but the "accept4" alternative is not available on old Android versions (2.3 and older). ........ * android: Regenerated syscalls. ........ * android: Disabled usage of the "pselect6" and "ppoll" syscalls for arm-android. These syscalls are not available on old Android versions (2.3 or older). ........ git-svn-id: branches/fixes_3_2@40540 -
This commit is contained in:
parent
1f921d4ac0
commit
0654857ce1
12
.gitattributes
vendored
12
.gitattributes
vendored
@ -7354,7 +7354,6 @@ packages/rtl-extra/src/amiga/printer.pp svneol=native#text/plain
|
||||
packages/rtl-extra/src/amiga/sockets.pp svneol=native#text/plain
|
||||
packages/rtl-extra/src/android/clocale.pp svneol=native#text/plain
|
||||
packages/rtl-extra/src/android/osdefs.inc svneol=native#text/plain
|
||||
packages/rtl-extra/src/android/unixsock.inc svneol=native#text/plain
|
||||
packages/rtl-extra/src/android/unxsockh.inc svneol=native#text/plain
|
||||
packages/rtl-extra/src/aros/sockets.pp svneol=native#text/plain
|
||||
packages/rtl-extra/src/beos/osdefs.inc svneol=native#text/plain
|
||||
@ -8715,13 +8714,11 @@ rtl/amiga/system.pp svneol=native#text/plain
|
||||
rtl/amiga/timerd.inc svneol=native#text/plain
|
||||
rtl/android/Makefile svneol=native#text/plain
|
||||
rtl/android/Makefile.fpc svneol=native#text/plain
|
||||
rtl/android/arm/dllprt0.as svneol=native#text/plain
|
||||
rtl/android/arm/prt0.as svneol=native#text/plain
|
||||
rtl/android/aarch64/sysnr.inc svneol=native#text/plain
|
||||
rtl/android/arm/sysnr.inc svneol=native#text/plain
|
||||
rtl/android/cwstring.pp svneol=native#text/plain
|
||||
rtl/android/dlandroid.inc svneol=native#text/plain
|
||||
rtl/android/i386/dllprt0.as svneol=native#text/plain
|
||||
rtl/android/i386/prt0.as svneol=native#text/plain
|
||||
rtl/android/dllprt0.as svneol=native#text/plain
|
||||
rtl/android/i386/sysnr.inc svneol=native#text/plain
|
||||
rtl/android/jvm/Makefile svneol=native#text/plain
|
||||
rtl/android/jvm/Makefile.fpc svneol=native#text/plain
|
||||
@ -8730,12 +8727,13 @@ rtl/android/jvm/androidr14.pas svneol=native#text/plain
|
||||
rtl/android/jvm/java_sys_android.inc svneol=native#text/plain
|
||||
rtl/android/jvm/java_sysh_android.inc svneol=native#text/plain
|
||||
rtl/android/jvm/rtl.cfg svneol=native#text/plain
|
||||
rtl/android/mipsel/dllprt0.as svneol=native#text/plain
|
||||
rtl/android/mipsel/prt0.as svneol=native#text/plain
|
||||
rtl/android/mips64/sysnr.inc svneol=native#text/plain
|
||||
rtl/android/mipsel/sysnr.inc svneol=native#text/plain
|
||||
rtl/android/prt0.as svneol=native#text/plain
|
||||
rtl/android/sysandroid.inc svneol=native#text/plain
|
||||
rtl/android/sysandroidh.inc svneol=native#text/plain
|
||||
rtl/android/unixandroid.inc svneol=native#text/plain
|
||||
rtl/android/x86_64/sysnr.inc svneol=native#text/plain
|
||||
rtl/arm/arm.inc svneol=native#text/plain
|
||||
rtl/arm/armdefines.inc svneol=native#text/plain
|
||||
rtl/arm/cpu.pp svneol=native#text/pascal
|
||||
|
@ -274,7 +274,7 @@ unit agcpugas;
|
||||
idtxt : 'AS';
|
||||
asmbin : 'as';
|
||||
asmcmd : '-o $OBJ $EXTRAOPT $ASM';
|
||||
supported_targets : [system_aarch64_linux];
|
||||
supported_targets : [system_aarch64_linux,system_aarch64_android];
|
||||
flags : [af_needar,af_smartlink_sections];
|
||||
labelprefix : '.L';
|
||||
comment : '// ';
|
||||
|
@ -41,6 +41,9 @@ implementation
|
||||
{$ifndef NOTARGETBSD}
|
||||
,t_bsd
|
||||
{$endif}
|
||||
{$ifndef NOTARGETANDROID}
|
||||
,t_android
|
||||
{$endif}
|
||||
|
||||
{**************************************
|
||||
Assemblers
|
||||
|
@ -271,6 +271,7 @@
|
||||
{$define cputargethasfixedstack}
|
||||
{$define cpurefshaveindexreg}
|
||||
{$define SUPPORT_GET_FRAME}
|
||||
{$define SUPPORT_SAFECALL}
|
||||
{$endif aarch64}
|
||||
|
||||
{$IFDEF MACOS}
|
||||
|
@ -3722,16 +3722,15 @@ begin
|
||||
if not UpdateTargetSwitchStr('FARPROCSPUSHODDBP', init_settings.targetswitches, true) then
|
||||
InternalError(2013092801);
|
||||
|
||||
{ Set up a default prefix for binutils when cross-compiling }
|
||||
if source_info.system<>target_info.system then
|
||||
{ Use standard Android NDK prefixes when cross-compiling }
|
||||
if (source_info.system<>target_info.system) and (target_info.system in systems_android) then
|
||||
case target_info.system of
|
||||
{ Use standard Android NDK prefixes }
|
||||
system_arm_android:
|
||||
utilsprefix:='arm-linux-androideabi-';
|
||||
system_i386_android:
|
||||
utilsprefix:='i686-linux-android-';
|
||||
system_mipsel_android:
|
||||
utilsprefix:='mipsel-linux-android-';
|
||||
else
|
||||
utilsprefix:=target_cpu_string + '-linux-android-';
|
||||
end;
|
||||
|
||||
{ Set up default value for the heap }
|
||||
|
@ -179,7 +179,13 @@
|
||||
system_wasm_wasm32, { 92 }
|
||||
system_sparc64_linux, { 93 }
|
||||
system_sparc64_solaris, { 94 }
|
||||
system_arm_netbsd { 95 }
|
||||
system_arm_netbsd, { 95 }
|
||||
system_riscv32_linux, { 96 }
|
||||
system_riscv64_linux, { 97 }
|
||||
system_riscv64_embedded, { 98 }
|
||||
system_riscv32_embedded, { 99 }
|
||||
system_aarch64_android, { 100 }
|
||||
system_x86_64_android { 101 }
|
||||
);
|
||||
|
||||
type
|
||||
|
@ -229,7 +229,7 @@ interface
|
||||
system_any = system_none;
|
||||
|
||||
systems_wince = [system_arm_wince,system_i386_wince];
|
||||
systems_android = [system_arm_android, system_i386_android, system_mipsel_android];
|
||||
systems_android = [system_arm_android, system_aarch64_android, system_i386_android, system_x86_64_android, system_mipsel_android];
|
||||
systems_linux = [system_i386_linux,system_x86_64_linux,system_powerpc_linux,system_powerpc64_linux,
|
||||
system_arm_linux,system_sparc_linux,system_sparc64_linux,system_m68k_linux,
|
||||
system_x86_6432_linux,system_mipseb_linux,system_mipsel_linux,system_aarch64_linux];
|
||||
@ -906,6 +906,10 @@ begin
|
||||
default_target(system_powerpc_aix);
|
||||
{$define default_target_set}
|
||||
{$endif}
|
||||
{$ifdef android}
|
||||
{$define default_target_set}
|
||||
default_target(system_x86_64_android);
|
||||
{$endif}
|
||||
{$ifndef default_target_set}
|
||||
default_target(system_powerpc_linux);
|
||||
{$endif default_target_set}
|
||||
@ -1026,6 +1030,10 @@ begin
|
||||
{$define default_target_set}
|
||||
default_target(system_aarch64_darwin);
|
||||
{$endif darwin}
|
||||
{$ifdef android}
|
||||
{$define default_target_set}
|
||||
default_target(system_aarch64_android);
|
||||
{$endif android}
|
||||
{$ifndef default_target_set}
|
||||
default_target(system_aarch64_linux);
|
||||
{$define default_target_set}
|
||||
|
@ -161,6 +161,138 @@ unit i_android;
|
||||
llvmdatalayout : 'e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:32:32-n8:16:32-S128';
|
||||
);
|
||||
|
||||
system_aarch64_android_info : tsysteminfo =
|
||||
(
|
||||
system : system_aarch64_android;
|
||||
name : 'Android for AArch64';
|
||||
shortname : 'Android';
|
||||
flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
|
||||
tf_requires_proper_alignment, tf_safecall_exceptions,
|
||||
tf_pic_uses_got, tf_pic_default,
|
||||
tf_smartlink_sections,tf_has_winlike_resources];
|
||||
cpu : cpu_aarch64;
|
||||
unit_env : 'ANDROIDUNITS';
|
||||
extradefines : 'UNIX;HASUNIX';
|
||||
exeext : '';
|
||||
defext : '.def';
|
||||
scriptext : '.sh';
|
||||
smartext : '.sl';
|
||||
unitext : '.ppu';
|
||||
unitlibext : '.ppl';
|
||||
asmext : '.s';
|
||||
objext : '.o';
|
||||
resext : '.res';
|
||||
resobjext : '.or';
|
||||
sharedlibext : '.so';
|
||||
staticlibext : '.a';
|
||||
staticlibprefix : 'libp';
|
||||
sharedlibprefix : 'lib';
|
||||
sharedClibext : '.so';
|
||||
staticClibext : '.a';
|
||||
staticClibprefix : 'lib';
|
||||
sharedClibprefix : 'lib';
|
||||
importlibprefix : 'libimp';
|
||||
importlibext : '.a';
|
||||
Cprefix : '';
|
||||
newline : #10;
|
||||
dirsep : '/';
|
||||
assem : as_gas;
|
||||
assemextern : as_gas;
|
||||
link : ld_none;
|
||||
linkextern : ld_android;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_elf;
|
||||
dbg : dbg_dwarf2;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
(
|
||||
procalign : 8;
|
||||
loopalign : 4;
|
||||
jumpalign : 0;
|
||||
constalignmin : 0;
|
||||
constalignmax : 8;
|
||||
varalignmin : 0;
|
||||
varalignmax : 16;
|
||||
localalignmin : 4;
|
||||
localalignmax : 16;
|
||||
recordalignmin : 0;
|
||||
recordalignmax : 16;
|
||||
maxCrecordalign : 16
|
||||
);
|
||||
first_parm_offset : 16;
|
||||
stacksize : 8*1024*1024;
|
||||
stackalign : 16;
|
||||
abi : abi_default;
|
||||
llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-n32:64-S128'
|
||||
);
|
||||
|
||||
system_x86_64_android_info : tsysteminfo =
|
||||
(
|
||||
system : system_x86_64_android;
|
||||
name : 'Android for x86-64';
|
||||
shortname : 'Android';
|
||||
flags : [tf_needs_symbol_size,tf_needs_symbol_type,tf_files_case_sensitive,
|
||||
tf_needs_dwarf_cfi,tf_has_winlike_resources,
|
||||
{tf_pic_uses_got,} tf_pic_default, tf_smartlink_sections,
|
||||
tf_safecall_exceptions, tf_safecall_clearstack];
|
||||
cpu : cpu_x86_64;
|
||||
unit_env : 'ANDROIDUNITS';
|
||||
extradefines : 'UNIX;HASUNIX';
|
||||
exeext : '';
|
||||
defext : '.def';
|
||||
scriptext : '.sh';
|
||||
smartext : '.sl';
|
||||
unitext : '.ppu';
|
||||
unitlibext : '.ppl';
|
||||
asmext : '.s';
|
||||
objext : '.o';
|
||||
resext : '.res';
|
||||
resobjext : '.or';
|
||||
sharedlibext : '.so';
|
||||
staticlibext : '.a';
|
||||
staticlibprefix : 'libp';
|
||||
sharedlibprefix : 'lib';
|
||||
sharedClibext : '.so';
|
||||
staticClibext : '.a';
|
||||
staticClibprefix : 'lib';
|
||||
sharedClibprefix : 'lib';
|
||||
importlibprefix : 'libimp';
|
||||
importlibext : '.a';
|
||||
Cprefix : '';
|
||||
newline : #10;
|
||||
dirsep : '/';
|
||||
assem : as_x86_64_elf64;
|
||||
assemextern : as_gas;
|
||||
link : ld_none;
|
||||
linkextern : ld_android;
|
||||
ar : ar_gnu_ar;
|
||||
res : res_elf;
|
||||
dbg : dbg_dwarf2;
|
||||
script : script_unix;
|
||||
endian : endian_little;
|
||||
alignment :
|
||||
(
|
||||
procalign : 16;
|
||||
loopalign : 8;
|
||||
jumpalign : 0;
|
||||
constalignmin : 0;
|
||||
constalignmax : 8;
|
||||
varalignmin : 0;
|
||||
varalignmax : 16;
|
||||
localalignmin : 4;
|
||||
localalignmax : 16;
|
||||
recordalignmin : 0;
|
||||
recordalignmax : 16;
|
||||
maxCrecordalign : 16
|
||||
);
|
||||
first_parm_offset : 16;
|
||||
stacksize : 8*1024*1024;
|
||||
stackalign : 16;
|
||||
abi : abi_default;
|
||||
llvmdatalayout : 'e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128';
|
||||
);
|
||||
|
||||
system_mipsel_android_info : tsysteminfo =
|
||||
(
|
||||
system : system_mipsel_android;
|
||||
@ -234,11 +366,21 @@ initialization
|
||||
set_source_info(system_i386_android_info);
|
||||
{$endif}
|
||||
{$endif CPUI386}
|
||||
{$ifdef CPUX86_64}
|
||||
{$ifdef android}
|
||||
set_source_info(system_x86_64_android_info);
|
||||
{$endif}
|
||||
{$endif CPUX86_64}
|
||||
{$ifdef CPUARM}
|
||||
{$ifdef android}
|
||||
set_source_info(system_arm_android_info);
|
||||
{$endif android}
|
||||
{$endif CPUARM}
|
||||
{$ifdef CPUAARCH64}
|
||||
{$ifdef android}
|
||||
set_source_info(system_aarch64_android_info);
|
||||
{$endif android}
|
||||
{$endif CPUAARCH64}
|
||||
{$ifdef CPUMIPSEL}
|
||||
{$ifdef android}
|
||||
set_source_info(system_mipsel_android_info);
|
||||
|
@ -168,14 +168,18 @@ begin
|
||||
with Info do
|
||||
begin
|
||||
{ Specify correct max-page-size and common-page-size to prevent big gaps between sections in resulting executable }
|
||||
s:='ld -z max-page-size=0x1000 -z common-page-size=0x1000 -z noexecstack -z now $OPT -L. -T $RES -o $EXE';
|
||||
ExeCmd[1]:=s + ' --entry=_fpc_start';
|
||||
s:='ld -z max-page-size=0x1000 -z common-page-size=0x1000 -z noexecstack -z now --build-id $OPT -L. -T $RES -o $EXE';
|
||||
ExeCmd[1]:=s + ' --entry=_start';
|
||||
DllCmd[1]:=s + ' -shared -soname $SONAME';
|
||||
DllCmd[2]:='strip --strip-unneeded $EXE';
|
||||
ExtDbgCmd[1]:='objcopy --only-keep-debug $EXE $DBG';
|
||||
ExtDbgCmd[2]:='objcopy --add-gnu-debuglink=$DBG $EXE';
|
||||
ExtDbgCmd[3]:='strip --strip-unneeded $EXE';
|
||||
{$ifdef cpu64bitalu}
|
||||
DynamicLinker:='/system/bin/linker64';
|
||||
{$else}
|
||||
DynamicLinker:='/system/bin/linker';
|
||||
{$endif cpu64bitalu}
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -486,11 +490,21 @@ initialization
|
||||
RegisterExport(system_arm_android,texportlibandroid);
|
||||
RegisterTarget(system_arm_android_info);
|
||||
{$endif ARM}
|
||||
{$ifdef AARCH64}
|
||||
RegisterImport(system_aarch64_android,timportlibandroid);
|
||||
RegisterExport(system_aarch64_android,texportlibandroid);
|
||||
RegisterTarget(system_aarch64_android_info);
|
||||
{$endif AARCH64}
|
||||
{$ifdef I386}
|
||||
RegisterImport(system_i386_android,timportlibandroid);
|
||||
RegisterExport(system_i386_android,texportlibandroid);
|
||||
RegisterTarget(system_i386_android_info);
|
||||
{$endif I386}
|
||||
{$ifdef X86_64}
|
||||
RegisterImport(system_x86_64_android,timportlibandroid);
|
||||
RegisterExport(system_x86_64_android,texportlibandroid);
|
||||
RegisterTarget(system_x86_64_android_info);
|
||||
{$endif X86_64}
|
||||
{$ifdef MIPSEL}
|
||||
RegisterImport(system_mipsel_android,timportlibandroid);
|
||||
RegisterExport(system_mipsel_android,texportlibandroid);
|
||||
|
@ -181,7 +181,13 @@ const
|
||||
{ 92 } 'WebAssembly-wasm',
|
||||
{ 93 } 'Linux-sparc64',
|
||||
{ 94 } 'Solaris-sparc64',
|
||||
{ 95 } 'NetBSD-arm'
|
||||
{ 95 } 'NetBSD-arm',
|
||||
{ 96 } 'Linux-RiscV32',
|
||||
{ 97 } 'Linux-RiscV64',
|
||||
{ 98 } 'Embedded-RiscV32',
|
||||
{ 99 } 'Embedded-RiscV64',
|
||||
{ 100 } 'Android-AArch64',
|
||||
{ 101 } 'Android-x86-64'
|
||||
);
|
||||
|
||||
const
|
||||
|
@ -382,7 +382,8 @@ interface
|
||||
supported_targets : [system_x86_64_linux,system_x86_64_freebsd,
|
||||
system_x86_64_win64,system_x86_64_embedded,
|
||||
system_x86_64_openbsd,system_x86_64_netbsd,
|
||||
system_x86_64_dragonfly,system_x86_64_aros];
|
||||
system_x86_64_dragonfly,system_x86_64_aros,
|
||||
system_x86_64_android];
|
||||
flags : [af_needar,af_smartlink_sections,af_supports_dwarf];
|
||||
labelprefix : '.L';
|
||||
comment : '# ';
|
||||
|
@ -677,7 +677,7 @@ implementation
|
||||
supported_targets : [system_x86_64_linux,system_x86_64_freebsd,
|
||||
system_x86_64_openbsd,system_x86_64_netbsd,
|
||||
system_x86_64_dragonfly,system_x86_64_solaris,
|
||||
system_x86_64_aros];
|
||||
system_x86_64_aros,system_x86_64_android];
|
||||
flags : [af_outputbinary,af_smartlink_sections,af_supports_dwarf];
|
||||
labelprefix : '.L';
|
||||
comment : '';
|
||||
|
@ -57,6 +57,9 @@ implementation
|
||||
{$ifndef NOTARGETEMBEDDED}
|
||||
,t_embed
|
||||
{$endif}
|
||||
{$ifndef NOTARGETANDROID}
|
||||
,t_android
|
||||
{$endif}
|
||||
|
||||
{**************************************
|
||||
Assemblers
|
||||
|
@ -478,6 +478,17 @@ var
|
||||
s: string;
|
||||
H : THostAddr;
|
||||
begin
|
||||
if SystemApiLevel >= 26 then
|
||||
begin
|
||||
// Since Android 8 the net.dnsX properties can't be read.
|
||||
// Use Google Public DNS servers
|
||||
Result:=2;
|
||||
SetLength(DNSServers, Result);
|
||||
DNSServers[0]:=StrToNetAddr('8.8.8.8');
|
||||
DNSServers[1]:=StrToNetAddr('8.8.4.4');
|
||||
exit;
|
||||
end;
|
||||
|
||||
Result:=0;
|
||||
SetLength(DNSServers, 9);
|
||||
for i:=1 to 9 do
|
||||
@ -504,6 +515,13 @@ var
|
||||
begin
|
||||
if not CheckResolveFileAge then
|
||||
exit;
|
||||
|
||||
if (Length(DNSServers) = 0) and (SystemApiLevel >= 26) then
|
||||
begin
|
||||
GetDNSServers;
|
||||
exit;
|
||||
end;
|
||||
|
||||
n:=GetSystemProperty('net.change');
|
||||
if n <> '' then
|
||||
v:=GetSystemProperty(PAnsiChar(n))
|
||||
|
@ -218,7 +218,7 @@ Const
|
||||
{ iphonesim}( false, true, false, false, false, true, false, false, false, false, false, false, false, false, false, false),
|
||||
{ aix } ( false, false, false, true, false, false, false, true, false, false, false, false, false, false, false, false),
|
||||
{ java } ( false, false, false, false, false, false, false, false, false, false, false, false, true , false, false, false),
|
||||
{ android } ( false, true, false, false, false, false, true, false, false, false, false, true, true , false, false, false),
|
||||
{ android } ( false, true, false, false, false, true, true, false, false, false, false, true, true , false, true, false),
|
||||
{ nativent }( false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
{ msdos } ( false, false, false, false, false, false, false, false, false, false, false, false, false, true , false, false),
|
||||
{ wii } ( false, false, false, true , false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
|
@ -64,11 +64,12 @@ var
|
||||
unum_close: procedure (fmt: UNumberFormat); cdecl;
|
||||
unum_getSymbol: function (fmt: UNumberFormat; symbol: UNumberFormatSymbol; result: PUnicodeChar; resultLength: int32_t; var status: UErrorCode): int32_t; cdecl;
|
||||
|
||||
function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean; external name 'CWSTRING_GET_ICU_PROC';
|
||||
GetIcuProc: function (const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'ANDROID_GET_ICU_PROC';
|
||||
|
||||
procedure InitIcuFunctions;
|
||||
begin
|
||||
if FunctionsInited then exit;
|
||||
if not Assigned(GetIcuProc) then exit;
|
||||
if not GetIcuProc('udat_open', udat_open, 1) then exit;
|
||||
if not GetIcuProc('udat_close', udat_close, 1) then exit;
|
||||
if not GetIcuProc('udat_toPattern', udat_toPattern, 1) then exit;
|
||||
@ -87,6 +88,9 @@ function GetCurrentLocaleStr: utf8string;
|
||||
var
|
||||
s: utf8string;
|
||||
begin
|
||||
Result:=GetSystemProperty('persist.sys.locale');
|
||||
if Result <> '' then
|
||||
exit;
|
||||
Result:=GetSystemProperty('persist.sys.language');
|
||||
if Result = '' then
|
||||
exit;
|
||||
|
@ -1,239 +0,0 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
(c) 2004 by Marco van de Voort
|
||||
member of the Free Pascal development team.
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
socket call implementations for Linux
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
}
|
||||
|
||||
{$if defined(cpu386)}
|
||||
{$define NEED_SOCKETCALL}
|
||||
{$endif}
|
||||
|
||||
{******************************************************************************
|
||||
Basic Socket Functions
|
||||
******************************************************************************}
|
||||
|
||||
{$ifdef NEED_SOCKETCALL}
|
||||
|
||||
Const
|
||||
{
|
||||
Arguments to the Linux Kernel system call for sockets. All
|
||||
Socket Connected calls go through the same system call,
|
||||
with an extra argument to determine what action to take.
|
||||
}
|
||||
Socket_Sys_SOCKET = 1;
|
||||
Socket_Sys_BIND = 2;
|
||||
Socket_Sys_CONNECT = 3;
|
||||
Socket_Sys_LISTEN = 4;
|
||||
Socket_Sys_ACCEPT = 5;
|
||||
Socket_Sys_GETSOCKNAME = 6;
|
||||
Socket_Sys_GETPEERNAME = 7;
|
||||
Socket_Sys_SOCKETPAIR = 8;
|
||||
Socket_Sys_SEND = 9;
|
||||
Socket_Sys_RECV = 10;
|
||||
Socket_Sys_SENDTO = 11;
|
||||
Socket_Sys_RECVFROM = 12;
|
||||
Socket_Sys_SHUTDOWN = 13;
|
||||
Socket_Sys_SETSOCKOPT = 14;
|
||||
Socket_Sys_GETSOCKOPT = 15;
|
||||
Socket_Sys_SENDMSG = 16;
|
||||
Socket_Sys_RECVMSG = 17;
|
||||
|
||||
|
||||
Function SocketCall(SockCallNr,a1,a2,a3,a4,a5,a6:TSysParam):cint; inline;
|
||||
var
|
||||
Args:array[1..6] of TSysParam;
|
||||
begin
|
||||
args[1]:=a1;
|
||||
args[2]:=a2;
|
||||
args[3]:=a3;
|
||||
args[4]:=a4;
|
||||
args[5]:=a5;
|
||||
args[6]:=a6;
|
||||
SocketCall:=do_Syscall(syscall_nr_socketcall,sockcallnr,TSysParam(@args));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
|
||||
function SocketCall(SockCallNr,a1,a2,a3:TSysParam):cint;inline;
|
||||
begin
|
||||
SocketCall:=SocketCall(SockCallNr,a1,a2,a3,0,0,0);
|
||||
end;
|
||||
|
||||
function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
|
||||
begin
|
||||
fpSocket:=SocketCall(Socket_Sys_socket,Domain,xtype,Protocol);
|
||||
end;
|
||||
|
||||
function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
|
||||
begin
|
||||
fpSend:=SocketCall(Socket_Sys_sendto,S,TSysParam(msg),Len,Flags,0,0);
|
||||
end;
|
||||
|
||||
function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
|
||||
begin
|
||||
fpSendto:=SocketCall(Socket_Sys_sendto,S,TSysParam(msg),Len,Flags,TSysParam(tox),tolen);
|
||||
end;
|
||||
|
||||
function fprecv (s:cint; buf: pointer; len: size_t; flags:cint):ssize_t;
|
||||
begin
|
||||
fpRecv:=SocketCall(Socket_Sys_Recvfrom,S,tsysparam(buf),len,flags,0,0);
|
||||
end;
|
||||
|
||||
function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
|
||||
begin
|
||||
fpRecvFrom:=SocketCall(Socket_Sys_Recvfrom,S,TSysParam(buf),len,flags,TSysParam(from),TSysParam(fromlen));
|
||||
end;
|
||||
|
||||
function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
|
||||
begin
|
||||
fpBind:=SocketCall(Socket_Sys_Bind,S,TSysParam(addrx),addrlen);
|
||||
end;
|
||||
|
||||
function fplisten (s:cint; backlog : cint):cint;
|
||||
begin
|
||||
fpListen:=SocketCall(Socket_Sys_Listen,S,backlog,0);
|
||||
end;
|
||||
|
||||
function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
|
||||
begin
|
||||
fpAccept:=SocketCall(Socket_Sys_accept,S,TSysParam(addrx),TSysParam(addrlen));
|
||||
end;
|
||||
|
||||
function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint;
|
||||
begin
|
||||
fpConnect:=SocketCall(Socket_Sys_connect,S,TSysParam(name),namelen);
|
||||
end;
|
||||
|
||||
function fpshutdown (s:cint; how:cint):cint;
|
||||
begin
|
||||
fpShutDown:=SocketCall(Socket_Sys_shutdown,S,how,0);
|
||||
end;
|
||||
|
||||
function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint;
|
||||
begin
|
||||
fpGetSockName:=SocketCall(Socket_Sys_GetSockName,S,TSysParam(name),TSysParam(namelen));
|
||||
end;
|
||||
|
||||
function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint;
|
||||
begin
|
||||
fpGetPeerName:=SocketCall(Socket_Sys_GetPeerName,S,TSysParam(name),TSysParam(namelen));
|
||||
end;
|
||||
|
||||
function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : tsocklen):cint;
|
||||
begin
|
||||
fpSetSockOpt:=SocketCall(Socket_Sys_SetSockOpt,S,level,optname,TSysParam(optval),optlen,0);
|
||||
end;
|
||||
|
||||
function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
|
||||
begin
|
||||
fpGetSockOpt:=SocketCall(Socket_Sys_GetSockOpt,S,level,TSysParam(optname),TSysParam(optval),TSysParam(optlen),0);
|
||||
end;
|
||||
|
||||
function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
|
||||
begin
|
||||
fpSocketPair:=SocketCall(Socket_Sys_SocketPair,d,xtype,protocol,TSysParam(sv),0,0);
|
||||
end;
|
||||
|
||||
{$else NEED_SOCKETCALL}
|
||||
|
||||
function fpsocket (domain:cint; xtype:cint; protocol: cint):cint;
|
||||
begin
|
||||
fpSocket:=do_syscall(syscall_nr_socket,Domain,xtype,Protocol);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpsend (s:cint; msg:pointer; len:size_t; flags:cint):ssize_t;
|
||||
begin
|
||||
fpSend:=do_syscall(syscall_nr_sendto,S,TSysParam(msg),Len,Flags,0,0);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpsendto (s:cint; msg:pointer; len:size_t; flags:cint; tox :psockaddr; tolen: tsocklen):ssize_t;
|
||||
begin
|
||||
fpSendto:=do_syscall(syscall_nr_sendto,S,TSysParam(msg),Len,Flags,TSysParam(tox),tolen);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fprecv (s:cint; buf: pointer; len: size_t; flags:cint):ssize_t;
|
||||
begin
|
||||
fpRecv:=do_syscall(syscall_nr_Recvfrom,S,tsysparam(buf),len,flags,0,0);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fprecvfrom (s:cint; buf: pointer; len: size_t; flags: cint; from : psockaddr; fromlen : psocklen):ssize_t;
|
||||
begin
|
||||
fpRecvFrom:=do_syscall(syscall_nr_Recvfrom,S,TSysParam(buf),len,flags,TSysParam(from),TSysParam(fromlen));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpbind (s:cint; addrx : psockaddr; addrlen : tsocklen):cint;
|
||||
begin
|
||||
fpBind:=do_syscall(syscall_nr_Bind,S,TSysParam(addrx),addrlen);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fplisten (s:cint; backlog : cint):cint;
|
||||
begin
|
||||
fpListen:=do_syscall(syscall_nr_Listen,S,backlog);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpaccept (s:cint; addrx : psockaddr; addrlen : psocklen):cint;
|
||||
begin
|
||||
fpAccept:=do_syscall(syscall_nr_accept,S,TSysParam(addrx),TSysParam(addrlen));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpconnect (s:cint; name : psockaddr; namelen : tsocklen):cint;
|
||||
begin
|
||||
fpConnect:=do_syscall(syscall_nr_connect,S,TSysParam(name),namelen);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpshutdown (s:cint; how:cint):cint;
|
||||
begin
|
||||
fpShutDown:=do_syscall(syscall_nr_shutdown,S,how);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpgetsockname (s:cint; name : psockaddr; namelen : psocklen):cint;
|
||||
begin
|
||||
fpGetSockName:=do_syscall(syscall_nr_GetSockName,S,TSysParam(name),TSysParam(namelen));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpgetpeername (s:cint; name : psockaddr; namelen : psocklen):cint;
|
||||
begin
|
||||
fpGetPeerName:=do_syscall(syscall_nr_GetPeerName,S,TSysParam(name),TSysParam(namelen));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpsetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : tsocklen):cint;
|
||||
begin
|
||||
fpSetSockOpt:=do_syscall(syscall_nr_SetSockOpt,S,level,optname,TSysParam(optval),optlen);
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpgetsockopt (s:cint; level:cint; optname:cint; optval:pointer; optlen : psocklen):cint;
|
||||
begin
|
||||
fpGetSockOpt:=do_syscall(syscall_nr_GetSockOpt,S,level,TSysParam(optname),TSysParam(optval),TSysParam(optlen));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
function fpsocketpair (d:cint; xtype:cint; protocol:cint; sv:pcint):cint;
|
||||
begin
|
||||
fpSocketPair:=do_syscall(syscall_nr_SocketPair,d,xtype,protocol,TSysParam(sv));
|
||||
internal_socketerror:=fpgeterrno;
|
||||
end;
|
||||
|
||||
{$endif NEED_do_syscall}
|
||||
|
@ -13,6 +13,10 @@
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
}
|
||||
|
||||
{ Use libc for sockets since the "accept" syscall is blocked by SECCOMP,
|
||||
but the "accept4" alternative is not available on old Android versions (2.3 and older). }
|
||||
{$define FPC_USE_LIBC}
|
||||
|
||||
Const
|
||||
{* Supported address families. *}
|
||||
AF_UNSPEC = 0;
|
||||
|
@ -39,7 +39,9 @@ dirs_wii=wii
|
||||
dirs_aix=aix
|
||||
dirs_java=java
|
||||
dirs_i386_android=android
|
||||
dirs_x86_64_android=android
|
||||
dirs_arm_android=android
|
||||
dirs_aarch64_android=android
|
||||
dirs_mipsel_android=android
|
||||
dirs_jvm_android=android/jvm
|
||||
dirs_msdos=msdos
|
||||
|
@ -345,8 +345,11 @@ UNITPREFIX=rtl
|
||||
CPU_UNITS=
|
||||
SYSINIT_UNITS=
|
||||
LOADERS=prt0 dllprt0
|
||||
ifeq ($(findstring $(ARCH),i386 x86_64 arm),$(ARCH))
|
||||
CPU_UNITS=cpu
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
CPU_UNITS=cpu mmx
|
||||
CPU_UNITS+=mmx
|
||||
endif
|
||||
SYSTEMUNIT=system
|
||||
ifdef RELEASE
|
||||
@ -3634,10 +3637,15 @@ endif
|
||||
ifeq ($(ARCH),mipsel)
|
||||
ASTARGET=-mips32 -KPIC
|
||||
endif
|
||||
prt0$(OEXT) : $(ARCH)/prt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(ARCH)/prt0.as
|
||||
dllprt0$(OEXT) : $(ARCH)/dllprt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(ARCH)/dllprt0.as
|
||||
ifneq ($(findstring $(ARCH),aarch64 x86_64),)
|
||||
CPUBITS=64
|
||||
else
|
||||
CPUBITS=32
|
||||
endif
|
||||
prt0$(OEXT) : prt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) --defsym CPU$(CPUBITS)=1 prt0.as
|
||||
dllprt0$(OEXT) : dllprt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) --defsym CPU$(CPUBITS)=1 dllprt0.as
|
||||
$(SYSTEMUNIT)$(PPUEXT) : $(LINUXINC)/$(SYSTEMUNIT).pp $(SYSDEPS)
|
||||
$(COMPILER) $(FPC_SYSTEM_OPT) -Us -Sg $(LINUXINC)/$(SYSTEMUNIT).pp
|
||||
uuchar$(PPUEXT): $(SYSTEMUNIT)$(PPUEXT) $(INC)/uuchar.pp
|
||||
|
@ -65,8 +65,11 @@ SYSINIT_UNITS=
|
||||
|
||||
LOADERS=prt0 dllprt0
|
||||
|
||||
ifeq ($(findstring $(ARCH),i386 x86_64 arm),$(ARCH))
|
||||
CPU_UNITS=cpu
|
||||
endif
|
||||
ifeq ($(ARCH),i386)
|
||||
CPU_UNITS=cpu mmx
|
||||
CPU_UNITS+=mmx
|
||||
endif
|
||||
|
||||
SYSTEMUNIT=system
|
||||
@ -107,16 +110,21 @@ ifeq ($(ARCH),mipsel)
|
||||
ASTARGET=-mips32 -KPIC
|
||||
endif
|
||||
|
||||
ifneq ($(findstring $(ARCH),aarch64 x86_64),)
|
||||
CPUBITS=64
|
||||
else
|
||||
CPUBITS=32
|
||||
endif
|
||||
|
||||
#
|
||||
# Loaders
|
||||
#
|
||||
|
||||
prt0$(OEXT) : $(ARCH)/prt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) $(ARCH)/prt0.as
|
||||
prt0$(OEXT) : prt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)prt0$(OEXT) --defsym CPU$(CPUBITS)=1 prt0.as
|
||||
|
||||
dllprt0$(OEXT) : $(ARCH)/dllprt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) $(ARCH)/dllprt0.as
|
||||
dllprt0$(OEXT) : dllprt0.as
|
||||
$(AS) $(ASTARGET) -o $(UNITTARGETDIRPREFIX)dllprt0$(OEXT) --defsym CPU$(CPUBITS)=1 dllprt0.as
|
||||
|
||||
#
|
||||
# $(SYSTEMUNIT) Units ($(SYSTEMUNIT), Objpas, Strings)
|
||||
|
247
rtl/android/aarch64/sysnr.inc
Normal file
247
rtl/android/aarch64/sysnr.inc
Normal file
@ -0,0 +1,247 @@
|
||||
// Available syscalls for arm64-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
syscall_nr_io_setup = 0;
|
||||
syscall_nr_io_destroy = 1;
|
||||
syscall_nr_io_submit = 2;
|
||||
syscall_nr_io_cancel = 3;
|
||||
syscall_nr_io_getevents = 4;
|
||||
syscall_nr_setxattr = 5;
|
||||
syscall_nr_lsetxattr = 6;
|
||||
syscall_nr_fsetxattr = 7;
|
||||
syscall_nr_getxattr = 8;
|
||||
syscall_nr_lgetxattr = 9;
|
||||
syscall_nr_fgetxattr = 10;
|
||||
syscall_nr_listxattr = 11;
|
||||
syscall_nr_llistxattr = 12;
|
||||
syscall_nr_flistxattr = 13;
|
||||
syscall_nr_removexattr = 14;
|
||||
syscall_nr_lremovexattr = 15;
|
||||
syscall_nr_fremovexattr = 16;
|
||||
syscall_nr_getcwd = 17;
|
||||
syscall_nr_eventfd2 = 19;
|
||||
syscall_nr_eventfd = syscall_nr_eventfd2;
|
||||
syscall_nr_epoll_create1 = 20;
|
||||
syscall_nr_epoll_ctl = 21;
|
||||
syscall_nr_epoll_pwait = 22;
|
||||
syscall_nr_dup = 23;
|
||||
syscall_nr_dup3 = 24;
|
||||
syscall_nr_fcntl = 25;
|
||||
syscall_nr_inotify_init1 = 26;
|
||||
syscall_nr_inotify_add_watch = 27;
|
||||
syscall_nr_inotify_rm_watch = 28;
|
||||
syscall_nr_ioctl = 29;
|
||||
syscall_nr_ioprio_set = 30;
|
||||
syscall_nr_ioprio_get = 31;
|
||||
syscall_nr_flock = 32;
|
||||
syscall_nr_mknodat = 33;
|
||||
syscall_nr_mkdirat = 34;
|
||||
syscall_nr_unlinkat = 35;
|
||||
syscall_nr_symlinkat = 36;
|
||||
syscall_nr_linkat = 37;
|
||||
syscall_nr_renameat = 38;
|
||||
syscall_nr_pivot_root = 41;
|
||||
syscall_nr_statfs = 43;
|
||||
syscall_nr_fstatfs = 44;
|
||||
syscall_nr_truncate = 45;
|
||||
syscall_nr_ftruncate = 46;
|
||||
syscall_nr_ftruncate64 = syscall_nr_ftruncate;
|
||||
syscall_nr_fallocate = 47;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_faccessat = 48;
|
||||
syscall_nr_chdir = 49;
|
||||
syscall_nr_fchdir = 50;
|
||||
syscall_nr_fchmod = 52;
|
||||
syscall_nr_fchmodat = 53;
|
||||
syscall_nr_fchownat = 54;
|
||||
syscall_nr_fchown = 55;
|
||||
syscall_nr_openat = 56;
|
||||
syscall_nr_close = 57;
|
||||
syscall_nr_pipe2 = 59;
|
||||
syscall_nr_quotactl = 60;
|
||||
syscall_nr_getdents64 = 61;
|
||||
syscall_nr_lseek = 62;
|
||||
syscall_nr_read = 63;
|
||||
syscall_nr_write = 64;
|
||||
syscall_nr_readv = 65;
|
||||
syscall_nr_writev = 66;
|
||||
syscall_nr_pread64 = 67;
|
||||
syscall_nr_pwrite64 = 68;
|
||||
syscall_nr_preadv = 69;
|
||||
syscall_nr_pwritev = 70;
|
||||
syscall_nr_sendfile = 71;
|
||||
syscall_nr_pselect6 = 72;
|
||||
syscall_nr_ppoll = 73;
|
||||
syscall_nr_signalfd4 = 74;
|
||||
syscall_nr_vmsplice = 75;
|
||||
syscall_nr_splice = 76;
|
||||
syscall_nr_tee = 77;
|
||||
syscall_nr_readlinkat = 78;
|
||||
syscall_nr_newfstatat = 79;
|
||||
syscall_nr_fstatat = syscall_nr_newfstatat;
|
||||
syscall_nr_fstatat64 = syscall_nr_newfstatat;
|
||||
syscall_nr_fstat = 80;
|
||||
syscall_nr_fstat64 = syscall_nr_fstat;
|
||||
syscall_nr_sync = 81;
|
||||
syscall_nr_fsync = 82;
|
||||
syscall_nr_fdatasync = 83;
|
||||
syscall_nr_sync_file_range = 84;
|
||||
syscall_nr_timerfd_create = 85;
|
||||
syscall_nr_timerfd_settime = 86;
|
||||
syscall_nr_timerfd_gettime = 87;
|
||||
syscall_nr_utimensat = 88;
|
||||
syscall_nr_capget = 90;
|
||||
syscall_nr_capset = 91;
|
||||
syscall_nr_personality = 92;
|
||||
syscall_nr_exit = 93;
|
||||
syscall_nr_exit_group = 94;
|
||||
syscall_nr_waitid = 95;
|
||||
syscall_nr_set_tid_address = 96;
|
||||
syscall_nr_unshare = 97;
|
||||
syscall_nr_futex = 98;
|
||||
syscall_nr_nanosleep = 101;
|
||||
syscall_nr_getitimer = 102;
|
||||
syscall_nr_setitimer = 103;
|
||||
syscall_nr_timer_create = 107;
|
||||
syscall_nr_timer_gettime = 108;
|
||||
syscall_nr_timer_getoverrun = 109;
|
||||
syscall_nr_timer_settime = 110;
|
||||
syscall_nr_timer_delete = 111;
|
||||
syscall_nr_clock_gettime = 113;
|
||||
syscall_nr_clock_getres = 114;
|
||||
syscall_nr_clock_nanosleep = 115;
|
||||
syscall_nr_ptrace = 117;
|
||||
syscall_nr_sched_setparam = 118;
|
||||
syscall_nr_sched_setscheduler = 119;
|
||||
syscall_nr_sched_getscheduler = 120;
|
||||
syscall_nr_sched_getparam = 121;
|
||||
syscall_nr_sched_setaffinity = 122;
|
||||
syscall_nr_sched_getaffinity = 123;
|
||||
syscall_nr_sched_yield = 124;
|
||||
syscall_nr_sched_get_priority_max = 125;
|
||||
syscall_nr_sched_get_priority_min = 126;
|
||||
syscall_nr_sched_rr_get_interval = 127;
|
||||
syscall_nr_restart_syscall = 128;
|
||||
syscall_nr_kill = 129;
|
||||
syscall_nr_tkill = 130;
|
||||
syscall_nr_tgkill = 131;
|
||||
syscall_nr_sigaltstack = 132;
|
||||
syscall_nr_rt_sigsuspend = 133;
|
||||
syscall_nr_rt_sigaction = 134;
|
||||
syscall_nr_rt_sigprocmask = 135;
|
||||
syscall_nr_rt_sigpending = 136;
|
||||
syscall_nr_rt_sigtimedwait = 137;
|
||||
syscall_nr_rt_sigqueueinfo = 138;
|
||||
syscall_nr_rt_sigreturn = 139;
|
||||
syscall_nr_setpriority = 140;
|
||||
syscall_nr_getpriority = 141;
|
||||
syscall_nr_setregid = 143;
|
||||
syscall_nr_setresuid = 147;
|
||||
syscall_nr_getresuid = 148;
|
||||
syscall_nr_getresgid = 150;
|
||||
syscall_nr_times = 153;
|
||||
syscall_nr_setpgid = 154;
|
||||
syscall_nr_getpgid = 155;
|
||||
syscall_nr_getsid = 156;
|
||||
syscall_nr_setsid = 157;
|
||||
syscall_nr_getgroups = 158;
|
||||
syscall_nr_uname = 160;
|
||||
syscall_nr_getrlimit = 163;
|
||||
syscall_nr_setrlimit = 164;
|
||||
syscall_nr_getrusage = 165;
|
||||
syscall_nr_umask = 166;
|
||||
syscall_nr_prctl = 167;
|
||||
syscall_nr_getcpu = 168;
|
||||
syscall_nr_gettimeofday = 169;
|
||||
syscall_nr_getpid = 172;
|
||||
syscall_nr_getppid = 173;
|
||||
syscall_nr_getuid = 174;
|
||||
syscall_nr_geteuid = 175;
|
||||
syscall_nr_getgid = 176;
|
||||
syscall_nr_getegid = 177;
|
||||
syscall_nr_gettid = 178;
|
||||
syscall_nr_sysinfo = 179;
|
||||
syscall_nr_socket = 198;
|
||||
syscall_nr_socketpair = 199;
|
||||
syscall_nr_bind = 200;
|
||||
syscall_nr_listen = 201;
|
||||
syscall_nr_connect = 203;
|
||||
syscall_nr_getsockname = 204;
|
||||
syscall_nr_getpeername = 205;
|
||||
syscall_nr_sendto = 206;
|
||||
syscall_nr_recvfrom = 207;
|
||||
syscall_nr_setsockopt = 208;
|
||||
syscall_nr_getsockopt = 209;
|
||||
syscall_nr_shutdown = 210;
|
||||
syscall_nr_sendmsg = 211;
|
||||
syscall_nr_recvmsg = 212;
|
||||
syscall_nr_readahead = 213;
|
||||
syscall_nr_brk = 214;
|
||||
syscall_nr_munmap = 215;
|
||||
syscall_nr_mremap = 216;
|
||||
syscall_nr_clone = 220;
|
||||
syscall_nr_execve = 221;
|
||||
syscall_nr_mmap = 222;
|
||||
syscall_nr_mmap64 = syscall_nr_mmap;
|
||||
syscall_nr_fadvise64 = 223;
|
||||
syscall_nr_mprotect = 226;
|
||||
syscall_nr_msync = 227;
|
||||
syscall_nr_mlock = 228;
|
||||
syscall_nr_munlock = 229;
|
||||
syscall_nr_mlockall = 230;
|
||||
syscall_nr_munlockall = 231;
|
||||
syscall_nr_mincore = 232;
|
||||
syscall_nr_madvise = 233;
|
||||
syscall_nr_rt_tgsigqueueinfo = 240;
|
||||
syscall_nr_perf_event_open = 241;
|
||||
syscall_nr_accept4 = 242;
|
||||
syscall_nr_recvmmsg = 243;
|
||||
syscall_nr_wait4 = 260;
|
||||
syscall_nr_prlimit64 = 261;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 267;
|
||||
syscall_nr_setns = 268;
|
||||
syscall_nr_sendmmsg = 269;
|
||||
syscall_nr_process_vm_readv = 270;
|
||||
syscall_nr_process_vm_writev = 271;
|
||||
syscall_nr_sched_setattr = 274;
|
||||
syscall_nr_sched_getattr = 275;
|
||||
syscall_nr_renameat2 = 276;
|
||||
syscall_nr_seccomp = 277;
|
||||
syscall_nr_getrandom = 278;
|
||||
syscall_nr_memfd_create = 279;
|
||||
syscall_nr_execveat = 281;
|
||||
syscall_nr_mlock2 = 284;
|
||||
syscall_nr_copy_file_range = 285;
|
||||
syscall_nr_preadv2 = 286;
|
||||
syscall_nr_pwritev2 = 287;
|
||||
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_umount2 = 39 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_mount = 40 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 51 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 89 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 105 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 106 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 112 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_syslog = 116 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 116 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 142 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 144 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 145 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 146 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 149 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 151 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 152 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 159 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 161 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 162 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 170 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 171 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 224 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 225 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 266 deprecated 'This syscall is blocked on Android 8+';
|
@ -1,98 +0,0 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2013 by Yury Sidorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Shared library startup code for Free Pascal. Android-ARM target.
|
||||
#
|
||||
|
||||
.file "dllprt0.as"
|
||||
.text
|
||||
.globl FPC_SHARED_LIB_START
|
||||
.type FPC_SHARED_LIB_START,#function
|
||||
FPC_SHARED_LIB_START:
|
||||
mov ip, sp
|
||||
stmfd sp!,{fp, ip, lr, pc}
|
||||
sub fp, ip, #4
|
||||
|
||||
/* Get GOT */
|
||||
ldr r3,.L_GOT1
|
||||
.LPIC1:
|
||||
add r3,pc,r3
|
||||
|
||||
/* Save initial stackpointer */
|
||||
ldr ip,.L__stkptr
|
||||
ldr ip,[r3, ip]
|
||||
str sp,[ip]
|
||||
|
||||
/* Get environment info from libc */
|
||||
ldr ip,.Lenviron
|
||||
ldr ip,[r3, ip]
|
||||
ldr r0,[ip]
|
||||
/* Check if environment is NULL */
|
||||
cmp r0,#0
|
||||
ldreq r0,.LEmptyEnv
|
||||
ldreq r0,[r3, r0]
|
||||
ldr ip,.Loperatingsystem_parameter_envp
|
||||
ldr ip,[r3, ip]
|
||||
str r0,[ip]
|
||||
|
||||
/* Call main */
|
||||
bl FPC_LIB_MAIN_ANDROID
|
||||
/* Call library init */
|
||||
bl FPC_LIB_INIT_ANDROID
|
||||
|
||||
ldmea fp, {fp, sp, pc}
|
||||
|
||||
.L_GOT1:
|
||||
.long _GLOBAL_OFFSET_TABLE_-.LPIC1-8
|
||||
.L__stkptr:
|
||||
.word __stkptr(GOT)
|
||||
.Lenviron:
|
||||
.word environ(GOT)
|
||||
.LEmptyEnv:
|
||||
.word EmptyEnv(GOT)
|
||||
.Loperatingsystem_parameter_envp:
|
||||
.word operatingsystem_parameter_envp(GOT)
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.globl _haltproc
|
||||
.type _haltproc,#function
|
||||
_haltproc:
|
||||
.globl _haltproc_eabi
|
||||
.type _haltproc_eabi,#function
|
||||
_haltproc_eabi:
|
||||
/* Simply call libc exit(). _haltproc has the same declaration as exit. */
|
||||
bl exit
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.data
|
||||
.comm __stkptr,4
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
operatingsystem_parameter_argc:
|
||||
.global operatingsystem_parameter_argc
|
||||
.long 1
|
||||
operatingsystem_parameter_argv:
|
||||
.global operatingsystem_parameter_argv
|
||||
.long EmptyCmdLine
|
||||
EmptyCmdLine:
|
||||
.long EmptyCmdStr
|
||||
EmptyCmdStr:
|
||||
.ascii "\0"
|
||||
EmptyEnv:
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.section .init_array, "aw"
|
||||
.long FPC_SHARED_LIB_START
|
@ -1,110 +0,0 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2013 by Yury Sidorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Program startup code for Free Pascal. Android-ARM target.
|
||||
#
|
||||
|
||||
/* At this entry point, most registers' values are unspecified, except:
|
||||
|
||||
sp The stack contains the arguments and environment:
|
||||
0(sp) argc
|
||||
4(sp) argv[0]
|
||||
...
|
||||
(4*argc)(sp) NULL
|
||||
(4*(argc+1))(sp) envp[0]
|
||||
...
|
||||
NULL
|
||||
*/
|
||||
|
||||
/*
|
||||
In our entry point we should save pointers to cmd line arguments
|
||||
and environment vars, then pass control to libc startup code.
|
||||
It will call "PASCALMAIN" via alias "main".
|
||||
*/
|
||||
|
||||
.text
|
||||
.globl _fpc_start
|
||||
.type _fpc_start,#function
|
||||
_fpc_start:
|
||||
/* Get GOT */
|
||||
ldr r3,.L_GOT1
|
||||
.LPIC1:
|
||||
add r3,pc,r3
|
||||
|
||||
/* Clear the frame pointer since this is the outermost frame. */
|
||||
mov fp, #0
|
||||
/* Save initial stackpointer */
|
||||
ldr ip,.L__stkptr
|
||||
ldr ip,[r3, ip]
|
||||
str sp,[ip]
|
||||
mov r0,sp
|
||||
/* Pop argc off the stack and save a pointer to argv */
|
||||
ldmia r0!, {r1}
|
||||
ldr ip,.Loperatingsystem_parameter_argc
|
||||
ldr ip,[r3, ip]
|
||||
str r1,[ip]
|
||||
ldr ip,.Loperatingsystem_parameter_argv
|
||||
ldr ip,[r3, ip]
|
||||
str r0,[ip]
|
||||
|
||||
/* calc envp */
|
||||
add r1,r1,#1
|
||||
add r1,r0,r1,LSL #2
|
||||
ldr ip,.Loperatingsystem_parameter_envp
|
||||
ldr ip,[r3, ip]
|
||||
str r1,[ip]
|
||||
|
||||
/* Finally go to libc startup code. It will call "PASCALMAIN" via alias "main" */
|
||||
ldr ip,.L_start
|
||||
ldr ip,[r3, ip]
|
||||
bx ip
|
||||
|
||||
.L_GOT1:
|
||||
.long _GLOBAL_OFFSET_TABLE_-.LPIC1-8
|
||||
.L__stkptr:
|
||||
.word __stkptr(GOT)
|
||||
.L_start:
|
||||
.word _start(GOT)
|
||||
.Loperatingsystem_parameter_argc:
|
||||
.word operatingsystem_parameter_argc(GOT)
|
||||
.Loperatingsystem_parameter_argv:
|
||||
.word operatingsystem_parameter_argv(GOT)
|
||||
.Loperatingsystem_parameter_envp:
|
||||
.word operatingsystem_parameter_envp(GOT)
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.globl _haltproc
|
||||
.type _haltproc,#function
|
||||
_haltproc:
|
||||
.globl _haltproc_eabi
|
||||
.type _haltproc_eabi,#function
|
||||
_haltproc_eabi:
|
||||
/* Simply call libc exit(). _haltproc has the same declaration as exit. */
|
||||
bl exit
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.data
|
||||
/* Define a symbol for the first piece of initialized data. */
|
||||
.globl __data_start
|
||||
__data_start:
|
||||
.long 0
|
||||
.weak data_start
|
||||
data_start = __data_start
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.bss
|
||||
.comm __stkptr,4
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
@ -1,217 +1,286 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2017 by Yuriy Sydorov,
|
||||
member of the Free Pascal development team.
|
||||
|
||||
Syscall nrs for arm-android
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
// Available syscalls for arm-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
__NR_SYSCALL_BASE = 0;
|
||||
syscall_nr_restart_syscall = 0;
|
||||
syscall_nr_exit = 1;
|
||||
syscall_nr_fork = 2;
|
||||
syscall_nr_read = 3;
|
||||
syscall_nr_write = 4;
|
||||
syscall_nr_open = 5;
|
||||
syscall_nr_close = 6;
|
||||
syscall_nr_creat = 8;
|
||||
syscall_nr_unlink = 10;
|
||||
syscall_nr_execve = 11;
|
||||
syscall_nr_chdir = 12;
|
||||
syscall_nr_lseek = 19;
|
||||
syscall_nr_getpid = 20;
|
||||
syscall_nr_getuid = 24;
|
||||
syscall_nr_ptrace = 26;
|
||||
syscall_nr_access = 33;
|
||||
syscall_nr_sync = 36;
|
||||
syscall_nr_kill = 37;
|
||||
syscall_nr_rename = 38;
|
||||
syscall_nr_mkdir = 39;
|
||||
syscall_nr_dup = 41;
|
||||
syscall_nr_pipe = 42;
|
||||
syscall_nr_times = 43;
|
||||
syscall_nr_brk = 45;
|
||||
syscall_nr_ioctl = 54;
|
||||
syscall_nr_fcntl = 55;
|
||||
syscall_nr_setpgid = 57;
|
||||
syscall_nr_umask = 60;
|
||||
syscall_nr_dup2 = 63;
|
||||
syscall_nr_getppid = 64;
|
||||
syscall_nr_setsid = 66;
|
||||
syscall_nr_sigaction = 67;
|
||||
syscall_nr_setrlimit = 75;
|
||||
syscall_nr_getrusage = 77;
|
||||
syscall_nr_gettimeofday = 78;
|
||||
syscall_nr_readlink = 85;
|
||||
syscall_nr_munmap = 91;
|
||||
syscall_nr_truncate = 92;
|
||||
syscall_nr_fchmod = 94;
|
||||
syscall_nr_getpriority = 96;
|
||||
syscall_nr_setpriority = 97;
|
||||
syscall_nr_setitimer = 104;
|
||||
syscall_nr_getitimer = 105;
|
||||
syscall_nr_wait4 = 114;
|
||||
syscall_nr_sysinfo = 116;
|
||||
syscall_nr_fsync = 118;
|
||||
syscall_nr_sigreturn = 119;
|
||||
syscall_nr_clone = 120;
|
||||
syscall_nr_uname = 122;
|
||||
syscall_nr_mprotect = 125;
|
||||
syscall_nr_quotactl = 131;
|
||||
syscall_nr_getpgid = 132;
|
||||
syscall_nr_fchdir = 133;
|
||||
syscall_nr_personality = 136;
|
||||
syscall_nr__llseek = 140;
|
||||
syscall_nr_getdents = 141;
|
||||
syscall_nr__newselect = 142;
|
||||
syscall_nr_flock = 143;
|
||||
syscall_nr_msync = 144;
|
||||
syscall_nr_readv = 145;
|
||||
syscall_nr_writev = 146;
|
||||
syscall_nr_getsid = 147;
|
||||
syscall_nr_fdatasync = 148;
|
||||
syscall_nr_mlock = 150;
|
||||
syscall_nr_munlock = 151;
|
||||
syscall_nr_mlockall = 152;
|
||||
syscall_nr_munlockall = 153;
|
||||
syscall_nr_sched_setparam = 154;
|
||||
syscall_nr_sched_getparam = 155;
|
||||
syscall_nr_sched_setscheduler = 156;
|
||||
syscall_nr_sched_getscheduler = 157;
|
||||
syscall_nr_sched_yield = 158;
|
||||
syscall_nr_sched_get_priority_max = 159;
|
||||
syscall_nr_sched_get_priority_min = 160;
|
||||
syscall_nr_sched_rr_get_interval = 161;
|
||||
syscall_nr_nanosleep = 162;
|
||||
syscall_nr_mremap = 163;
|
||||
syscall_nr_poll = 168;
|
||||
syscall_nr_prctl = 172;
|
||||
syscall_nr_rt_sigreturn = 173;
|
||||
syscall_nr_rt_sigaction = 174;
|
||||
syscall_nr_rt_sigprocmask = 175;
|
||||
syscall_nr_rt_sigpending = 176;
|
||||
syscall_nr_rt_sigtimedwait = 177;
|
||||
syscall_nr_rt_sigqueueinfo = 178;
|
||||
syscall_nr_rt_sigsuspend = 179;
|
||||
syscall_nr_pread64 = 180;
|
||||
syscall_nr_pwrite64 = 181;
|
||||
syscall_nr_getcwd = 183;
|
||||
syscall_nr_capget = 184;
|
||||
syscall_nr_capset = 185;
|
||||
syscall_nr_sigaltstack = 186;
|
||||
syscall_nr_sendfile = 187;
|
||||
syscall_nr_vfork = 190;
|
||||
syscall_nr_ugetrlimit = 191;
|
||||
syscall_nr_getrlimit = syscall_nr_ugetrlimit;
|
||||
syscall_nr_mmap2 = 192;
|
||||
syscall_nr_truncate64 = 193;
|
||||
syscall_nr_ftruncate64 = 194;
|
||||
syscall_nr_stat64 = 195;
|
||||
syscall_nr_lstat64 = 196;
|
||||
syscall_nr_fstat64 = 197;
|
||||
syscall_nr_fstat = syscall_nr_fstat64;
|
||||
syscall_nr_getuid32 = 199;
|
||||
syscall_nr_getgid32 = 200;
|
||||
syscall_nr_getgid = syscall_nr_getgid32;
|
||||
syscall_nr_geteuid32 = 201;
|
||||
syscall_nr_geteuid = syscall_nr_geteuid32;
|
||||
syscall_nr_getegid32 = 202;
|
||||
syscall_nr_getegid = syscall_nr_getegid32;
|
||||
syscall_nr_setregid32 = 204;
|
||||
syscall_nr_setregid = syscall_nr_setregid32;
|
||||
syscall_nr_getgroups32 = 205;
|
||||
syscall_nr_getgroups = syscall_nr_getgroups32;
|
||||
syscall_nr_fchown32 = 207;
|
||||
syscall_nr_fchown = syscall_nr_fchown32;
|
||||
syscall_nr_setresuid32 = 208;
|
||||
syscall_nr_setresuid = syscall_nr_setresuid32;
|
||||
syscall_nr_getresuid32 = 209;
|
||||
syscall_nr_getresuid = syscall_nr_getresuid32;
|
||||
syscall_nr_getresgid32 = 211;
|
||||
syscall_nr_getresgid = syscall_nr_getresgid32;
|
||||
syscall_nr_getdents64 = 217;
|
||||
syscall_nr_mincore = 219;
|
||||
syscall_nr_madvise = 220;
|
||||
syscall_nr_fcntl64 = 221;
|
||||
syscall_nr_gettid = 224;
|
||||
syscall_nr_readahead = 225;
|
||||
syscall_nr_setxattr = 226;
|
||||
syscall_nr_lsetxattr = 227;
|
||||
syscall_nr_fsetxattr = 228;
|
||||
syscall_nr_getxattr = 229;
|
||||
syscall_nr_lgetxattr = 230;
|
||||
syscall_nr_fgetxattr = 231;
|
||||
syscall_nr_listxattr = 232;
|
||||
syscall_nr_llistxattr = 233;
|
||||
syscall_nr_flistxattr = 234;
|
||||
syscall_nr_removexattr = 235;
|
||||
syscall_nr_lremovexattr = 236;
|
||||
syscall_nr_fremovexattr = 237;
|
||||
syscall_nr_tkill = 238;
|
||||
syscall_nr_sendfile64 = 239;
|
||||
syscall_nr_futex = 240;
|
||||
syscall_nr_sched_setaffinity = 241;
|
||||
syscall_nr_sched_getaffinity = 242;
|
||||
syscall_nr_io_setup = 243;
|
||||
syscall_nr_io_destroy = 244;
|
||||
syscall_nr_io_getevents = 245;
|
||||
syscall_nr_io_submit = 246;
|
||||
syscall_nr_io_cancel = 247;
|
||||
syscall_nr_exit_group = 248;
|
||||
syscall_nr_epoll_create = 250;
|
||||
syscall_nr_epoll_ctl = 251;
|
||||
syscall_nr_epoll_wait = 252;
|
||||
syscall_nr_remap_file_pages = 253;
|
||||
syscall_nr_set_tid_address = 256;
|
||||
syscall_nr_timer_create = 257;
|
||||
syscall_nr_timer_settime = 258;
|
||||
syscall_nr_timer_gettime = 259;
|
||||
syscall_nr_timer_getoverrun = 260;
|
||||
syscall_nr_timer_delete = 261;
|
||||
syscall_nr_clock_gettime = 263;
|
||||
syscall_nr_clock_getres = 264;
|
||||
syscall_nr_clock_nanosleep = 265;
|
||||
syscall_nr_statfs64 = 266;
|
||||
syscall_nr_fstatfs64 = 267;
|
||||
syscall_nr_tgkill = 268;
|
||||
syscall_nr_arm_fadvise64_64 = 270;
|
||||
syscall_nr_waitid = 280;
|
||||
syscall_nr_socket = 281;
|
||||
syscall_nr_bind = 282;
|
||||
syscall_nr_connect = 283;
|
||||
syscall_nr_listen = 284;
|
||||
syscall_nr_getsockname = 286;
|
||||
syscall_nr_getpeername = 287;
|
||||
syscall_nr_socketpair = 288;
|
||||
syscall_nr_sendto = 290;
|
||||
syscall_nr_recvfrom = 292;
|
||||
syscall_nr_shutdown = 293;
|
||||
syscall_nr_setsockopt = 294;
|
||||
syscall_nr_getsockopt = 295;
|
||||
syscall_nr_sendmsg = 296;
|
||||
syscall_nr_recvmsg = 297;
|
||||
syscall_nr_inotify_init = 316;
|
||||
syscall_nr_inotify_add_watch = 317;
|
||||
syscall_nr_inotify_rm_watch = 318;
|
||||
syscall_nr_openat = 322;
|
||||
syscall_nr_mkdirat = 323;
|
||||
syscall_nr_mknodat = 324;
|
||||
syscall_nr_fchownat = 325;
|
||||
syscall_nr_fstatat64 = 327;
|
||||
syscall_nr_fstatat = syscall_nr_fstatat64;
|
||||
syscall_nr_unlinkat = 328;
|
||||
syscall_nr_renameat = 329;
|
||||
syscall_nr_linkat = 330;
|
||||
syscall_nr_symlinkat = 331;
|
||||
syscall_nr_readlinkat = 332;
|
||||
syscall_nr_fchmodat = 333;
|
||||
syscall_nr_faccessat = 334;
|
||||
syscall_nr_pselect6 = 335;
|
||||
syscall_nr_ppoll = 336;
|
||||
syscall_nr_unshare = 337;
|
||||
syscall_nr_splice = 340;
|
||||
syscall_nr_sync_file_range2 = 341;
|
||||
syscall_nr_tee = 342;
|
||||
syscall_nr_vmsplice = 343;
|
||||
syscall_nr_getcpu = 345;
|
||||
syscall_nr_epoll_pwait = 346;
|
||||
syscall_nr_utimensat = 348;
|
||||
syscall_nr_timerfd_create = 350;
|
||||
syscall_nr_eventfd = 351;
|
||||
syscall_nr_fallocate = 352;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_timerfd_settime = 353;
|
||||
syscall_nr_timerfd_gettime = 354;
|
||||
syscall_nr_signalfd4 = 355;
|
||||
syscall_nr_eventfd2 = 356;
|
||||
syscall_nr_epoll_create1 = 357;
|
||||
syscall_nr_dup3 = 358;
|
||||
syscall_nr_pipe2 = 359;
|
||||
syscall_nr_inotify_init1 = 360;
|
||||
syscall_nr_preadv = 361;
|
||||
syscall_nr_pwritev = 362;
|
||||
syscall_nr_rt_tgsigqueueinfo = 363;
|
||||
syscall_nr_perf_event_open = 364;
|
||||
syscall_nr_recvmmsg = 365;
|
||||
syscall_nr_accept4 = 366;
|
||||
syscall_nr_prlimit64 = 369;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 373;
|
||||
syscall_nr_sendmmsg = 374;
|
||||
syscall_nr_setns = 375;
|
||||
syscall_nr_process_vm_readv = 376;
|
||||
syscall_nr_process_vm_writev = 377;
|
||||
syscall_nr_sched_setattr = 380;
|
||||
syscall_nr_sched_getattr = 381;
|
||||
syscall_nr_renameat2 = 382;
|
||||
syscall_nr_seccomp = 383;
|
||||
syscall_nr_getrandom = 384;
|
||||
syscall_nr_memfd_create = 385;
|
||||
syscall_nr_execveat = 387;
|
||||
syscall_nr_mlock2 = 390;
|
||||
syscall_nr_copy_file_range = 391;
|
||||
syscall_nr_preadv2 = 392;
|
||||
syscall_nr_pwritev2 = 393;
|
||||
syscall_nr___ARM_NR_cacheflush = 983042;
|
||||
syscall_nr_cacheflush = syscall_nr___ARM_NR_cacheflush;
|
||||
syscall_nr___ARM_NR_set_tls = 983045;
|
||||
|
||||
syscall_nr_exit = (__NR_SYSCALL_BASE + 1);
|
||||
syscall_nr_fork = (__NR_SYSCALL_BASE + 2);
|
||||
syscall_nr_read = (__NR_SYSCALL_BASE + 3);
|
||||
syscall_nr_write = (__NR_SYSCALL_BASE + 4);
|
||||
syscall_nr_open = (__NR_SYSCALL_BASE + 5);
|
||||
syscall_nr_close = (__NR_SYSCALL_BASE + 6);
|
||||
syscall_nr_link = (__NR_SYSCALL_BASE + 9);
|
||||
syscall_nr_unlink = (__NR_SYSCALL_BASE + 10);
|
||||
syscall_nr_execve = (__NR_SYSCALL_BASE + 11);
|
||||
syscall_nr_chdir = (__NR_SYSCALL_BASE + 12);
|
||||
syscall_nr_mknod = (__NR_SYSCALL_BASE + 14);
|
||||
syscall_nr_chmod = (__NR_SYSCALL_BASE + 15);
|
||||
syscall_nr_lseek = (__NR_SYSCALL_BASE + 19);
|
||||
syscall_nr_getpid = (__NR_SYSCALL_BASE + 20);
|
||||
syscall_nr_mount = (__NR_SYSCALL_BASE + 21);
|
||||
syscall_nr_ptrace = (__NR_SYSCALL_BASE + 26);
|
||||
syscall_nr_pause = (__NR_SYSCALL_BASE + 29);
|
||||
syscall_nr_access = (__NR_SYSCALL_BASE + 33);
|
||||
syscall_nr_sync = (__NR_SYSCALL_BASE + 36);
|
||||
syscall_nr_rename = (__NR_SYSCALL_BASE + 38);
|
||||
syscall_nr_mkdir = (__NR_SYSCALL_BASE + 39);
|
||||
syscall_nr_rmdir = (__NR_SYSCALL_BASE + 40);
|
||||
syscall_nr_dup = (__NR_SYSCALL_BASE + 41);
|
||||
syscall_nr_times = (__NR_SYSCALL_BASE + 43);
|
||||
syscall_nr_brk = (__NR_SYSCALL_BASE + 45);
|
||||
syscall_nr_acct = (__NR_SYSCALL_BASE + 51);
|
||||
syscall_nr_umount2 = (__NR_SYSCALL_BASE + 52);
|
||||
syscall_nr_ioctl = (__NR_SYSCALL_BASE + 54);
|
||||
syscall_nr_fcntl = (__NR_SYSCALL_BASE + 55);
|
||||
syscall_nr_setpgid = (__NR_SYSCALL_BASE + 57);
|
||||
syscall_nr_umask = (__NR_SYSCALL_BASE + 60);
|
||||
syscall_nr_chroot = (__NR_SYSCALL_BASE + 61);
|
||||
syscall_nr_dup2 = (__NR_SYSCALL_BASE + 63);
|
||||
syscall_nr_getppid = (__NR_SYSCALL_BASE + 64);
|
||||
syscall_nr_setsid = (__NR_SYSCALL_BASE + 66);
|
||||
syscall_nr_sigaction = (__NR_SYSCALL_BASE + 67);
|
||||
syscall_nr_sigpending = (__NR_SYSCALL_BASE + 73);
|
||||
syscall_nr_setrlimit = (__NR_SYSCALL_BASE + 75);
|
||||
syscall_nr_getrusage = (__NR_SYSCALL_BASE + 77);
|
||||
syscall_nr_gettimeofday = (__NR_SYSCALL_BASE + 78);
|
||||
syscall_nr_settimeofday = (__NR_SYSCALL_BASE + 79);
|
||||
syscall_nr_symlink = (__NR_SYSCALL_BASE + 83);
|
||||
syscall_nr_readlink = (__NR_SYSCALL_BASE + 85);
|
||||
syscall_nr_reboot = (__NR_SYSCALL_BASE + 88);
|
||||
syscall_nr_munmap = (__NR_SYSCALL_BASE + 91);
|
||||
syscall_nr_truncate = (__NR_SYSCALL_BASE + 92);
|
||||
syscall_nr_ftruncate = (__NR_SYSCALL_BASE + 93);
|
||||
syscall_nr_fchmod = (__NR_SYSCALL_BASE + 94);
|
||||
syscall_nr_getpriority = (__NR_SYSCALL_BASE + 96);
|
||||
syscall_nr_setpriority = (__NR_SYSCALL_BASE + 97);
|
||||
syscall_nr_syslog = (__NR_SYSCALL_BASE + 103);
|
||||
syscall_nr_setitimer = (__NR_SYSCALL_BASE + 104);
|
||||
syscall_nr_getitimer = (__NR_SYSCALL_BASE + 105);
|
||||
syscall_nr_wait4 = (__NR_SYSCALL_BASE + 114);
|
||||
syscall_nr_sysinfo = (__NR_SYSCALL_BASE + 116);
|
||||
syscall_nr_fsync = (__NR_SYSCALL_BASE + 118);
|
||||
syscall_nr_clone = (__NR_SYSCALL_BASE + 120);
|
||||
syscall_nr_uname = (__NR_SYSCALL_BASE + 122);
|
||||
syscall_nr_mprotect = (__NR_SYSCALL_BASE + 125);
|
||||
syscall_nr_sigprocmask = (__NR_SYSCALL_BASE + 126);
|
||||
syscall_nr_init_module = (__NR_SYSCALL_BASE + 128);
|
||||
syscall_nr_delete_module = (__NR_SYSCALL_BASE + 129);
|
||||
syscall_nr_getpgid = (__NR_SYSCALL_BASE + 132);
|
||||
syscall_nr_fchdir = (__NR_SYSCALL_BASE + 133);
|
||||
syscall_nr_personality = (__NR_SYSCALL_BASE + 136);
|
||||
syscall_nr__llseek = (__NR_SYSCALL_BASE + 140);
|
||||
syscall_nr__newselect = (__NR_SYSCALL_BASE + 142);
|
||||
syscall_nr_flock = (__NR_SYSCALL_BASE + 143);
|
||||
syscall_nr_msync = (__NR_SYSCALL_BASE + 144);
|
||||
syscall_nr_readv = (__NR_SYSCALL_BASE + 145);
|
||||
syscall_nr_writev = (__NR_SYSCALL_BASE + 146);
|
||||
syscall_nr_perf_event_open = (__NR_SYSCALL_BASE + 364);
|
||||
|
||||
syscall_nr_kill = (__NR_SYSCALL_BASE + 37);
|
||||
syscall_nr_exit_group = (__NR_SYSCALL_BASE + 248);
|
||||
syscall_nr_waitid = (__NR_SYSCALL_BASE + 280);
|
||||
syscall_nr_setuid32 = (__NR_SYSCALL_BASE + 213);
|
||||
syscall_nr_getuid32 = (__NR_SYSCALL_BASE + 199);
|
||||
syscall_nr_getgid32 = (__NR_SYSCALL_BASE + 200);
|
||||
syscall_nr_geteuid32 = (__NR_SYSCALL_BASE + 201);
|
||||
syscall_nr_getegid32 = (__NR_SYSCALL_BASE + 202);
|
||||
syscall_nr_getresuid32 = (__NR_SYSCALL_BASE + 209);
|
||||
syscall_nr_getresgid32 = (__NR_SYSCALL_BASE + 211);
|
||||
syscall_nr_gettid = (__NR_SYSCALL_BASE + 224);
|
||||
syscall_nr_readahead = (__NR_SYSCALL_BASE + 225);
|
||||
syscall_nr_getgroups32 = (__NR_SYSCALL_BASE + 205);
|
||||
syscall_nr_setgid32 = (__NR_SYSCALL_BASE + 214);
|
||||
syscall_nr_setreuid32 = (__NR_SYSCALL_BASE + 203);
|
||||
syscall_nr_setresuid32 = (__NR_SYSCALL_BASE + 208);
|
||||
syscall_nr_setresgid32 = (__NR_SYSCALL_BASE + 210);
|
||||
syscall_nr_ugetrlimit = (__NR_SYSCALL_BASE + 191);
|
||||
syscall_nr_setgroups32 = (__NR_SYSCALL_BASE + 206);
|
||||
syscall_nr_vfork = (__NR_SYSCALL_BASE + 190);
|
||||
syscall_nr_setregid32 = (__NR_SYSCALL_BASE + 204);
|
||||
syscall_nr_prctl = (__NR_SYSCALL_BASE + 172);
|
||||
syscall_nr_capget = (__NR_SYSCALL_BASE + 184);
|
||||
syscall_nr_capset = (__NR_SYSCALL_BASE + 185);
|
||||
syscall_nr_sigaltstack = (__NR_SYSCALL_BASE + 186);
|
||||
syscall_nr_pread64 = (__NR_SYSCALL_BASE + 180);
|
||||
syscall_nr_pwrite64 = (__NR_SYSCALL_BASE + 181);
|
||||
syscall_nr_openat = (__NR_SYSCALL_BASE + 322);
|
||||
syscall_nr_mmap2 = (__NR_SYSCALL_BASE + 192);
|
||||
syscall_nr_mremap = (__NR_SYSCALL_BASE + 163);
|
||||
syscall_nr_madvise = (__NR_SYSCALL_BASE + 220);
|
||||
syscall_nr_mlock = (__NR_SYSCALL_BASE + 150);
|
||||
syscall_nr_munlock = (__NR_SYSCALL_BASE + 151);
|
||||
syscall_nr_mincore = (__NR_SYSCALL_BASE + 219);
|
||||
syscall_nr_pipe = (__NR_SYSCALL_BASE + 42);
|
||||
syscall_nr_pipe2 = (__NR_SYSCALL_BASE + 359);
|
||||
syscall_nr_ftruncate64 = (__NR_SYSCALL_BASE + 194);
|
||||
syscall_nr_getdents64 = (__NR_SYSCALL_BASE + 217);
|
||||
syscall_nr_fdatasync = (__NR_SYSCALL_BASE + 148);
|
||||
syscall_nr_fchown32 = (__NR_SYSCALL_BASE + 207);
|
||||
syscall_nr_fcntl64 = (__NR_SYSCALL_BASE + 221);
|
||||
syscall_nr_fstatfs64 = (__NR_SYSCALL_BASE + 267);
|
||||
syscall_nr_sendfile = (__NR_SYSCALL_BASE + 187);
|
||||
syscall_nr_fstatat64 = (__NR_SYSCALL_BASE + 327);
|
||||
syscall_nr_mkdirat = (__NR_SYSCALL_BASE + 323);
|
||||
syscall_nr_fchownat = (__NR_SYSCALL_BASE + 325);
|
||||
syscall_nr_fchmodat = (__NR_SYSCALL_BASE + 333);
|
||||
syscall_nr_renameat = (__NR_SYSCALL_BASE + 329);
|
||||
syscall_nr_fsetxattr = (__NR_SYSCALL_BASE + 228);
|
||||
syscall_nr_fgetxattr = (__NR_SYSCALL_BASE + 231);
|
||||
syscall_nr_flistxattr = (__NR_SYSCALL_BASE + 234);
|
||||
syscall_nr_fremovexattr = (__NR_SYSCALL_BASE + 237);
|
||||
syscall_nr_unlinkat = (__NR_SYSCALL_BASE + 328);
|
||||
syscall_nr_chown32 = (__NR_SYSCALL_BASE + 212);
|
||||
syscall_nr_lchown32 = (__NR_SYSCALL_BASE + 198);
|
||||
syscall_nr_fstat64 = (__NR_SYSCALL_BASE + 197);
|
||||
syscall_nr_stat64 = (__NR_SYSCALL_BASE + 195);
|
||||
syscall_nr_lstat64 = (__NR_SYSCALL_BASE + 196);
|
||||
syscall_nr_getcwd = (__NR_SYSCALL_BASE + 183);
|
||||
syscall_nr_faccessat = (__NR_SYSCALL_BASE + 334);
|
||||
syscall_nr_setxattr = (__NR_SYSCALL_BASE + 226);
|
||||
syscall_nr_lsetxattr = (__NR_SYSCALL_BASE + 227);
|
||||
syscall_nr_getxattr = (__NR_SYSCALL_BASE + 229);
|
||||
syscall_nr_lgetxattr = (__NR_SYSCALL_BASE + 230);
|
||||
syscall_nr_listxattr = (__NR_SYSCALL_BASE + 232);
|
||||
syscall_nr_llistxattr = (__NR_SYSCALL_BASE + 233);
|
||||
syscall_nr_removexattr = (__NR_SYSCALL_BASE + 235);
|
||||
syscall_nr_lremovexattr = (__NR_SYSCALL_BASE + 236);
|
||||
syscall_nr_statfs64 = (__NR_SYSCALL_BASE + 266);
|
||||
syscall_nr_unshare = (__NR_SYSCALL_BASE + 337);
|
||||
syscall_nr_nanosleep = (__NR_SYSCALL_BASE + 162);
|
||||
syscall_nr_clock_gettime = (__NR_SYSCALL_BASE + 263);
|
||||
syscall_nr_clock_settime = (__NR_SYSCALL_BASE + 262);
|
||||
syscall_nr_clock_getres = (__NR_SYSCALL_BASE + 264);
|
||||
syscall_nr_clock_nanosleep = (__NR_SYSCALL_BASE + 265);
|
||||
syscall_nr_timer_create = (__NR_SYSCALL_BASE + 257);
|
||||
syscall_nr_timer_settime = (__NR_SYSCALL_BASE + 258);
|
||||
syscall_nr_timer_gettime = (__NR_SYSCALL_BASE + 259);
|
||||
syscall_nr_timer_getoverrun = (__NR_SYSCALL_BASE + 260);
|
||||
syscall_nr_timer_delete = (__NR_SYSCALL_BASE + 261);
|
||||
syscall_nr_utimes = (__NR_SYSCALL_BASE + 269);
|
||||
syscall_nr_utimensat = (__NR_SYSCALL_BASE + 348);
|
||||
syscall_nr_sigsuspend = (__NR_SYSCALL_BASE + 72);
|
||||
syscall_nr_rt_sigaction = (__NR_SYSCALL_BASE + 174);
|
||||
syscall_nr_rt_sigprocmask = (__NR_SYSCALL_BASE + 175);
|
||||
syscall_nr_rt_sigtimedwait = (__NR_SYSCALL_BASE + 177);
|
||||
syscall_nr_socket = (__NR_SYSCALL_BASE + 281);
|
||||
syscall_nr_socketpair = (__NR_SYSCALL_BASE + 288);
|
||||
syscall_nr_bind = (__NR_SYSCALL_BASE + 282);
|
||||
syscall_nr_connect = (__NR_SYSCALL_BASE + 283);
|
||||
syscall_nr_listen = (__NR_SYSCALL_BASE + 284);
|
||||
syscall_nr_accept = (__NR_SYSCALL_BASE + 285);
|
||||
syscall_nr_getsockname = (__NR_SYSCALL_BASE + 286);
|
||||
syscall_nr_getpeername = (__NR_SYSCALL_BASE + 287);
|
||||
syscall_nr_sendto = (__NR_SYSCALL_BASE + 290);
|
||||
syscall_nr_recvfrom = (__NR_SYSCALL_BASE + 292);
|
||||
syscall_nr_shutdown = (__NR_SYSCALL_BASE + 293);
|
||||
syscall_nr_setsockopt = (__NR_SYSCALL_BASE + 294);
|
||||
syscall_nr_getsockopt = (__NR_SYSCALL_BASE + 295);
|
||||
syscall_nr_sendmsg = (__NR_SYSCALL_BASE + 296);
|
||||
syscall_nr_recvmsg = (__NR_SYSCALL_BASE + 297);
|
||||
syscall_nr_sched_setscheduler = (__NR_SYSCALL_BASE + 156);
|
||||
syscall_nr_sched_getscheduler = (__NR_SYSCALL_BASE + 157);
|
||||
syscall_nr_sched_yield = (__NR_SYSCALL_BASE + 158);
|
||||
syscall_nr_sched_setparam = (__NR_SYSCALL_BASE + 154);
|
||||
syscall_nr_sched_getparam = (__NR_SYSCALL_BASE + 155);
|
||||
syscall_nr_sched_get_priority_max = (__NR_SYSCALL_BASE + 159);
|
||||
syscall_nr_sched_get_priority_min = (__NR_SYSCALL_BASE + 160);
|
||||
syscall_nr_sched_rr_get_interval = (__NR_SYSCALL_BASE + 161);
|
||||
syscall_nr_sched_setaffinity = (__NR_SYSCALL_BASE + 241);
|
||||
syscall_nr_sched_getaffinity = (__NR_SYSCALL_BASE + 242);
|
||||
syscall_nr_getcpu = (__NR_SYSCALL_BASE + 345);
|
||||
syscall_nr_ioprio_set = (__NR_SYSCALL_BASE + 314);
|
||||
syscall_nr_ioprio_get = (__NR_SYSCALL_BASE + 315);
|
||||
syscall_nr_futex = (__NR_SYSCALL_BASE + 240);
|
||||
syscall_nr_epoll_create = (__NR_SYSCALL_BASE + 250);
|
||||
syscall_nr_epoll_ctl = (__NR_SYSCALL_BASE + 251);
|
||||
syscall_nr_epoll_wait = (__NR_SYSCALL_BASE + 252);
|
||||
syscall_nr_inotify_init = (__NR_SYSCALL_BASE + 316);
|
||||
syscall_nr_inotify_add_watch = (__NR_SYSCALL_BASE + 317);
|
||||
syscall_nr_inotify_rm_watch = (__NR_SYSCALL_BASE + 318);
|
||||
syscall_nr_poll = (__NR_SYSCALL_BASE + 168);
|
||||
syscall_nr_eventfd2 = (__NR_SYSCALL_BASE + 356);
|
||||
syscall_nr_ARM_set_tls = (__NR_SYSCALL_BASE + 983045);
|
||||
syscall_nr_ARM_cacheflush = (__NR_SYSCALL_BASE + 983042);
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_mount = 21 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 51 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_umount2 = 52 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 61 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 74 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 79 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 87 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 88 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_syslog = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 115 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 121 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 124 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 128 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 129 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 138 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 139 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid32 = 203 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 203 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups32 = 206 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 206 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid32 = 210 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 210 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid32 = 213 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 213 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid32 = 214 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 214 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 262 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 372 deprecated 'This syscall is blocked on Android 8+';
|
||||
|
@ -50,12 +50,14 @@ var
|
||||
u_strToLower: function (dest: PUnicodeChar; destCapacity: int32_t; src: PUnicodeChar; srcLength: int32_t; locale: PAnsiChar; var pErrorCode: UErrorCode): int32_t; cdecl;
|
||||
u_strCompare: function (s1: PUnicodeChar; length1: int32_t; s2: PUnicodeChar; length2: int32_t; codePointOrder: UBool): int32_t; cdecl;
|
||||
u_strCaseCompare: function (s1: PUnicodeChar; length1: int32_t; s2: PUnicodeChar; length2: int32_t; options: uint32_t; var pErrorCode: UErrorCode): int32_t; cdecl;
|
||||
u_getDataDirectory: function(): PAnsiChar; cdecl;
|
||||
u_setDataDirectory: procedure(directory: PAnsiChar); cdecl;
|
||||
u_init: procedure(var status: UErrorCode); cdecl;
|
||||
|
||||
ucol_open: function(loc: PAnsiChar; var status: UErrorCode): PUCollator; cdecl;
|
||||
ucol_close: procedure (coll: PUCollator); cdecl;
|
||||
ucol_strcoll: function (coll: PUCollator; source: PUnicodeChar; sourceLength: int32_t; target: PUnicodeChar; targetLength: int32_t): int32_t; cdecl;
|
||||
ucol_setStrength: procedure (coll: PUCollator; strength: int32_t); cdecl;
|
||||
u_errorName: function (code: UErrorCode): PAnsiChar; cdecl;
|
||||
|
||||
threadvar
|
||||
ThreadDataInited: boolean;
|
||||
@ -63,16 +65,37 @@ threadvar
|
||||
LastCP: TSystemCodePage;
|
||||
DefColl: PUCollator;
|
||||
|
||||
function MaskExceptions: dword;
|
||||
begin
|
||||
{$ifdef cpux86_64}
|
||||
Result:=GetMXCSR;
|
||||
SetMXCSR(Result or %0000000010000000 {MM_MaskInvalidOp} or %0001000000000000 {MM_MaskPrecision});
|
||||
{$else}
|
||||
Result:=0;
|
||||
{$endif cpux86_64}
|
||||
end;
|
||||
|
||||
procedure UnmaskExceptions(oldmask: dword);
|
||||
begin
|
||||
{$ifdef cpux86_64}
|
||||
SetMXCSR(oldmask);
|
||||
{$endif cpux86_64}
|
||||
end;
|
||||
|
||||
function OpenConverter(const name: ansistring): PUConverter;
|
||||
var
|
||||
err: UErrorCode;
|
||||
oldmask: dword;
|
||||
begin
|
||||
{ ucnv_open() must be called with some SSE exception masked on x86_64-android. }
|
||||
oldmask:=MaskExceptions;
|
||||
err:=0;
|
||||
Result:=ucnv_open(PAnsiChar(name), err);
|
||||
if Result <> nil then begin
|
||||
ucnv_setSubstChars(Result, '?', 1, err);
|
||||
ucnv_setFallback(Result, True);
|
||||
end;
|
||||
UnmaskExceptions(oldmask);
|
||||
end;
|
||||
|
||||
procedure InitThreadData;
|
||||
@ -465,6 +488,9 @@ begin
|
||||
if LastConv <> nil then
|
||||
ucnv_close(LastConv);
|
||||
|
||||
if LibVer = '_3_8' then
|
||||
exit; // ICU v3.8 on Android 1.5-2.1 is buggy and can't be unloaded properly
|
||||
|
||||
if hlibICU <> 0 then begin
|
||||
UnloadLibrary(hlibICU);
|
||||
hlibICU:=0;
|
||||
@ -475,7 +501,7 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean; [public, alias: 'CWSTRING_GET_ICU_PROC'];
|
||||
function GetIcuProc(const Name: AnsiString; out ProcPtr; libId: longint = 0): boolean;
|
||||
var
|
||||
p: pointer;
|
||||
hLib: TLibHandle;
|
||||
@ -496,12 +522,14 @@ end;
|
||||
|
||||
function LoadICU: boolean;
|
||||
const
|
||||
ICUver: array [1..9] of ansistring = ('3_8', '4_2', '44', '46', '48', '50', '51', '53', '55');
|
||||
ICUver: array [1..12] of ansistring = ('3_8', '4_2', '44', '46', '48', '50', '51', '53', '55', '56', '58', '60');
|
||||
TestProcName = 'ucnv_open';
|
||||
|
||||
var
|
||||
i: longint;
|
||||
s: ansistring;
|
||||
dir: PAnsiChar;
|
||||
err: UErrorCode;
|
||||
begin
|
||||
Result:=False;
|
||||
{$ifdef android}
|
||||
@ -543,6 +571,7 @@ begin
|
||||
// Trying versionless name
|
||||
if GetProcedureAddress(hlibICU, TestProcName) = nil then begin
|
||||
// Unable to get ICU version
|
||||
SysLogWrite(ANDROID_LOG_ERROR, 'cwstring: Unable to get ICU version.');
|
||||
UnloadICU;
|
||||
exit;
|
||||
end;
|
||||
@ -558,18 +587,31 @@ begin
|
||||
if not GetIcuProc('u_strToLower', u_strToLower) then exit;
|
||||
if not GetIcuProc('u_strCompare', u_strCompare) then exit;
|
||||
if not GetIcuProc('u_strCaseCompare', u_strCaseCompare) then exit;
|
||||
|
||||
if not GetIcuProc('u_errorName', u_errorName) then exit;
|
||||
if not GetIcuProc('u_getDataDirectory', u_getDataDirectory) then exit;
|
||||
if not GetIcuProc('u_setDataDirectory', u_setDataDirectory) then exit;
|
||||
if not GetIcuProc('u_init', u_init) then exit;
|
||||
|
||||
if not GetIcuProc('ucol_open', ucol_open, 1) then exit;
|
||||
if not GetIcuProc('ucol_close', ucol_close, 1) then exit;
|
||||
if not GetIcuProc('ucol_strcoll', ucol_strcoll, 1) then exit;
|
||||
if not GetIcuProc('ucol_setStrength', ucol_setStrength, 1) then exit;
|
||||
|
||||
// Checking if ICU data dir is set
|
||||
dir:=u_getDataDirectory();
|
||||
if (dir = nil) or (dir^ = #0) then
|
||||
u_setDataDirectory('/system/usr/icu');
|
||||
|
||||
err:=0;
|
||||
u_init(err);
|
||||
|
||||
Result:=True;
|
||||
end;
|
||||
|
||||
var
|
||||
oldm: TUnicodeStringManager;
|
||||
{$ifdef android}
|
||||
SysGetIcuProc: pointer; external name 'ANDROID_GET_ICU_PROC';
|
||||
{$endif android}
|
||||
|
||||
initialization
|
||||
GetUnicodeStringManager(oldm);
|
||||
@ -578,6 +620,7 @@ initialization
|
||||
if LoadICU then begin
|
||||
SetCWideStringManager;
|
||||
{$ifdef android}
|
||||
SysGetIcuProc:=@GetIcuProc;
|
||||
SetStdIOCodePages;
|
||||
{$endif android}
|
||||
end;
|
||||
|
25
rtl/android/dllprt0.as
Normal file
25
rtl/android/dllprt0.as
Normal file
@ -0,0 +1,25 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2018 by Yuriy Sydorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Shared library startup code for Free Pascal. Android target.
|
||||
#
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.section .init_array, "aw"
|
||||
|
||||
.ifdef CPU64
|
||||
.quad FPC_LIB_START_ANDROID
|
||||
.else
|
||||
.long FPC_LIB_START_ANDROID
|
||||
.endif
|
@ -1,92 +0,0 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2013 by Yury Sidorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Shared library startup code for Free Pascal. Android-i386 target.
|
||||
#
|
||||
|
||||
.file "dllprt0.as"
|
||||
.text
|
||||
.globl FPC_SHARED_LIB_START
|
||||
.type FPC_SHARED_LIB_START,@function
|
||||
FPC_SHARED_LIB_START:
|
||||
pushl %ebp
|
||||
movl %esp,%ebp
|
||||
/* Align the stack to a 16 byte boundary */
|
||||
andl $~15, %esp
|
||||
|
||||
/* Save ebx */
|
||||
pushl %ebx
|
||||
|
||||
/* GOT init */
|
||||
call fpc_geteipasebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_,%ebx
|
||||
|
||||
/* Save initial stackpointer */
|
||||
movl __stkptr@GOT(%ebx),%eax
|
||||
movl %esp,(%eax)
|
||||
|
||||
/* Get environment info from libc */
|
||||
movl environ@GOT(%ebx),%eax
|
||||
movl (%eax),%eax
|
||||
/* Check if environment is NULL */
|
||||
test %eax,%eax
|
||||
jne env_ok
|
||||
movl EmptyEnv@GOT(%ebx),%eax
|
||||
env_ok:
|
||||
movl operatingsystem_parameter_envp@GOT(%ebx),%edx
|
||||
movl %eax,(%edx)
|
||||
|
||||
/* Restore ebx */
|
||||
popl %ebx
|
||||
|
||||
/* Call main */
|
||||
call FPC_LIB_MAIN_ANDROID@PLT
|
||||
/* Call library init */
|
||||
call FPC_LIB_INIT_ANDROID@PLT
|
||||
|
||||
leave
|
||||
ret
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
/* GOT init */
|
||||
call fpc_geteipasebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_,%ebx
|
||||
/* Jump to libc exit(). _haltproc has the same declaration as exit. */
|
||||
jmp exit@PLT
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.data
|
||||
.comm __stkptr,4
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
operatingsystem_parameter_argc:
|
||||
.global operatingsystem_parameter_argc
|
||||
.long 1
|
||||
operatingsystem_parameter_argv:
|
||||
.global operatingsystem_parameter_argv
|
||||
.long EmptyCmdLine
|
||||
EmptyCmdLine:
|
||||
.long EmptyCmdStr
|
||||
EmptyCmdStr:
|
||||
.ascii "\0"
|
||||
EmptyEnv:
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.section .init_array, "aw"
|
||||
.long FPC_SHARED_LIB_START
|
@ -1,98 +0,0 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2013 by Yury Sidorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Program startup code for Free Pascal. Android-i386 target.
|
||||
#
|
||||
# Stack layout at program start:
|
||||
#
|
||||
# nil
|
||||
# envn
|
||||
# ....
|
||||
# .... ENVIRONMENT VARIABLES
|
||||
# env1
|
||||
# env0
|
||||
# nil
|
||||
# argn
|
||||
# ....
|
||||
# .... COMMAND LINE OPTIONS
|
||||
# arg1
|
||||
# arg0
|
||||
# argc <--- esp
|
||||
#
|
||||
|
||||
/*
|
||||
In our entry point we should save pointers to cmd line arguments
|
||||
and environment vars, then pass control to libc startup code.
|
||||
It will call "PASCALMAIN" via alias "main".
|
||||
*/
|
||||
.file "prt0.as"
|
||||
.text
|
||||
.align 4
|
||||
.globl _fpc_start
|
||||
.type _fpc_start,@function
|
||||
_fpc_start:
|
||||
/* GOT init */
|
||||
call fpc_geteipasebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_,%ebx
|
||||
/* Clear the frame pointer since this is the outermost frame. */
|
||||
xorl %ebp,%ebp
|
||||
/* Save initial stackpointer */
|
||||
movl __stkptr@GOT(%ebx),%eax
|
||||
movl %esp,(%eax)
|
||||
/* First locate the start of the environment variables */
|
||||
/* Get argc in ecx */
|
||||
movl (%esp),%ecx
|
||||
/* Save argc */
|
||||
movl operatingsystem_parameter_argc@GOT(%ebx),%eax
|
||||
movl %ecx,(%eax)
|
||||
/* Get argv pointer in edx */
|
||||
leal 4(%esp),%edx
|
||||
/* Save argv */
|
||||
movl operatingsystem_parameter_argv@GOT(%ebx),%eax
|
||||
movl %edx,(%eax)
|
||||
/* The start of the environment is: esp+ecx*4+12 */
|
||||
leal 12(%esp,%ecx,4),%edx
|
||||
/* Save envp */
|
||||
movl operatingsystem_parameter_envp@GOT(%ebx),%eax
|
||||
movl %edx,(%eax)
|
||||
|
||||
/* Finally go to libc startup code. It will call "PASCALMAIN" via alias "main". */
|
||||
/* No need to align stack since it will aligned by libc. */
|
||||
jmp _start
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.globl _haltproc
|
||||
.type _haltproc,@function
|
||||
_haltproc:
|
||||
/* GOT init */
|
||||
call fpc_geteipasebx
|
||||
addl $_GLOBAL_OFFSET_TABLE_,%ebx
|
||||
/* Jump to libc exit(). _haltproc has the same declaration as exit. */
|
||||
jmp exit@PLT
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.data
|
||||
/* Define a symbol for the first piece of initialized data. */
|
||||
.globl __data_start
|
||||
__data_start:
|
||||
.long 0
|
||||
.weak data_start
|
||||
data_start = __data_start
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.bss
|
||||
.comm __stkptr,4
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
@ -1,204 +1,270 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2017 by Yuriy Sydorov,
|
||||
member of the Free Pascal development team.
|
||||
|
||||
Syscall nrs for i386-android
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
// Available syscalls for x86-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
__NR_SYSCALL_BASE = 0;
|
||||
syscall_nr_restart_syscall = 0;
|
||||
syscall_nr_exit = 1;
|
||||
syscall_nr_fork = 2;
|
||||
syscall_nr_read = 3;
|
||||
syscall_nr_write = 4;
|
||||
syscall_nr_open = 5;
|
||||
syscall_nr_close = 6;
|
||||
syscall_nr_creat = 8;
|
||||
syscall_nr_unlink = 10;
|
||||
syscall_nr_execve = 11;
|
||||
syscall_nr_chdir = 12;
|
||||
syscall_nr_lseek = 19;
|
||||
syscall_nr_getpid = 20;
|
||||
syscall_nr_getuid = 24;
|
||||
syscall_nr_ptrace = 26;
|
||||
syscall_nr_access = 33;
|
||||
syscall_nr_sync = 36;
|
||||
syscall_nr_kill = 37;
|
||||
syscall_nr_rename = 38;
|
||||
syscall_nr_mkdir = 39;
|
||||
syscall_nr_dup = 41;
|
||||
syscall_nr_pipe = 42;
|
||||
syscall_nr_times = 43;
|
||||
syscall_nr_brk = 45;
|
||||
syscall_nr_ioctl = 54;
|
||||
syscall_nr_fcntl = 55;
|
||||
syscall_nr_setpgid = 57;
|
||||
syscall_nr_umask = 60;
|
||||
syscall_nr_dup2 = 63;
|
||||
syscall_nr_getppid = 64;
|
||||
syscall_nr_setsid = 66;
|
||||
syscall_nr_sigaction = 67;
|
||||
syscall_nr_setrlimit = 75;
|
||||
syscall_nr_getrusage = 77;
|
||||
syscall_nr_gettimeofday = 78;
|
||||
syscall_nr_readlink = 85;
|
||||
syscall_nr_mmap = 90;
|
||||
syscall_nr_mmap64 = syscall_nr_mmap;
|
||||
syscall_nr_munmap = 91;
|
||||
syscall_nr_truncate = 92;
|
||||
syscall_nr_fchmod = 94;
|
||||
syscall_nr_getpriority = 96;
|
||||
syscall_nr_setpriority = 97;
|
||||
syscall_nr_socketcall = 102;
|
||||
syscall_nr_setitimer = 104;
|
||||
syscall_nr_getitimer = 105;
|
||||
syscall_nr_wait4 = 114;
|
||||
syscall_nr_sysinfo = 116;
|
||||
syscall_nr_fsync = 118;
|
||||
syscall_nr_sigreturn = 119;
|
||||
syscall_nr_clone = 120;
|
||||
syscall_nr_uname = 122;
|
||||
syscall_nr_mprotect = 125;
|
||||
syscall_nr_quotactl = 131;
|
||||
syscall_nr_getpgid = 132;
|
||||
syscall_nr_fchdir = 133;
|
||||
syscall_nr_personality = 136;
|
||||
syscall_nr__llseek = 140;
|
||||
syscall_nr_getdents = 141;
|
||||
syscall_nr__newselect = 142;
|
||||
syscall_nr_flock = 143;
|
||||
syscall_nr_msync = 144;
|
||||
syscall_nr_readv = 145;
|
||||
syscall_nr_writev = 146;
|
||||
syscall_nr_getsid = 147;
|
||||
syscall_nr_fdatasync = 148;
|
||||
syscall_nr_mlock = 150;
|
||||
syscall_nr_munlock = 151;
|
||||
syscall_nr_mlockall = 152;
|
||||
syscall_nr_munlockall = 153;
|
||||
syscall_nr_sched_setparam = 154;
|
||||
syscall_nr_sched_getparam = 155;
|
||||
syscall_nr_sched_setscheduler = 156;
|
||||
syscall_nr_sched_getscheduler = 157;
|
||||
syscall_nr_sched_yield = 158;
|
||||
syscall_nr_sched_get_priority_max = 159;
|
||||
syscall_nr_sched_get_priority_min = 160;
|
||||
syscall_nr_sched_rr_get_interval = 161;
|
||||
syscall_nr_nanosleep = 162;
|
||||
syscall_nr_mremap = 163;
|
||||
syscall_nr_poll = 168;
|
||||
syscall_nr_prctl = 172;
|
||||
syscall_nr_rt_sigreturn = 173;
|
||||
syscall_nr_rt_sigaction = 174;
|
||||
syscall_nr_rt_sigprocmask = 175;
|
||||
syscall_nr_rt_sigpending = 176;
|
||||
syscall_nr_rt_sigtimedwait = 177;
|
||||
syscall_nr_rt_sigqueueinfo = 178;
|
||||
syscall_nr_rt_sigsuspend = 179;
|
||||
syscall_nr_pread64 = 180;
|
||||
syscall_nr_pwrite64 = 181;
|
||||
syscall_nr_getcwd = 183;
|
||||
syscall_nr_capget = 184;
|
||||
syscall_nr_capset = 185;
|
||||
syscall_nr_sigaltstack = 186;
|
||||
syscall_nr_sendfile = 187;
|
||||
syscall_nr_vfork = 190;
|
||||
syscall_nr_ugetrlimit = 191;
|
||||
syscall_nr_getrlimit = syscall_nr_ugetrlimit;
|
||||
syscall_nr_mmap2 = 192;
|
||||
syscall_nr_truncate64 = 193;
|
||||
syscall_nr_ftruncate64 = 194;
|
||||
syscall_nr_stat64 = 195;
|
||||
syscall_nr_lstat64 = 196;
|
||||
syscall_nr_fstat64 = 197;
|
||||
syscall_nr_fstat = syscall_nr_fstat64;
|
||||
syscall_nr_getuid32 = 199;
|
||||
syscall_nr_getgid32 = 200;
|
||||
syscall_nr_getgid = syscall_nr_getgid32;
|
||||
syscall_nr_geteuid32 = 201;
|
||||
syscall_nr_geteuid = syscall_nr_geteuid32;
|
||||
syscall_nr_getegid32 = 202;
|
||||
syscall_nr_getegid = syscall_nr_getegid32;
|
||||
syscall_nr_setregid32 = 204;
|
||||
syscall_nr_setregid = syscall_nr_setregid32;
|
||||
syscall_nr_getgroups32 = 205;
|
||||
syscall_nr_getgroups = syscall_nr_getgroups32;
|
||||
syscall_nr_fchown32 = 207;
|
||||
syscall_nr_fchown = syscall_nr_fchown32;
|
||||
syscall_nr_setresuid32 = 208;
|
||||
syscall_nr_setresuid = syscall_nr_setresuid32;
|
||||
syscall_nr_getresuid32 = 209;
|
||||
syscall_nr_getresuid = syscall_nr_getresuid32;
|
||||
syscall_nr_getresgid32 = 211;
|
||||
syscall_nr_getresgid = syscall_nr_getresgid32;
|
||||
syscall_nr_mincore = 218;
|
||||
syscall_nr_madvise = 219;
|
||||
syscall_nr_getdents64 = 220;
|
||||
syscall_nr_fcntl64 = 221;
|
||||
syscall_nr_gettid = 224;
|
||||
syscall_nr_readahead = 225;
|
||||
syscall_nr_setxattr = 226;
|
||||
syscall_nr_lsetxattr = 227;
|
||||
syscall_nr_fsetxattr = 228;
|
||||
syscall_nr_getxattr = 229;
|
||||
syscall_nr_lgetxattr = 230;
|
||||
syscall_nr_fgetxattr = 231;
|
||||
syscall_nr_listxattr = 232;
|
||||
syscall_nr_llistxattr = 233;
|
||||
syscall_nr_flistxattr = 234;
|
||||
syscall_nr_removexattr = 235;
|
||||
syscall_nr_lremovexattr = 236;
|
||||
syscall_nr_fremovexattr = 237;
|
||||
syscall_nr_tkill = 238;
|
||||
syscall_nr_sendfile64 = 239;
|
||||
syscall_nr_futex = 240;
|
||||
syscall_nr_sched_setaffinity = 241;
|
||||
syscall_nr_sched_getaffinity = 242;
|
||||
syscall_nr_set_thread_area = 243;
|
||||
syscall_nr_io_setup = 245;
|
||||
syscall_nr_io_destroy = 246;
|
||||
syscall_nr_io_getevents = 247;
|
||||
syscall_nr_io_submit = 248;
|
||||
syscall_nr_io_cancel = 249;
|
||||
syscall_nr_exit_group = 252;
|
||||
syscall_nr_epoll_create = 254;
|
||||
syscall_nr_epoll_ctl = 255;
|
||||
syscall_nr_epoll_wait = 256;
|
||||
syscall_nr_remap_file_pages = 257;
|
||||
syscall_nr_set_tid_address = 258;
|
||||
syscall_nr_timer_create = 259;
|
||||
syscall_nr_timer_settime = 260;
|
||||
syscall_nr_timer_gettime = 261;
|
||||
syscall_nr_timer_getoverrun = 262;
|
||||
syscall_nr_timer_delete = 263;
|
||||
syscall_nr_clock_gettime = 265;
|
||||
syscall_nr_clock_getres = 266;
|
||||
syscall_nr_clock_nanosleep = 267;
|
||||
syscall_nr_statfs64 = 268;
|
||||
syscall_nr_fstatfs64 = 269;
|
||||
syscall_nr_tgkill = 270;
|
||||
syscall_nr_fadvise64_64 = 272;
|
||||
syscall_nr_waitid = 284;
|
||||
syscall_nr_inotify_init = 291;
|
||||
syscall_nr_inotify_add_watch = 292;
|
||||
syscall_nr_inotify_rm_watch = 293;
|
||||
syscall_nr_openat = 295;
|
||||
syscall_nr_mkdirat = 296;
|
||||
syscall_nr_mknodat = 297;
|
||||
syscall_nr_fchownat = 298;
|
||||
syscall_nr_fstatat64 = 300;
|
||||
syscall_nr_fstatat = syscall_nr_fstatat64;
|
||||
syscall_nr_unlinkat = 301;
|
||||
syscall_nr_renameat = 302;
|
||||
syscall_nr_linkat = 303;
|
||||
syscall_nr_symlinkat = 304;
|
||||
syscall_nr_readlinkat = 305;
|
||||
syscall_nr_fchmodat = 306;
|
||||
syscall_nr_faccessat = 307;
|
||||
syscall_nr_pselect6 = 308;
|
||||
syscall_nr_ppoll = 309;
|
||||
syscall_nr_unshare = 310;
|
||||
syscall_nr_splice = 313;
|
||||
syscall_nr_sync_file_range = 314;
|
||||
syscall_nr_tee = 315;
|
||||
syscall_nr_vmsplice = 316;
|
||||
syscall_nr_getcpu = 318;
|
||||
syscall_nr_epoll_pwait = 319;
|
||||
syscall_nr_utimensat = 320;
|
||||
syscall_nr_timerfd_create = 322;
|
||||
syscall_nr_eventfd = 323;
|
||||
syscall_nr_fallocate = 324;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_timerfd_settime = 325;
|
||||
syscall_nr_timerfd_gettime = 326;
|
||||
syscall_nr_signalfd4 = 327;
|
||||
syscall_nr_eventfd2 = 328;
|
||||
syscall_nr_epoll_create1 = 329;
|
||||
syscall_nr_dup3 = 330;
|
||||
syscall_nr_pipe2 = 331;
|
||||
syscall_nr_inotify_init1 = 332;
|
||||
syscall_nr_preadv = 333;
|
||||
syscall_nr_pwritev = 334;
|
||||
syscall_nr_rt_tgsigqueueinfo = 335;
|
||||
syscall_nr_perf_event_open = 336;
|
||||
syscall_nr_prlimit64 = 340;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 344;
|
||||
syscall_nr_setns = 346;
|
||||
syscall_nr_process_vm_readv = 347;
|
||||
syscall_nr_process_vm_writev = 348;
|
||||
syscall_nr_sched_setattr = 351;
|
||||
syscall_nr_sched_getattr = 352;
|
||||
syscall_nr_renameat2 = 353;
|
||||
syscall_nr_seccomp = 354;
|
||||
syscall_nr_getrandom = 355;
|
||||
syscall_nr_memfd_create = 356;
|
||||
syscall_nr_execveat = 358;
|
||||
syscall_nr_mlock2 = 376;
|
||||
syscall_nr_copy_file_range = 377;
|
||||
syscall_nr_preadv2 = 378;
|
||||
syscall_nr_pwritev2 = 379;
|
||||
|
||||
syscall_nr_exit = (__NR_SYSCALL_BASE + 1);
|
||||
syscall_nr_fork = (__NR_SYSCALL_BASE + 2);
|
||||
syscall_nr_read = (__NR_SYSCALL_BASE + 3);
|
||||
syscall_nr_write = (__NR_SYSCALL_BASE + 4);
|
||||
syscall_nr_open = (__NR_SYSCALL_BASE + 5);
|
||||
syscall_nr_close = (__NR_SYSCALL_BASE + 6);
|
||||
syscall_nr_link = (__NR_SYSCALL_BASE + 9);
|
||||
syscall_nr_unlink = (__NR_SYSCALL_BASE + 10);
|
||||
syscall_nr_execve = (__NR_SYSCALL_BASE + 11);
|
||||
syscall_nr_chdir = (__NR_SYSCALL_BASE + 12);
|
||||
syscall_nr_mknod = (__NR_SYSCALL_BASE + 14);
|
||||
syscall_nr_chmod = (__NR_SYSCALL_BASE + 15);
|
||||
syscall_nr_lseek = (__NR_SYSCALL_BASE + 19);
|
||||
syscall_nr_getpid = (__NR_SYSCALL_BASE + 20);
|
||||
syscall_nr_mount = (__NR_SYSCALL_BASE + 21);
|
||||
syscall_nr_ptrace = (__NR_SYSCALL_BASE + 26);
|
||||
syscall_nr_pause = (__NR_SYSCALL_BASE + 29);
|
||||
syscall_nr_access = (__NR_SYSCALL_BASE + 33);
|
||||
syscall_nr_sync = (__NR_SYSCALL_BASE + 36);
|
||||
syscall_nr_rename = (__NR_SYSCALL_BASE + 38);
|
||||
syscall_nr_mkdir = (__NR_SYSCALL_BASE + 39);
|
||||
syscall_nr_rmdir = (__NR_SYSCALL_BASE + 40);
|
||||
syscall_nr_dup = (__NR_SYSCALL_BASE + 41);
|
||||
syscall_nr_times = (__NR_SYSCALL_BASE + 43);
|
||||
syscall_nr_brk = (__NR_SYSCALL_BASE + 45);
|
||||
syscall_nr_acct = (__NR_SYSCALL_BASE + 51);
|
||||
syscall_nr_umount2 = (__NR_SYSCALL_BASE + 52);
|
||||
syscall_nr_ioctl = (__NR_SYSCALL_BASE + 54);
|
||||
syscall_nr_fcntl = (__NR_SYSCALL_BASE + 55);
|
||||
syscall_nr_setpgid = (__NR_SYSCALL_BASE + 57);
|
||||
syscall_nr_umask = (__NR_SYSCALL_BASE + 60);
|
||||
syscall_nr_chroot = (__NR_SYSCALL_BASE + 61);
|
||||
syscall_nr_dup2 = (__NR_SYSCALL_BASE + 63);
|
||||
syscall_nr_getppid = (__NR_SYSCALL_BASE + 64);
|
||||
syscall_nr_setsid = (__NR_SYSCALL_BASE + 66);
|
||||
syscall_nr_sigaction = (__NR_SYSCALL_BASE + 67);
|
||||
syscall_nr_sigpending = (__NR_SYSCALL_BASE + 73);
|
||||
syscall_nr_setrlimit = (__NR_SYSCALL_BASE + 75);
|
||||
syscall_nr_getrusage = (__NR_SYSCALL_BASE + 77);
|
||||
syscall_nr_gettimeofday = (__NR_SYSCALL_BASE + 78);
|
||||
syscall_nr_settimeofday = (__NR_SYSCALL_BASE + 79);
|
||||
syscall_nr_symlink = (__NR_SYSCALL_BASE + 83);
|
||||
syscall_nr_readlink = (__NR_SYSCALL_BASE + 85);
|
||||
syscall_nr_reboot = (__NR_SYSCALL_BASE + 88);
|
||||
syscall_nr_munmap = (__NR_SYSCALL_BASE + 91);
|
||||
syscall_nr_truncate = (__NR_SYSCALL_BASE + 92);
|
||||
syscall_nr_ftruncate = (__NR_SYSCALL_BASE + 93);
|
||||
syscall_nr_fchmod = (__NR_SYSCALL_BASE + 94);
|
||||
syscall_nr_getpriority = (__NR_SYSCALL_BASE + 96);
|
||||
syscall_nr_setpriority = (__NR_SYSCALL_BASE + 97);
|
||||
syscall_nr_syslog = (__NR_SYSCALL_BASE + 103);
|
||||
syscall_nr_setitimer = (__NR_SYSCALL_BASE + 104);
|
||||
syscall_nr_getitimer = (__NR_SYSCALL_BASE + 105);
|
||||
syscall_nr_wait4 = (__NR_SYSCALL_BASE + 114);
|
||||
syscall_nr_sysinfo = (__NR_SYSCALL_BASE + 116);
|
||||
syscall_nr_fsync = (__NR_SYSCALL_BASE + 118);
|
||||
syscall_nr_clone = (__NR_SYSCALL_BASE + 120);
|
||||
syscall_nr_uname = (__NR_SYSCALL_BASE + 122);
|
||||
syscall_nr_mprotect = (__NR_SYSCALL_BASE + 125);
|
||||
syscall_nr_sigprocmask = (__NR_SYSCALL_BASE + 126);
|
||||
syscall_nr_init_module = (__NR_SYSCALL_BASE + 128);
|
||||
syscall_nr_delete_module = (__NR_SYSCALL_BASE + 129);
|
||||
syscall_nr_getpgid = (__NR_SYSCALL_BASE + 132);
|
||||
syscall_nr_fchdir = (__NR_SYSCALL_BASE + 133);
|
||||
syscall_nr_personality = (__NR_SYSCALL_BASE + 136);
|
||||
syscall_nr__llseek = (__NR_SYSCALL_BASE + 140);
|
||||
syscall_nr__newselect = (__NR_SYSCALL_BASE + 142);
|
||||
syscall_nr_flock = (__NR_SYSCALL_BASE + 143);
|
||||
syscall_nr_msync = (__NR_SYSCALL_BASE + 144);
|
||||
syscall_nr_readv = (__NR_SYSCALL_BASE + 145);
|
||||
syscall_nr_writev = (__NR_SYSCALL_BASE + 146);
|
||||
syscall_nr_perf_event_open = (__NR_SYSCALL_BASE + 364);
|
||||
|
||||
syscall_nr_waitpid = (__NR_SYSCALL_BASE + 7);
|
||||
syscall_nr_kill = (__NR_SYSCALL_BASE + 37);
|
||||
syscall_nr_pipe = (__NR_SYSCALL_BASE + 42);
|
||||
syscall_nr_sigsuspend = (__NR_SYSCALL_BASE + 72);
|
||||
syscall_nr_socketcall = (__NR_SYSCALL_BASE + 102);
|
||||
syscall_nr_fdatasync = (__NR_SYSCALL_BASE + 148);
|
||||
syscall_nr_mlock = (__NR_SYSCALL_BASE + 150);
|
||||
syscall_nr_munlock = (__NR_SYSCALL_BASE + 151);
|
||||
syscall_nr_sched_setparam = (__NR_SYSCALL_BASE + 154);
|
||||
syscall_nr_sched_getparam = (__NR_SYSCALL_BASE + 155);
|
||||
syscall_nr_sched_setscheduler = (__NR_SYSCALL_BASE + 156);
|
||||
syscall_nr_sched_getscheduler = (__NR_SYSCALL_BASE + 157);
|
||||
syscall_nr_sched_yield = (__NR_SYSCALL_BASE + 158);
|
||||
syscall_nr_sched_get_priority_max = (__NR_SYSCALL_BASE + 159);
|
||||
syscall_nr_sched_get_priority_min = (__NR_SYSCALL_BASE + 160);
|
||||
syscall_nr_sched_rr_get_interval = (__NR_SYSCALL_BASE + 161);
|
||||
syscall_nr_nanosleep = (__NR_SYSCALL_BASE + 162);
|
||||
syscall_nr_mremap = (__NR_SYSCALL_BASE + 163);
|
||||
syscall_nr_poll = (__NR_SYSCALL_BASE + 168);
|
||||
syscall_nr_prctl = (__NR_SYSCALL_BASE + 172);
|
||||
syscall_nr_rt_sigaction = (__NR_SYSCALL_BASE + 174);
|
||||
syscall_nr_rt_sigprocmask = (__NR_SYSCALL_BASE + 175);
|
||||
syscall_nr_rt_sigtimedwait = (__NR_SYSCALL_BASE + 177);
|
||||
syscall_nr_pread64 = (__NR_SYSCALL_BASE + 180);
|
||||
syscall_nr_pwrite64 = (__NR_SYSCALL_BASE + 181);
|
||||
syscall_nr_getcwd = (__NR_SYSCALL_BASE + 183);
|
||||
syscall_nr_capget = (__NR_SYSCALL_BASE + 184);
|
||||
syscall_nr_capset = (__NR_SYSCALL_BASE + 185);
|
||||
syscall_nr_sigaltstack = (__NR_SYSCALL_BASE + 186);
|
||||
syscall_nr_sendfile = (__NR_SYSCALL_BASE + 187);
|
||||
syscall_nr_ugetrlimit = (__NR_SYSCALL_BASE + 191);
|
||||
syscall_nr_mmap2 = (__NR_SYSCALL_BASE + 192);
|
||||
syscall_nr_ftruncate64 = (__NR_SYSCALL_BASE + 194);
|
||||
syscall_nr_stat64 = (__NR_SYSCALL_BASE + 195);
|
||||
syscall_nr_lstat64 = (__NR_SYSCALL_BASE + 196);
|
||||
syscall_nr_fstat64 = (__NR_SYSCALL_BASE + 197);
|
||||
syscall_nr_lchown32 = (__NR_SYSCALL_BASE + 198);
|
||||
syscall_nr_getuid32 = (__NR_SYSCALL_BASE + 199);
|
||||
syscall_nr_getgid32 = (__NR_SYSCALL_BASE + 200);
|
||||
syscall_nr_geteuid32 = (__NR_SYSCALL_BASE + 201);
|
||||
syscall_nr_getegid32 = (__NR_SYSCALL_BASE + 202);
|
||||
syscall_nr_setreuid32 = (__NR_SYSCALL_BASE + 203);
|
||||
syscall_nr_setregid32 = (__NR_SYSCALL_BASE + 204);
|
||||
syscall_nr_getgroups32 = (__NR_SYSCALL_BASE + 205);
|
||||
syscall_nr_setgroups32 = (__NR_SYSCALL_BASE + 206);
|
||||
syscall_nr_fchown32 = (__NR_SYSCALL_BASE + 207);
|
||||
syscall_nr_setresuid32 = (__NR_SYSCALL_BASE + 208);
|
||||
syscall_nr_getresuid32 = (__NR_SYSCALL_BASE + 209);
|
||||
syscall_nr_setresgid32 = (__NR_SYSCALL_BASE + 210);
|
||||
syscall_nr_getresgid32 = (__NR_SYSCALL_BASE + 211);
|
||||
syscall_nr_chown32 = (__NR_SYSCALL_BASE + 212);
|
||||
syscall_nr_setuid32 = (__NR_SYSCALL_BASE + 213);
|
||||
syscall_nr_setgid32 = (__NR_SYSCALL_BASE + 214);
|
||||
syscall_nr_mincore = (__NR_SYSCALL_BASE + 218);
|
||||
syscall_nr_madvise = (__NR_SYSCALL_BASE + 219);
|
||||
syscall_nr_getdents64 = (__NR_SYSCALL_BASE + 220);
|
||||
syscall_nr_fcntl64 = (__NR_SYSCALL_BASE + 221);
|
||||
syscall_nr_gettid = (__NR_SYSCALL_BASE + 224);
|
||||
syscall_nr_readahead = (__NR_SYSCALL_BASE + 225);
|
||||
syscall_nr_setxattr = (__NR_SYSCALL_BASE + 226);
|
||||
syscall_nr_lsetxattr = (__NR_SYSCALL_BASE + 227);
|
||||
syscall_nr_fsetxattr = (__NR_SYSCALL_BASE + 228);
|
||||
syscall_nr_getxattr = (__NR_SYSCALL_BASE + 229);
|
||||
syscall_nr_lgetxattr = (__NR_SYSCALL_BASE + 230);
|
||||
syscall_nr_fgetxattr = (__NR_SYSCALL_BASE + 231);
|
||||
syscall_nr_listxattr = (__NR_SYSCALL_BASE + 232);
|
||||
syscall_nr_llistxattr = (__NR_SYSCALL_BASE + 233);
|
||||
syscall_nr_flistxattr = (__NR_SYSCALL_BASE + 234);
|
||||
syscall_nr_removexattr = (__NR_SYSCALL_BASE + 235);
|
||||
syscall_nr_lremovexattr = (__NR_SYSCALL_BASE + 236);
|
||||
syscall_nr_fremovexattr = (__NR_SYSCALL_BASE + 237);
|
||||
syscall_nr_tkill = (__NR_SYSCALL_BASE + 238);
|
||||
syscall_nr_futex = (__NR_SYSCALL_BASE + 240);
|
||||
syscall_nr_sched_setaffinity = (__NR_SYSCALL_BASE + 241);
|
||||
syscall_nr_sched_getaffinity = (__NR_SYSCALL_BASE + 242);
|
||||
syscall_nr_set_thread_area = (__NR_SYSCALL_BASE + 243);
|
||||
syscall_nr_exit_group = (__NR_SYSCALL_BASE + 252);
|
||||
syscall_nr_epoll_create = (__NR_SYSCALL_BASE + 254);
|
||||
syscall_nr_epoll_ctl = (__NR_SYSCALL_BASE + 255);
|
||||
syscall_nr_epoll_wait = (__NR_SYSCALL_BASE + 256);
|
||||
syscall_nr_timer_create = (__NR_SYSCALL_BASE + 259);
|
||||
syscall_nr_timer_settime = (__NR_SYSCALL_BASE + 260);
|
||||
syscall_nr_timer_gettime = (__NR_SYSCALL_BASE + 261);
|
||||
syscall_nr_timer_getoverrun = (__NR_SYSCALL_BASE + 262);
|
||||
syscall_nr_timer_delete = (__NR_SYSCALL_BASE + 263);
|
||||
syscall_nr_clock_settime = (__NR_SYSCALL_BASE + 264);
|
||||
syscall_nr_clock_gettime = (__NR_SYSCALL_BASE + 265);
|
||||
syscall_nr_clock_getres = (__NR_SYSCALL_BASE + 266);
|
||||
syscall_nr_clock_nanosleep = (__NR_SYSCALL_BASE + 267);
|
||||
syscall_nr_statfs64 = (__NR_SYSCALL_BASE + 268);
|
||||
syscall_nr_fstatfs64 = (__NR_SYSCALL_BASE + 269);
|
||||
syscall_nr_tgkill = (__NR_SYSCALL_BASE + 270);
|
||||
syscall_nr_utimes = (__NR_SYSCALL_BASE + 271);
|
||||
syscall_nr_waitid = (__NR_SYSCALL_BASE + 284);
|
||||
syscall_nr_ioprio_set = (__NR_SYSCALL_BASE + 289);
|
||||
syscall_nr_ioprio_get = (__NR_SYSCALL_BASE + 290);
|
||||
syscall_nr_inotify_init = (__NR_SYSCALL_BASE + 291);
|
||||
syscall_nr_inotify_add_watch = (__NR_SYSCALL_BASE + 292);
|
||||
syscall_nr_inotify_rm_watch = (__NR_SYSCALL_BASE + 293);
|
||||
syscall_nr_openat = (__NR_SYSCALL_BASE + 295);
|
||||
syscall_nr_mkdirat = (__NR_SYSCALL_BASE + 296);
|
||||
syscall_nr_fchownat = (__NR_SYSCALL_BASE + 298);
|
||||
syscall_nr_fstatat64 = (__NR_SYSCALL_BASE + 300);
|
||||
syscall_nr_unlinkat = (__NR_SYSCALL_BASE + 301);
|
||||
syscall_nr_renameat = (__NR_SYSCALL_BASE + 302);
|
||||
syscall_nr_fchmodat = (__NR_SYSCALL_BASE + 306);
|
||||
syscall_nr_faccessat = (__NR_SYSCALL_BASE + 307);
|
||||
syscall_nr_unshare = (__NR_SYSCALL_BASE + 310);
|
||||
syscall_nr_getcpu = (__NR_SYSCALL_BASE + 318);
|
||||
syscall_nr_utimensat = (__NR_SYSCALL_BASE + 320);
|
||||
syscall_nr_eventfd2 = (__NR_SYSCALL_BASE + 328);
|
||||
syscall_nr_pipe2 = (__NR_SYSCALL_BASE + 331);
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_mount = 21 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 51 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_umount2 = 52 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 61 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 74 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 79 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 87 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 88 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_syslog = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 115 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 121 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 124 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 128 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 129 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 138 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 139 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid32 = 203 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 203 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups32 = 206 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 206 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid32 = 210 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 210 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid32 = 213 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 213 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid32 = 214 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 214 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 264 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 343 deprecated 'This syscall is blocked on Android 8+';
|
||||
|
249
rtl/android/mips64/sysnr.inc
Normal file
249
rtl/android/mips64/sysnr.inc
Normal file
@ -0,0 +1,249 @@
|
||||
// Available syscalls for mips64-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
syscall_nr_read = 5000;
|
||||
syscall_nr_write = 5001;
|
||||
syscall_nr_close = 5003;
|
||||
syscall_nr_fstat = 5005;
|
||||
syscall_nr_fstat64 = syscall_nr_fstat;
|
||||
syscall_nr_lseek = 5008;
|
||||
syscall_nr_mmap = 5009;
|
||||
syscall_nr_mmap64 = syscall_nr_mmap;
|
||||
syscall_nr_mprotect = 5010;
|
||||
syscall_nr_munmap = 5011;
|
||||
syscall_nr_brk = 5012;
|
||||
syscall_nr_rt_sigaction = 5013;
|
||||
syscall_nr_rt_sigprocmask = 5014;
|
||||
syscall_nr_ioctl = 5015;
|
||||
syscall_nr_pread64 = 5016;
|
||||
syscall_nr_pwrite64 = 5017;
|
||||
syscall_nr_readv = 5018;
|
||||
syscall_nr_writev = 5019;
|
||||
syscall_nr_sched_yield = 5023;
|
||||
syscall_nr_mremap = 5024;
|
||||
syscall_nr_msync = 5025;
|
||||
syscall_nr_mincore = 5026;
|
||||
syscall_nr_madvise = 5027;
|
||||
syscall_nr_dup = 5031;
|
||||
syscall_nr_nanosleep = 5034;
|
||||
syscall_nr_getitimer = 5035;
|
||||
syscall_nr_setitimer = 5036;
|
||||
syscall_nr_getpid = 5038;
|
||||
syscall_nr_sendfile = 5039;
|
||||
syscall_nr_socket = 5040;
|
||||
syscall_nr_connect = 5041;
|
||||
syscall_nr_sendto = 5043;
|
||||
syscall_nr_recvfrom = 5044;
|
||||
syscall_nr_sendmsg = 5045;
|
||||
syscall_nr_recvmsg = 5046;
|
||||
syscall_nr_shutdown = 5047;
|
||||
syscall_nr_bind = 5048;
|
||||
syscall_nr_listen = 5049;
|
||||
syscall_nr_getsockname = 5050;
|
||||
syscall_nr_getpeername = 5051;
|
||||
syscall_nr_socketpair = 5052;
|
||||
syscall_nr_setsockopt = 5053;
|
||||
syscall_nr_getsockopt = 5054;
|
||||
syscall_nr_clone = 5055;
|
||||
syscall_nr_execve = 5057;
|
||||
syscall_nr_exit = 5058;
|
||||
syscall_nr_wait4 = 5059;
|
||||
syscall_nr_kill = 5060;
|
||||
syscall_nr_uname = 5061;
|
||||
syscall_nr_fcntl = 5070;
|
||||
syscall_nr_flock = 5071;
|
||||
syscall_nr_fsync = 5072;
|
||||
syscall_nr_fdatasync = 5073;
|
||||
syscall_nr_truncate = 5074;
|
||||
syscall_nr_ftruncate = 5075;
|
||||
syscall_nr_ftruncate64 = syscall_nr_ftruncate;
|
||||
syscall_nr_getcwd = 5077;
|
||||
syscall_nr_chdir = 5078;
|
||||
syscall_nr_fchdir = 5079;
|
||||
syscall_nr_fchmod = 5089;
|
||||
syscall_nr_fchown = 5091;
|
||||
syscall_nr_umask = 5093;
|
||||
syscall_nr_gettimeofday = 5094;
|
||||
syscall_nr_getrlimit = 5095;
|
||||
syscall_nr_getrusage = 5096;
|
||||
syscall_nr_sysinfo = 5097;
|
||||
syscall_nr_times = 5098;
|
||||
syscall_nr_ptrace = 5099;
|
||||
syscall_nr_getuid = 5100;
|
||||
syscall_nr_getgid = 5102;
|
||||
syscall_nr_geteuid = 5105;
|
||||
syscall_nr_getegid = 5106;
|
||||
syscall_nr_setpgid = 5107;
|
||||
syscall_nr_getppid = 5108;
|
||||
syscall_nr_setsid = 5110;
|
||||
syscall_nr_setregid = 5112;
|
||||
syscall_nr_getgroups = 5113;
|
||||
syscall_nr_setresuid = 5115;
|
||||
syscall_nr_getresuid = 5116;
|
||||
syscall_nr_getresgid = 5118;
|
||||
syscall_nr_getpgid = 5119;
|
||||
syscall_nr_getsid = 5122;
|
||||
syscall_nr_capget = 5123;
|
||||
syscall_nr_capset = 5124;
|
||||
syscall_nr_rt_sigpending = 5125;
|
||||
syscall_nr_rt_sigtimedwait = 5126;
|
||||
syscall_nr_rt_sigqueueinfo = 5127;
|
||||
syscall_nr_rt_sigsuspend = 5128;
|
||||
syscall_nr_sigaltstack = 5129;
|
||||
syscall_nr_personality = 5132;
|
||||
syscall_nr_statfs = 5134;
|
||||
syscall_nr_fstatfs = 5135;
|
||||
syscall_nr_getpriority = 5137;
|
||||
syscall_nr_setpriority = 5138;
|
||||
syscall_nr_sched_setparam = 5139;
|
||||
syscall_nr_sched_getparam = 5140;
|
||||
syscall_nr_sched_setscheduler = 5141;
|
||||
syscall_nr_sched_getscheduler = 5142;
|
||||
syscall_nr_sched_get_priority_max = 5143;
|
||||
syscall_nr_sched_get_priority_min = 5144;
|
||||
syscall_nr_sched_rr_get_interval = 5145;
|
||||
syscall_nr_mlock = 5146;
|
||||
syscall_nr_munlock = 5147;
|
||||
syscall_nr_mlockall = 5148;
|
||||
syscall_nr_munlockall = 5149;
|
||||
syscall_nr_pivot_root = 5151;
|
||||
syscall_nr_prctl = 5153;
|
||||
syscall_nr_setrlimit = 5155;
|
||||
syscall_nr_sync = 5157;
|
||||
syscall_nr_quotactl = 5172;
|
||||
syscall_nr_gettid = 5178;
|
||||
syscall_nr_readahead = 5179;
|
||||
syscall_nr_setxattr = 5180;
|
||||
syscall_nr_lsetxattr = 5181;
|
||||
syscall_nr_fsetxattr = 5182;
|
||||
syscall_nr_getxattr = 5183;
|
||||
syscall_nr_lgetxattr = 5184;
|
||||
syscall_nr_fgetxattr = 5185;
|
||||
syscall_nr_listxattr = 5186;
|
||||
syscall_nr_llistxattr = 5187;
|
||||
syscall_nr_flistxattr = 5188;
|
||||
syscall_nr_removexattr = 5189;
|
||||
syscall_nr_lremovexattr = 5190;
|
||||
syscall_nr_fremovexattr = 5191;
|
||||
syscall_nr_tkill = 5192;
|
||||
syscall_nr_futex = 5194;
|
||||
syscall_nr_sched_setaffinity = 5195;
|
||||
syscall_nr_sched_getaffinity = 5196;
|
||||
syscall_nr_cacheflush = 5197;
|
||||
syscall_nr_io_setup = 5200;
|
||||
syscall_nr_io_destroy = 5201;
|
||||
syscall_nr_io_getevents = 5202;
|
||||
syscall_nr_io_submit = 5203;
|
||||
syscall_nr_io_cancel = 5204;
|
||||
syscall_nr_exit_group = 5205;
|
||||
syscall_nr_epoll_ctl = 5208;
|
||||
syscall_nr_rt_sigreturn = 5211;
|
||||
syscall_nr_set_tid_address = 5212;
|
||||
syscall_nr_restart_syscall = 5213;
|
||||
syscall_nr_fadvise64 = 5215;
|
||||
syscall_nr_timer_create = 5216;
|
||||
syscall_nr_timer_settime = 5217;
|
||||
syscall_nr_timer_gettime = 5218;
|
||||
syscall_nr_timer_getoverrun = 5219;
|
||||
syscall_nr_timer_delete = 5220;
|
||||
syscall_nr_clock_gettime = 5222;
|
||||
syscall_nr_clock_getres = 5223;
|
||||
syscall_nr_clock_nanosleep = 5224;
|
||||
syscall_nr_tgkill = 5225;
|
||||
syscall_nr_waitid = 5237;
|
||||
syscall_nr_set_thread_area = 5242;
|
||||
syscall_nr_inotify_add_watch = 5244;
|
||||
syscall_nr_inotify_rm_watch = 5245;
|
||||
syscall_nr_openat = 5247;
|
||||
syscall_nr_mkdirat = 5248;
|
||||
syscall_nr_mknodat = 5249;
|
||||
syscall_nr_fchownat = 5250;
|
||||
syscall_nr_newfstatat = 5252;
|
||||
syscall_nr_fstatat = syscall_nr_newfstatat;
|
||||
syscall_nr_fstatat64 = syscall_nr_newfstatat;
|
||||
syscall_nr_unlinkat = 5253;
|
||||
syscall_nr_renameat = 5254;
|
||||
syscall_nr_linkat = 5255;
|
||||
syscall_nr_symlinkat = 5256;
|
||||
syscall_nr_readlinkat = 5257;
|
||||
syscall_nr_fchmodat = 5258;
|
||||
syscall_nr_faccessat = 5259;
|
||||
syscall_nr_pselect6 = 5260;
|
||||
syscall_nr_ppoll = 5261;
|
||||
syscall_nr_unshare = 5262;
|
||||
syscall_nr_splice = 5263;
|
||||
syscall_nr_sync_file_range = 5264;
|
||||
syscall_nr_tee = 5265;
|
||||
syscall_nr_vmsplice = 5266;
|
||||
syscall_nr_getcpu = 5271;
|
||||
syscall_nr_epoll_pwait = 5272;
|
||||
syscall_nr_ioprio_set = 5273;
|
||||
syscall_nr_ioprio_get = 5274;
|
||||
syscall_nr_utimensat = 5275;
|
||||
syscall_nr_fallocate = 5279;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_timerfd_create = 5280;
|
||||
syscall_nr_timerfd_gettime = 5281;
|
||||
syscall_nr_timerfd_settime = 5282;
|
||||
syscall_nr_signalfd4 = 5283;
|
||||
syscall_nr_eventfd2 = 5284;
|
||||
syscall_nr_eventfd = syscall_nr_eventfd2;
|
||||
syscall_nr_epoll_create1 = 5285;
|
||||
syscall_nr_dup3 = 5286;
|
||||
syscall_nr_pipe2 = 5287;
|
||||
syscall_nr_inotify_init1 = 5288;
|
||||
syscall_nr_preadv = 5289;
|
||||
syscall_nr_pwritev = 5290;
|
||||
syscall_nr_rt_tgsigqueueinfo = 5291;
|
||||
syscall_nr_perf_event_open = 5292;
|
||||
syscall_nr_accept4 = 5293;
|
||||
syscall_nr_recvmmsg = 5294;
|
||||
syscall_nr_prlimit64 = 5297;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 5301;
|
||||
syscall_nr_sendmmsg = 5302;
|
||||
syscall_nr_setns = 5303;
|
||||
syscall_nr_process_vm_readv = 5304;
|
||||
syscall_nr_process_vm_writev = 5305;
|
||||
syscall_nr_getdents64 = 5308;
|
||||
syscall_nr_sched_setattr = 5309;
|
||||
syscall_nr_sched_getattr = 5310;
|
||||
syscall_nr_renameat2 = 5311;
|
||||
syscall_nr_seccomp = 5312;
|
||||
syscall_nr_getrandom = 5313;
|
||||
syscall_nr_memfd_create = 5314;
|
||||
syscall_nr_execveat = 5316;
|
||||
syscall_nr_mlock2 = 5319;
|
||||
syscall_nr_copy_file_range = 5320;
|
||||
syscall_nr_preadv2 = 5321;
|
||||
syscall_nr_pwritev2 = 5322;
|
||||
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_syslog = 5101 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 5101 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 5103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 5104 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 5111 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 5114 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 5117 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 5120 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 5121 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 5154 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 5156 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 5158 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 5159 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_mount = 5160 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_umount2 = 5161 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 5162 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 5163 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 5164 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 5165 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 5166 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 5168 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 5169 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 5221 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 5300 deprecated 'This syscall is blocked on Android 8+';
|
@ -1,95 +0,0 @@
|
||||
/*
|
||||
Library startup code for Android/MIPS
|
||||
by Vsevolod Alekseyev
|
||||
*/
|
||||
|
||||
.set noat
|
||||
.section ".text"
|
||||
.align 4
|
||||
|
||||
.global FPC_SHARED_LIB_START
|
||||
FPC_SHARED_LIB_START:
|
||||
.ent FPC_SHARED_LIB_START
|
||||
.frame $sp, 32, $ra
|
||||
.set noreorder
|
||||
.cpload $t9
|
||||
/*
|
||||
Stack structure:
|
||||
sp+16 - gp
|
||||
sp+20 - sp
|
||||
sp+24 - ra
|
||||
*/
|
||||
|
||||
/* Save old sp, align the stack, set up the frame, save regs */
|
||||
move $t0, $sp
|
||||
li $t1, -8
|
||||
and $sp, $sp, $t1
|
||||
subu $sp, $sp, 32
|
||||
.cprestore 16
|
||||
sw $t0, 20($sp)
|
||||
sw $ra, 24($sp)
|
||||
|
||||
/* Save initial stack pointer, return address */
|
||||
la $t0, __stkptr
|
||||
sw $sp, ($t0)
|
||||
|
||||
/* Get environment from libc */
|
||||
la $t0, environ
|
||||
lw $t0, ($t0)
|
||||
bne $t0, $zero, GotEnv
|
||||
nop
|
||||
la $t0, EmptyEnv
|
||||
GotEnv:
|
||||
la $t1, operatingsystem_parameter_envp
|
||||
sw $t0, ($t1)
|
||||
|
||||
/* Call main */
|
||||
jal FPC_LIB_MAIN_ANDROID
|
||||
nop
|
||||
/* Call library init */
|
||||
jal FPC_LIB_INIT_ANDROID
|
||||
nop
|
||||
|
||||
/* restore registers, exit */
|
||||
lw $ra, 24($sp)
|
||||
jr $ra
|
||||
lw $sp, 20($sp)
|
||||
.end FPC_SHARED_LIB_START
|
||||
.size FPC_SHARED_LIB_START, .-FPC_SHARED_LIB_START
|
||||
|
||||
/*************************/
|
||||
|
||||
.global _haltproc
|
||||
_haltproc:
|
||||
.ent _haltproc
|
||||
.set noreorder
|
||||
.cpload $t9
|
||||
la $t9, exit
|
||||
jr $t9
|
||||
nop
|
||||
.end _haltproc
|
||||
.size _haltproc, .-_haltproc
|
||||
|
||||
/*************************/
|
||||
|
||||
.comm __stkptr,4
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
operatingsystem_parameter_argc:
|
||||
.global operatingsystem_parameter_argc
|
||||
.long 1
|
||||
operatingsystem_parameter_argv:
|
||||
.global operatingsystem_parameter_argv
|
||||
.long EmptyCmdLine
|
||||
EmptyCmdLine:
|
||||
.long EmptyCmdStr
|
||||
EmptyCmdStr:
|
||||
.ascii "\0"
|
||||
|
||||
EmptyEnv:
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.section .init_array, "aw"
|
||||
.long FPC_SHARED_LIB_START
|
@ -1,57 +0,0 @@
|
||||
/*
|
||||
Startup code for Android/MIPS
|
||||
by Vsevolod Alekseyev
|
||||
*/
|
||||
|
||||
.set at
|
||||
.section ".text"
|
||||
.align 4
|
||||
|
||||
.global _fpc_start
|
||||
_fpc_start:
|
||||
.ent _fpc_start
|
||||
.set noreorder
|
||||
.cpload $t9
|
||||
|
||||
/*Align the stack, save the old sp */
|
||||
move $t0, $sp
|
||||
li $t1, -8
|
||||
and $sp, $sp, $t1
|
||||
sw $t0, __stkptr
|
||||
|
||||
/* Get argc/argv/envp from the stack; old sp is in t0 */
|
||||
lw $t1, ($t0)
|
||||
sw $t1, (operatingsystem_parameter_argc)
|
||||
addiu $t2, $t0, 4
|
||||
sw $t2, (operatingsystem_parameter_argv)
|
||||
addiu $t3, $t1, 1
|
||||
sll $t3, $t3, 2
|
||||
add $t2, $t2, $t3
|
||||
sw $t2, (operatingsystem_parameter_envp)
|
||||
|
||||
la $t9, _start
|
||||
jr $t9
|
||||
nop
|
||||
.end _fpc_start
|
||||
|
||||
/*************************/
|
||||
|
||||
.global _haltproc
|
||||
_haltproc:
|
||||
.ent _haltproc
|
||||
.set noreorder
|
||||
.cpload $t9
|
||||
lw $a0, (operatingsystem_result)
|
||||
la $t9, exit
|
||||
jr $t9
|
||||
nop
|
||||
.end _haltproc
|
||||
.size _haltproc, .-_haltproc
|
||||
|
||||
/*************************/
|
||||
|
||||
.comm __stkptr,4
|
||||
|
||||
.comm operatingsystem_parameter_envp,4
|
||||
.comm operatingsystem_parameter_argc,4
|
||||
.comm operatingsystem_parameter_argv,4
|
@ -1,220 +1,270 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2017 by Yuriy Sydorov,
|
||||
member of the Free Pascal development team.
|
||||
|
||||
Syscall nrs for mipsel-android
|
||||
|
||||
See the file COPYING.FPC, included in this distribution,
|
||||
for details about the copyright.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
|
||||
**********************************************************************}
|
||||
// Available syscalls for mips-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
__NR_SYSCALL_BASE = 4000;
|
||||
syscall_nr_exit = 4001;
|
||||
syscall_nr_fork = 4002;
|
||||
syscall_nr_read = 4003;
|
||||
syscall_nr_write = 4004;
|
||||
syscall_nr_open = 4005;
|
||||
syscall_nr_close = 4006;
|
||||
syscall_nr_creat = 4008;
|
||||
syscall_nr_unlink = 4010;
|
||||
syscall_nr_execve = 4011;
|
||||
syscall_nr_chdir = 4012;
|
||||
syscall_nr_lseek = 4019;
|
||||
syscall_nr_getpid = 4020;
|
||||
syscall_nr_getuid = 4024;
|
||||
syscall_nr_ptrace = 4026;
|
||||
syscall_nr_access = 4033;
|
||||
syscall_nr_sync = 4036;
|
||||
syscall_nr_kill = 4037;
|
||||
syscall_nr_rename = 4038;
|
||||
syscall_nr_mkdir = 4039;
|
||||
syscall_nr_dup = 4041;
|
||||
syscall_nr_pipe = 4042;
|
||||
syscall_nr_times = 4043;
|
||||
syscall_nr_brk = 4045;
|
||||
syscall_nr_getgid = 4047;
|
||||
syscall_nr_geteuid = 4049;
|
||||
syscall_nr_getegid = 4050;
|
||||
syscall_nr_ioctl = 4054;
|
||||
syscall_nr_fcntl = 4055;
|
||||
syscall_nr_setpgid = 4057;
|
||||
syscall_nr_umask = 4060;
|
||||
syscall_nr_dup2 = 4063;
|
||||
syscall_nr_getppid = 4064;
|
||||
syscall_nr_setsid = 4066;
|
||||
syscall_nr_sigaction = 4067;
|
||||
syscall_nr_setregid = 4071;
|
||||
syscall_nr_setrlimit = 4075;
|
||||
syscall_nr_getrlimit = 4076;
|
||||
syscall_nr_getrusage = 4077;
|
||||
syscall_nr_gettimeofday = 4078;
|
||||
syscall_nr_getgroups = 4080;
|
||||
syscall_nr_readlink = 4085;
|
||||
syscall_nr_mmap = 4090;
|
||||
syscall_nr_mmap64 = syscall_nr_mmap;
|
||||
syscall_nr_munmap = 4091;
|
||||
syscall_nr_truncate = 4092;
|
||||
syscall_nr_fchmod = 4094;
|
||||
syscall_nr_fchown = 4095;
|
||||
syscall_nr_getpriority = 4096;
|
||||
syscall_nr_setpriority = 4097;
|
||||
syscall_nr_setitimer = 4104;
|
||||
syscall_nr_getitimer = 4105;
|
||||
syscall_nr_wait4 = 4114;
|
||||
syscall_nr_sysinfo = 4116;
|
||||
syscall_nr_fsync = 4118;
|
||||
syscall_nr_sigreturn = 4119;
|
||||
syscall_nr_clone = 4120;
|
||||
syscall_nr_uname = 4122;
|
||||
syscall_nr_mprotect = 4125;
|
||||
syscall_nr_quotactl = 4131;
|
||||
syscall_nr_getpgid = 4132;
|
||||
syscall_nr_fchdir = 4133;
|
||||
syscall_nr_personality = 4136;
|
||||
syscall_nr__llseek = 4140;
|
||||
syscall_nr_getdents = 4141;
|
||||
syscall_nr__newselect = 4142;
|
||||
syscall_nr_flock = 4143;
|
||||
syscall_nr_msync = 4144;
|
||||
syscall_nr_readv = 4145;
|
||||
syscall_nr_writev = 4146;
|
||||
syscall_nr_cacheflush = 4147;
|
||||
syscall_nr_getsid = 4151;
|
||||
syscall_nr_fdatasync = 4152;
|
||||
syscall_nr_mlock = 4154;
|
||||
syscall_nr_munlock = 4155;
|
||||
syscall_nr_mlockall = 4156;
|
||||
syscall_nr_munlockall = 4157;
|
||||
syscall_nr_sched_setparam = 4158;
|
||||
syscall_nr_sched_getparam = 4159;
|
||||
syscall_nr_sched_setscheduler = 4160;
|
||||
syscall_nr_sched_getscheduler = 4161;
|
||||
syscall_nr_sched_yield = 4162;
|
||||
syscall_nr_sched_get_priority_max = 4163;
|
||||
syscall_nr_sched_get_priority_min = 4164;
|
||||
syscall_nr_sched_rr_get_interval = 4165;
|
||||
syscall_nr_nanosleep = 4166;
|
||||
syscall_nr_mremap = 4167;
|
||||
syscall_nr_bind = 4169;
|
||||
syscall_nr_connect = 4170;
|
||||
syscall_nr_getpeername = 4171;
|
||||
syscall_nr_getsockname = 4172;
|
||||
syscall_nr_getsockopt = 4173;
|
||||
syscall_nr_listen = 4174;
|
||||
syscall_nr_recvfrom = 4176;
|
||||
syscall_nr_recvmsg = 4177;
|
||||
syscall_nr_sendmsg = 4179;
|
||||
syscall_nr_sendto = 4180;
|
||||
syscall_nr_setsockopt = 4181;
|
||||
syscall_nr_shutdown = 4182;
|
||||
syscall_nr_socket = 4183;
|
||||
syscall_nr_socketpair = 4184;
|
||||
syscall_nr_setresuid = 4185;
|
||||
syscall_nr_getresuid = 4186;
|
||||
syscall_nr_poll = 4188;
|
||||
syscall_nr_getresgid = 4191;
|
||||
syscall_nr_prctl = 4192;
|
||||
syscall_nr_rt_sigreturn = 4193;
|
||||
syscall_nr_rt_sigaction = 4194;
|
||||
syscall_nr_rt_sigprocmask = 4195;
|
||||
syscall_nr_rt_sigpending = 4196;
|
||||
syscall_nr_rt_sigtimedwait = 4197;
|
||||
syscall_nr_rt_sigqueueinfo = 4198;
|
||||
syscall_nr_rt_sigsuspend = 4199;
|
||||
syscall_nr_pread64 = 4200;
|
||||
syscall_nr_pwrite64 = 4201;
|
||||
syscall_nr_getcwd = 4203;
|
||||
syscall_nr_capget = 4204;
|
||||
syscall_nr_capset = 4205;
|
||||
syscall_nr_sigaltstack = 4206;
|
||||
syscall_nr_sendfile = 4207;
|
||||
syscall_nr_mmap2 = 4210;
|
||||
syscall_nr_truncate64 = 4211;
|
||||
syscall_nr_ftruncate64 = 4212;
|
||||
syscall_nr_stat64 = 4213;
|
||||
syscall_nr_lstat64 = 4214;
|
||||
syscall_nr_fstat64 = 4215;
|
||||
syscall_nr_fstat = syscall_nr_fstat64;
|
||||
syscall_nr_mincore = 4217;
|
||||
syscall_nr_madvise = 4218;
|
||||
syscall_nr_getdents64 = 4219;
|
||||
syscall_nr_fcntl64 = 4220;
|
||||
syscall_nr_gettid = 4222;
|
||||
syscall_nr_readahead = 4223;
|
||||
syscall_nr_setxattr = 4224;
|
||||
syscall_nr_lsetxattr = 4225;
|
||||
syscall_nr_fsetxattr = 4226;
|
||||
syscall_nr_getxattr = 4227;
|
||||
syscall_nr_lgetxattr = 4228;
|
||||
syscall_nr_fgetxattr = 4229;
|
||||
syscall_nr_listxattr = 4230;
|
||||
syscall_nr_llistxattr = 4231;
|
||||
syscall_nr_flistxattr = 4232;
|
||||
syscall_nr_removexattr = 4233;
|
||||
syscall_nr_lremovexattr = 4234;
|
||||
syscall_nr_fremovexattr = 4235;
|
||||
syscall_nr_tkill = 4236;
|
||||
syscall_nr_sendfile64 = 4237;
|
||||
syscall_nr_futex = 4238;
|
||||
syscall_nr_sched_setaffinity = 4239;
|
||||
syscall_nr_sched_getaffinity = 4240;
|
||||
syscall_nr_io_setup = 4241;
|
||||
syscall_nr_io_destroy = 4242;
|
||||
syscall_nr_io_getevents = 4243;
|
||||
syscall_nr_io_submit = 4244;
|
||||
syscall_nr_io_cancel = 4245;
|
||||
syscall_nr_exit_group = 4246;
|
||||
syscall_nr_epoll_create = 4248;
|
||||
syscall_nr_epoll_ctl = 4249;
|
||||
syscall_nr_epoll_wait = 4250;
|
||||
syscall_nr_remap_file_pages = 4251;
|
||||
syscall_nr_set_tid_address = 4252;
|
||||
syscall_nr_restart_syscall = 4253;
|
||||
syscall_nr_fadvise64 = 4254;
|
||||
syscall_nr_statfs64 = 4255;
|
||||
syscall_nr_fstatfs64 = 4256;
|
||||
syscall_nr_timer_create = 4257;
|
||||
syscall_nr_timer_settime = 4258;
|
||||
syscall_nr_timer_gettime = 4259;
|
||||
syscall_nr_timer_getoverrun = 4260;
|
||||
syscall_nr_timer_delete = 4261;
|
||||
syscall_nr_clock_gettime = 4263;
|
||||
syscall_nr_clock_getres = 4264;
|
||||
syscall_nr_clock_nanosleep = 4265;
|
||||
syscall_nr_tgkill = 4266;
|
||||
syscall_nr_waitid = 4278;
|
||||
syscall_nr_set_thread_area = 4283;
|
||||
syscall_nr_inotify_init = 4284;
|
||||
syscall_nr_inotify_add_watch = 4285;
|
||||
syscall_nr_inotify_rm_watch = 4286;
|
||||
syscall_nr_openat = 4288;
|
||||
syscall_nr_mkdirat = 4289;
|
||||
syscall_nr_mknodat = 4290;
|
||||
syscall_nr_fchownat = 4291;
|
||||
syscall_nr_fstatat64 = 4293;
|
||||
syscall_nr_fstatat = syscall_nr_fstatat64;
|
||||
syscall_nr_unlinkat = 4294;
|
||||
syscall_nr_renameat = 4295;
|
||||
syscall_nr_linkat = 4296;
|
||||
syscall_nr_symlinkat = 4297;
|
||||
syscall_nr_readlinkat = 4298;
|
||||
syscall_nr_fchmodat = 4299;
|
||||
syscall_nr_faccessat = 4300;
|
||||
syscall_nr_pselect6 = 4301;
|
||||
syscall_nr_ppoll = 4302;
|
||||
syscall_nr_unshare = 4303;
|
||||
syscall_nr_splice = 4304;
|
||||
syscall_nr_sync_file_range = 4305;
|
||||
syscall_nr_tee = 4306;
|
||||
syscall_nr_vmsplice = 4307;
|
||||
syscall_nr_getcpu = 4312;
|
||||
syscall_nr_epoll_pwait = 4313;
|
||||
syscall_nr_utimensat = 4316;
|
||||
syscall_nr_eventfd = 4319;
|
||||
syscall_nr_fallocate = 4320;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_timerfd_create = 4321;
|
||||
syscall_nr_timerfd_gettime = 4322;
|
||||
syscall_nr_timerfd_settime = 4323;
|
||||
syscall_nr_signalfd4 = 4324;
|
||||
syscall_nr_eventfd2 = 4325;
|
||||
syscall_nr_epoll_create1 = 4326;
|
||||
syscall_nr_dup3 = 4327;
|
||||
syscall_nr_pipe2 = 4328;
|
||||
syscall_nr_inotify_init1 = 4329;
|
||||
syscall_nr_preadv = 4330;
|
||||
syscall_nr_pwritev = 4331;
|
||||
syscall_nr_rt_tgsigqueueinfo = 4332;
|
||||
syscall_nr_perf_event_open = 4333;
|
||||
syscall_nr_accept4 = 4334;
|
||||
syscall_nr_recvmmsg = 4335;
|
||||
syscall_nr_prlimit64 = 4338;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 4342;
|
||||
syscall_nr_sendmmsg = 4343;
|
||||
syscall_nr_setns = 4344;
|
||||
syscall_nr_process_vm_readv = 4345;
|
||||
syscall_nr_process_vm_writev = 4346;
|
||||
syscall_nr_sched_setattr = 4349;
|
||||
syscall_nr_sched_getattr = 4350;
|
||||
syscall_nr_renameat2 = 4351;
|
||||
syscall_nr_seccomp = 4352;
|
||||
syscall_nr_getrandom = 4353;
|
||||
syscall_nr_memfd_create = 4354;
|
||||
syscall_nr_execveat = 4356;
|
||||
syscall_nr_mlock2 = 4359;
|
||||
syscall_nr_copy_file_range = 4360;
|
||||
syscall_nr_preadv2 = 4361;
|
||||
syscall_nr_pwritev2 = 4362;
|
||||
|
||||
syscall_nr_exit = (__NR_SYSCALL_BASE + 1);
|
||||
syscall_nr_fork = (__NR_SYSCALL_BASE + 2);
|
||||
syscall_nr_read = (__NR_SYSCALL_BASE + 3);
|
||||
syscall_nr_write = (__NR_SYSCALL_BASE + 4);
|
||||
syscall_nr_open = (__NR_SYSCALL_BASE + 5);
|
||||
syscall_nr_close = (__NR_SYSCALL_BASE + 6);
|
||||
syscall_nr_link = (__NR_SYSCALL_BASE + 9);
|
||||
syscall_nr_unlink = (__NR_SYSCALL_BASE + 10);
|
||||
syscall_nr_execve = (__NR_SYSCALL_BASE + 11);
|
||||
syscall_nr_chdir = (__NR_SYSCALL_BASE + 12);
|
||||
syscall_nr_mknod = (__NR_SYSCALL_BASE + 14);
|
||||
syscall_nr_chmod = (__NR_SYSCALL_BASE + 15);
|
||||
syscall_nr_lseek = (__NR_SYSCALL_BASE + 19);
|
||||
syscall_nr_getpid = (__NR_SYSCALL_BASE + 20);
|
||||
syscall_nr_mount = (__NR_SYSCALL_BASE + 21);
|
||||
syscall_nr_ptrace = (__NR_SYSCALL_BASE + 26);
|
||||
syscall_nr_pause = (__NR_SYSCALL_BASE + 29);
|
||||
syscall_nr_access = (__NR_SYSCALL_BASE + 33);
|
||||
syscall_nr_sync = (__NR_SYSCALL_BASE + 36);
|
||||
syscall_nr_rename = (__NR_SYSCALL_BASE + 38);
|
||||
syscall_nr_mkdir = (__NR_SYSCALL_BASE + 39);
|
||||
syscall_nr_rmdir = (__NR_SYSCALL_BASE + 40);
|
||||
syscall_nr_dup = (__NR_SYSCALL_BASE + 41);
|
||||
syscall_nr_times = (__NR_SYSCALL_BASE + 43);
|
||||
syscall_nr_brk = (__NR_SYSCALL_BASE + 45);
|
||||
syscall_nr_acct = (__NR_SYSCALL_BASE + 51);
|
||||
syscall_nr_umount2 = (__NR_SYSCALL_BASE + 52);
|
||||
syscall_nr_ioctl = (__NR_SYSCALL_BASE + 54);
|
||||
syscall_nr_fcntl = (__NR_SYSCALL_BASE + 55);
|
||||
syscall_nr_setpgid = (__NR_SYSCALL_BASE + 57);
|
||||
syscall_nr_umask = (__NR_SYSCALL_BASE + 60);
|
||||
syscall_nr_chroot = (__NR_SYSCALL_BASE + 61);
|
||||
syscall_nr_dup2 = (__NR_SYSCALL_BASE + 63);
|
||||
syscall_nr_getppid = (__NR_SYSCALL_BASE + 64);
|
||||
syscall_nr_setsid = (__NR_SYSCALL_BASE + 66);
|
||||
syscall_nr_sigaction = (__NR_SYSCALL_BASE + 67);
|
||||
syscall_nr_sigpending = (__NR_SYSCALL_BASE + 73);
|
||||
syscall_nr_setrlimit = (__NR_SYSCALL_BASE + 75);
|
||||
syscall_nr_getrusage = (__NR_SYSCALL_BASE + 77);
|
||||
syscall_nr_gettimeofday = (__NR_SYSCALL_BASE + 78);
|
||||
syscall_nr_settimeofday = (__NR_SYSCALL_BASE + 79);
|
||||
syscall_nr_symlink = (__NR_SYSCALL_BASE + 83);
|
||||
syscall_nr_readlink = (__NR_SYSCALL_BASE + 85);
|
||||
syscall_nr_reboot = (__NR_SYSCALL_BASE + 88);
|
||||
syscall_nr_munmap = (__NR_SYSCALL_BASE + 91);
|
||||
syscall_nr_truncate = (__NR_SYSCALL_BASE + 92);
|
||||
syscall_nr_ftruncate = (__NR_SYSCALL_BASE + 93);
|
||||
syscall_nr_fchmod = (__NR_SYSCALL_BASE + 94);
|
||||
syscall_nr_getpriority = (__NR_SYSCALL_BASE + 96);
|
||||
syscall_nr_setpriority = (__NR_SYSCALL_BASE + 97);
|
||||
syscall_nr_syslog = (__NR_SYSCALL_BASE + 103);
|
||||
syscall_nr_setitimer = (__NR_SYSCALL_BASE + 104);
|
||||
syscall_nr_getitimer = (__NR_SYSCALL_BASE + 105);
|
||||
syscall_nr_wait4 = (__NR_SYSCALL_BASE + 114);
|
||||
syscall_nr_sysinfo = (__NR_SYSCALL_BASE + 116);
|
||||
syscall_nr_fsync = (__NR_SYSCALL_BASE + 118);
|
||||
syscall_nr_clone = (__NR_SYSCALL_BASE + 120);
|
||||
syscall_nr_uname = (__NR_SYSCALL_BASE + 122);
|
||||
syscall_nr_mprotect = (__NR_SYSCALL_BASE + 125);
|
||||
syscall_nr_sigprocmask = (__NR_SYSCALL_BASE + 126);
|
||||
syscall_nr_init_module = (__NR_SYSCALL_BASE + 128);
|
||||
syscall_nr_delete_module = (__NR_SYSCALL_BASE + 129);
|
||||
syscall_nr_getpgid = (__NR_SYSCALL_BASE + 132);
|
||||
syscall_nr_fchdir = (__NR_SYSCALL_BASE + 133);
|
||||
syscall_nr_personality = (__NR_SYSCALL_BASE + 136);
|
||||
syscall_nr__llseek = (__NR_SYSCALL_BASE + 140);
|
||||
syscall_nr__newselect = (__NR_SYSCALL_BASE + 142);
|
||||
syscall_nr_flock = (__NR_SYSCALL_BASE + 143);
|
||||
syscall_nr_msync = (__NR_SYSCALL_BASE + 144);
|
||||
syscall_nr_readv = (__NR_SYSCALL_BASE + 145);
|
||||
syscall_nr_writev = (__NR_SYSCALL_BASE + 146);
|
||||
syscall_nr_perf_event_open = (__NR_SYSCALL_BASE + 364);
|
||||
|
||||
syscall_nr_syscall = (__NR_SYSCALL_BASE + 0);
|
||||
syscall_nr_waitpid = (__NR_SYSCALL_BASE + 7);
|
||||
syscall_nr_lchown = (__NR_SYSCALL_BASE + 16);
|
||||
syscall_nr_setuid = (__NR_SYSCALL_BASE + 23);
|
||||
syscall_nr_getuid = (__NR_SYSCALL_BASE + 24);
|
||||
syscall_nr_kill = (__NR_SYSCALL_BASE + 37);
|
||||
syscall_nr_setgid = (__NR_SYSCALL_BASE + 46);
|
||||
syscall_nr_getgid = (__NR_SYSCALL_BASE + 47);
|
||||
syscall_nr_geteuid = (__NR_SYSCALL_BASE + 49);
|
||||
syscall_nr_getegid = (__NR_SYSCALL_BASE + 50);
|
||||
syscall_nr_setreuid = (__NR_SYSCALL_BASE + 70);
|
||||
syscall_nr_setregid = (__NR_SYSCALL_BASE + 71);
|
||||
syscall_nr_sigsuspend = (__NR_SYSCALL_BASE + 72);
|
||||
syscall_nr_getrlimit = (__NR_SYSCALL_BASE + 76);
|
||||
syscall_nr_getgroups = (__NR_SYSCALL_BASE + 80);
|
||||
syscall_nr_setgroups = (__NR_SYSCALL_BASE + 81);
|
||||
syscall_nr_fchown = (__NR_SYSCALL_BASE + 95);
|
||||
syscall_nr_cacheflush = (__NR_SYSCALL_BASE + 147);
|
||||
syscall_nr_fdatasync = (__NR_SYSCALL_BASE + 152);
|
||||
syscall_nr_mlock = (__NR_SYSCALL_BASE + 154);
|
||||
syscall_nr_munlock = (__NR_SYSCALL_BASE + 155);
|
||||
syscall_nr_sched_setparam = (__NR_SYSCALL_BASE + 158);
|
||||
syscall_nr_sched_getparam = (__NR_SYSCALL_BASE + 159);
|
||||
syscall_nr_sched_setscheduler = (__NR_SYSCALL_BASE + 160);
|
||||
syscall_nr_sched_getscheduler = (__NR_SYSCALL_BASE + 161);
|
||||
syscall_nr_sched_yield = (__NR_SYSCALL_BASE + 162);
|
||||
syscall_nr_sched_get_priority_max = (__NR_SYSCALL_BASE + 163);
|
||||
syscall_nr_sched_get_priority_min = (__NR_SYSCALL_BASE + 164);
|
||||
syscall_nr_sched_rr_get_interval = (__NR_SYSCALL_BASE + 165);
|
||||
syscall_nr_nanosleep = (__NR_SYSCALL_BASE + 166);
|
||||
syscall_nr_mremap = (__NR_SYSCALL_BASE + 167);
|
||||
syscall_nr_accept = (__NR_SYSCALL_BASE + 168);
|
||||
syscall_nr_bind = (__NR_SYSCALL_BASE + 169);
|
||||
syscall_nr_connect = (__NR_SYSCALL_BASE + 170);
|
||||
syscall_nr_getpeername = (__NR_SYSCALL_BASE + 171);
|
||||
syscall_nr_getsockname = (__NR_SYSCALL_BASE + 172);
|
||||
syscall_nr_getsockopt = (__NR_SYSCALL_BASE + 173);
|
||||
syscall_nr_listen = (__NR_SYSCALL_BASE + 174);
|
||||
syscall_nr_recvfrom = (__NR_SYSCALL_BASE + 176);
|
||||
syscall_nr_recvmsg = (__NR_SYSCALL_BASE + 177);
|
||||
syscall_nr_sendmsg = (__NR_SYSCALL_BASE + 179);
|
||||
syscall_nr_sendto = (__NR_SYSCALL_BASE + 180);
|
||||
syscall_nr_setsockopt = (__NR_SYSCALL_BASE + 181);
|
||||
syscall_nr_shutdown = (__NR_SYSCALL_BASE + 182);
|
||||
syscall_nr_socket = (__NR_SYSCALL_BASE + 183);
|
||||
syscall_nr_socketpair = (__NR_SYSCALL_BASE + 184);
|
||||
syscall_nr_setresuid = (__NR_SYSCALL_BASE + 185);
|
||||
syscall_nr_getresuid = (__NR_SYSCALL_BASE + 186);
|
||||
syscall_nr_poll = (__NR_SYSCALL_BASE + 188);
|
||||
syscall_nr_setresgid = (__NR_SYSCALL_BASE + 190);
|
||||
syscall_nr_getresgid = (__NR_SYSCALL_BASE + 191);
|
||||
syscall_nr_prctl = (__NR_SYSCALL_BASE + 192);
|
||||
syscall_nr_rt_sigaction = (__NR_SYSCALL_BASE + 194);
|
||||
syscall_nr_rt_sigprocmask = (__NR_SYSCALL_BASE + 195);
|
||||
syscall_nr_rt_sigtimedwait = (__NR_SYSCALL_BASE + 197);
|
||||
syscall_nr_pread64 = (__NR_SYSCALL_BASE + 200);
|
||||
syscall_nr_pwrite64 = (__NR_SYSCALL_BASE + 201);
|
||||
syscall_nr_chown = (__NR_SYSCALL_BASE + 202);
|
||||
syscall_nr_getcwd = (__NR_SYSCALL_BASE + 203);
|
||||
syscall_nr_capget = (__NR_SYSCALL_BASE + 204);
|
||||
syscall_nr_capset = (__NR_SYSCALL_BASE + 205);
|
||||
syscall_nr_sigaltstack = (__NR_SYSCALL_BASE + 206);
|
||||
syscall_nr_sendfile = (__NR_SYSCALL_BASE + 207);
|
||||
syscall_nr_mmap2 = (__NR_SYSCALL_BASE + 210);
|
||||
syscall_nr_ftruncate64 = (__NR_SYSCALL_BASE + 212);
|
||||
syscall_nr_stat64 = (__NR_SYSCALL_BASE + 213);
|
||||
syscall_nr_lstat64 = (__NR_SYSCALL_BASE + 214);
|
||||
syscall_nr_fstat64 = (__NR_SYSCALL_BASE + 215);
|
||||
syscall_nr_mincore = (__NR_SYSCALL_BASE + 217);
|
||||
syscall_nr_madvise = (__NR_SYSCALL_BASE + 218);
|
||||
syscall_nr_getdents64 = (__NR_SYSCALL_BASE + 219);
|
||||
syscall_nr_fcntl64 = (__NR_SYSCALL_BASE + 220);
|
||||
syscall_nr_gettid = (__NR_SYSCALL_BASE + 222);
|
||||
syscall_nr_readahead = (__NR_SYSCALL_BASE + 223);
|
||||
syscall_nr_setxattr = (__NR_SYSCALL_BASE + 224);
|
||||
syscall_nr_lsetxattr = (__NR_SYSCALL_BASE + 225);
|
||||
syscall_nr_fsetxattr = (__NR_SYSCALL_BASE + 226);
|
||||
syscall_nr_getxattr = (__NR_SYSCALL_BASE + 227);
|
||||
syscall_nr_lgetxattr = (__NR_SYSCALL_BASE + 228);
|
||||
syscall_nr_fgetxattr = (__NR_SYSCALL_BASE + 229);
|
||||
syscall_nr_listxattr = (__NR_SYSCALL_BASE + 230);
|
||||
syscall_nr_llistxattr = (__NR_SYSCALL_BASE + 231);
|
||||
syscall_nr_flistxattr = (__NR_SYSCALL_BASE + 232);
|
||||
syscall_nr_removexattr = (__NR_SYSCALL_BASE + 233);
|
||||
syscall_nr_lremovexattr = (__NR_SYSCALL_BASE + 234);
|
||||
syscall_nr_fremovexattr = (__NR_SYSCALL_BASE + 235);
|
||||
syscall_nr_tkill = (__NR_SYSCALL_BASE + 236);
|
||||
syscall_nr_futex = (__NR_SYSCALL_BASE + 238);
|
||||
syscall_nr_sched_setaffinity = (__NR_SYSCALL_BASE + 239);
|
||||
syscall_nr_sched_getaffinity = (__NR_SYSCALL_BASE + 240);
|
||||
syscall_nr_exit_group = (__NR_SYSCALL_BASE + 246);
|
||||
syscall_nr_epoll_create = (__NR_SYSCALL_BASE + 248);
|
||||
syscall_nr_epoll_ctl = (__NR_SYSCALL_BASE + 249);
|
||||
syscall_nr_epoll_wait = (__NR_SYSCALL_BASE + 250);
|
||||
syscall_nr_statfs64 = (__NR_SYSCALL_BASE + 255);
|
||||
syscall_nr_fstatfs64 = (__NR_SYSCALL_BASE + 256);
|
||||
syscall_nr_timer_create = (__NR_SYSCALL_BASE + 257);
|
||||
syscall_nr_timer_settime = (__NR_SYSCALL_BASE + 258);
|
||||
syscall_nr_timer_gettime = (__NR_SYSCALL_BASE + 259);
|
||||
syscall_nr_timer_getoverrun = (__NR_SYSCALL_BASE + 260);
|
||||
syscall_nr_timer_delete = (__NR_SYSCALL_BASE + 261);
|
||||
syscall_nr_clock_settime = (__NR_SYSCALL_BASE + 262);
|
||||
syscall_nr_clock_gettime = (__NR_SYSCALL_BASE + 263);
|
||||
syscall_nr_clock_getres = (__NR_SYSCALL_BASE + 264);
|
||||
syscall_nr_clock_nanosleep = (__NR_SYSCALL_BASE + 265);
|
||||
syscall_nr_tgkill = (__NR_SYSCALL_BASE + 266);
|
||||
syscall_nr_utimes = (__NR_SYSCALL_BASE + 267);
|
||||
syscall_nr_waitid = (__NR_SYSCALL_BASE + 278);
|
||||
syscall_nr_set_thread_area = (__NR_SYSCALL_BASE + 283);
|
||||
syscall_nr_inotify_init = (__NR_SYSCALL_BASE + 284);
|
||||
syscall_nr_inotify_add_watch = (__NR_SYSCALL_BASE + 285);
|
||||
syscall_nr_inotify_rm_watch = (__NR_SYSCALL_BASE + 286);
|
||||
syscall_nr_openat = (__NR_SYSCALL_BASE + 288);
|
||||
syscall_nr_mkdirat = (__NR_SYSCALL_BASE + 289);
|
||||
syscall_nr_fchownat = (__NR_SYSCALL_BASE + 291);
|
||||
syscall_nr_fstatat64 = (__NR_SYSCALL_BASE + 293);
|
||||
syscall_nr_unlinkat = (__NR_SYSCALL_BASE + 294);
|
||||
syscall_nr_renameat = (__NR_SYSCALL_BASE + 295);
|
||||
syscall_nr_fchmodat = (__NR_SYSCALL_BASE + 299);
|
||||
syscall_nr_faccessat = (__NR_SYSCALL_BASE + 300);
|
||||
syscall_nr_unshare = (__NR_SYSCALL_BASE + 303);
|
||||
syscall_nr_getcpu = (__NR_SYSCALL_BASE + 312);
|
||||
syscall_nr_ioprio_set = (__NR_SYSCALL_BASE + 314);
|
||||
syscall_nr_ioprio_get = (__NR_SYSCALL_BASE + 315);
|
||||
syscall_nr_utimensat = (__NR_SYSCALL_BASE + 316);
|
||||
syscall_nr_eventfd2 = (__NR_SYSCALL_BASE + 325);
|
||||
syscall_nr_pipe2 = (__NR_SYSCALL_BASE + 328);
|
||||
syscall_nr_pipe = (__NR_SYSCALL_BASE + 42);
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_mount = 4021 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 4023 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 4046 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 4051 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_umount2 = 4052 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 4061 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 4070 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 4074 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 4079 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 4081 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 4087 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 4088 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_syslog = 4103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 4103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 4115 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 4121 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 4124 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 4128 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 4129 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 4138 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 4139 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 4190 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 4262 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 4341 deprecated 'This syscall is blocked on Android 8+';
|
||||
|
34
rtl/android/prt0.as
Normal file
34
rtl/android/prt0.as
Normal file
@ -0,0 +1,34 @@
|
||||
#
|
||||
# This file is part of the Free Pascal run time library.
|
||||
# Copyright (c) 2018 by Yuriy Sydorov and other
|
||||
# members of the Free Pascal development team.
|
||||
#
|
||||
# See the file COPYING.FPC, included in this distribution,
|
||||
# for details about the copyright.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY;without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
#
|
||||
#**********************************************************************}
|
||||
#
|
||||
# Program startup code for Free Pascal. Android target.
|
||||
#
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.data
|
||||
/* Define a symbol for the first piece of initialized data. */
|
||||
.globl __data_start
|
||||
__data_start:
|
||||
.long 0
|
||||
.weak data_start
|
||||
data_start = __data_start
|
||||
|
||||
/* --------------------------------------------------------- */
|
||||
.section .init_array, "aw"
|
||||
|
||||
.ifdef CPU64
|
||||
.quad FPC_PROG_START_ANDROID
|
||||
.else
|
||||
.long FPC_PROG_START_ANDROID
|
||||
.endif
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
This file is part of the Free Pascal run time library.
|
||||
Copyright (c) 2015 by Yury Sidorov,
|
||||
Copyright (c) 2015-2018 by Yuriy Sydorov,
|
||||
member of the Free Pascal development team.
|
||||
|
||||
Android-specific part of the System unit.
|
||||
@ -13,6 +13,72 @@
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
**********************************************************************}
|
||||
|
||||
var
|
||||
__stkptr : Pointer; public name '__stkptr';
|
||||
operatingsystem_parameter_envp : Pointer; public name 'operatingsystem_parameter_envp';
|
||||
operatingsystem_parameter_argc : LongInt; public name 'operatingsystem_parameter_argc';
|
||||
operatingsystem_parameter_argv : Pointer; public name 'operatingsystem_parameter_argv';
|
||||
|
||||
_environ: pointer external name 'environ';
|
||||
|
||||
GetIcuProc: pointer; public name 'ANDROID_GET_ICU_PROC';
|
||||
|
||||
procedure CommonMainAndroid;
|
||||
const
|
||||
EmptyEnv: array[0..2] of PAnsiChar = (nil, nil, nil);
|
||||
EmptyCmdLine: array[0..0] of PAnsiChar = ( '' );
|
||||
var
|
||||
i: longint;
|
||||
p: PPAnsiChar;
|
||||
begin
|
||||
// Get the current stack pointer, adjust and save it
|
||||
__stkptr:=pointer(ptruint(Sptr) or $FFFF);
|
||||
// Get the environment from the environ variable of libc
|
||||
p:=_environ;
|
||||
if p = nil then
|
||||
operatingsystem_parameter_envp:=@EmptyEnv
|
||||
else
|
||||
begin
|
||||
operatingsystem_parameter_envp:=p;
|
||||
// Finding argc and argv. They are placed before envp
|
||||
Dec(p);
|
||||
if p^ = nil then
|
||||
begin
|
||||
i:=0;
|
||||
while i < 200 do
|
||||
begin
|
||||
Dec(p);
|
||||
if ptrint(p^) = i then
|
||||
begin
|
||||
// argc found
|
||||
operatingsystem_parameter_argc:=i;
|
||||
operatingsystem_parameter_argv:=p + 1;
|
||||
break;
|
||||
end;
|
||||
Inc(i);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
if operatingsystem_parameter_argc = 0 then
|
||||
begin
|
||||
// argc and argv are not available
|
||||
operatingsystem_parameter_argc:=1;
|
||||
operatingsystem_parameter_argv:=@EmptyCmdLine;
|
||||
end;
|
||||
end;
|
||||
|
||||
// ************* Program startup code
|
||||
|
||||
procedure ProgMainAndroid; cdecl; [public, alias:'FPC_PROG_START_ANDROID'];
|
||||
begin
|
||||
CommonMainAndroid;
|
||||
end;
|
||||
|
||||
// ************* Shared library startup code
|
||||
|
||||
procedure LibMainAndroid; external name 'FPC_LIB_MAIN_ANDROID';
|
||||
|
||||
procedure atexit(p: pointer); cdecl; external;
|
||||
|
||||
var
|
||||
@ -44,8 +110,15 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure SysInitAndroidLib; [public, alias:'FPC_LIB_INIT_ANDROID'];
|
||||
// This procedure is called first when a shared library is loaded
|
||||
|
||||
procedure AndroidLibStart; cdecl; [public, alias:'FPC_LIB_START_ANDROID'];
|
||||
begin
|
||||
CommonMainAndroid;
|
||||
// Call main code FPC_LIB_MAIN_ANDROID of the library.
|
||||
// It points either to a standard PASCALMAIN or FPC_JNI_LIB_MAIN_ANDROID if JNI_OnLoad is exported by the library
|
||||
// The linker makes all the magic.
|
||||
LibMainAndroid;
|
||||
{ Starting from Android 4.4 stdio handles are closed by libc prior to calling
|
||||
finalization routines of shared libraries. This causes a error while trying to
|
||||
writeln during library finalization and finally a crash because the error can
|
||||
@ -59,6 +132,38 @@ begin
|
||||
atexit(@SysAndroidLibExit);
|
||||
end;
|
||||
|
||||
// ************* JNI init
|
||||
|
||||
function JNI_OnLoad_Real(vm: pointer; reserved: pointer): longint;{$ifdef windows} stdcall {$else} cdecl {$endif}; external name 'FPC_JNI_ON_LOAD';
|
||||
procedure PascalMain; external name 'PASCALMAIN';
|
||||
|
||||
// This proxy function is called when JVM calls the JNI_OnLoad() exported function
|
||||
function JNI_OnLoad_Proxy(vm: pointer; reserved: pointer): longint;{$ifdef windows} stdcall {$else} cdecl {$endif}; [public, alias:'FPC_JNI_ON_LOAD_PROXY'];
|
||||
begin
|
||||
IsJniLibrary:=True;
|
||||
// Call library initialization
|
||||
PascalMain;
|
||||
// Call user's JNI_OnLoad().
|
||||
Result:=JNI_OnLoad_Real(vm, reserved);
|
||||
end;
|
||||
|
||||
// This procedure is called instead of library initialization when JNI_OnLoad is exported
|
||||
procedure JniLibMain; [public, alias:'FPC_JNI_LIB_MAIN_ANDROID'];
|
||||
begin
|
||||
// Must be empty.
|
||||
end;
|
||||
|
||||
// ************* haltproc
|
||||
|
||||
procedure _exit(e:longint); cdecl; external name 'exit';
|
||||
|
||||
procedure _haltproc(e:longint);cdecl; [public, alias: {$if defined(CPUARM) and defined(FPC_ABI_EABI)} '_haltproc_eabi' {$else} '_haltproc' {$endif}];
|
||||
begin
|
||||
_exit(e);
|
||||
end;
|
||||
|
||||
// ************* Misc functions
|
||||
|
||||
function __system_property_get(name:Pchar; value:Pchar):longint;cdecl;external 'c' name '__system_property_get';
|
||||
|
||||
function GetSystemProperty(Name: PAnsiChar): shortstring;
|
||||
@ -206,27 +311,6 @@ begin
|
||||
DefaultLogTag[len + 1]:=#0;
|
||||
end;
|
||||
|
||||
// ************* JNI init
|
||||
|
||||
function JNI_OnLoad_Real(vm: pointer; reserved: pointer): longint;{$ifdef windows} stdcall {$else} cdecl {$endif}; external name 'FPC_JNI_ON_LOAD';
|
||||
procedure PascalMain; external name 'PASCALMAIN';
|
||||
|
||||
// This proxy function is called when JVM calls the JNI_OnLoad() exported function
|
||||
function JNI_OnLoad_Proxy(vm: pointer; reserved: pointer): longint;{$ifdef windows} stdcall {$else} cdecl {$endif}; [public, alias:'FPC_JNI_ON_LOAD_PROXY'];
|
||||
begin
|
||||
IsJniLibrary:=True;
|
||||
// Call library initialization
|
||||
PascalMain;
|
||||
// Call user's JNI_OnLoad().
|
||||
Result:=JNI_OnLoad_Real(vm, reserved);
|
||||
end;
|
||||
|
||||
// This procedure is called instead of library initialization when JNI_OnLoad is exported
|
||||
procedure JniLibMain; [public, alias:'FPC_JNI_LIB_MAIN_ANDROID'];
|
||||
begin
|
||||
// Must be empty.
|
||||
end;
|
||||
|
||||
// ************* System init
|
||||
|
||||
procedure InitAndroid;
|
||||
|
@ -45,7 +45,7 @@ var
|
||||
TZStandardName: utf8string;
|
||||
TZDaylightName: utf8string;
|
||||
|
||||
function GetIcuProc(const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'CWSTRING_GET_ICU_PROC';
|
||||
GetIcuProc: function (const Name: AnsiString; var ProcPtr; libId: longint): boolean; external name 'ANDROID_GET_ICU_PROC';
|
||||
|
||||
procedure ReadTimeZoneFromICU;
|
||||
var
|
||||
@ -55,6 +55,7 @@ var
|
||||
err: UErrorCode;
|
||||
cal: UCalendar;
|
||||
begin
|
||||
if not Assigned(GetIcuProc) then exit;
|
||||
if not GetIcuProc('ucal_open', ucal_open, 1) then exit;
|
||||
if not GetIcuProc('ucal_close', ucal_close, 1) then exit;
|
||||
if not GetIcuProc('ucal_getTimeZoneDisplayName', ucal_getTimeZoneDisplayName, 1) then exit;
|
||||
@ -103,33 +104,33 @@ type
|
||||
true : (__tm_gmtoff : longint;__tm_zone : Pchar);
|
||||
end;
|
||||
|
||||
function localtime(t: PLongInt): Ptm; cdecl; external 'c' name 'localtime';
|
||||
function localtime(t: Ptime_t): Ptm; cdecl; external 'c' name 'localtime';
|
||||
|
||||
var
|
||||
c_tzname: array[0..1] of PAnsiChar; external 'c' name 'tzname';
|
||||
|
||||
procedure ReadTimeZoneFromLibC;
|
||||
function ReadTimeZoneFromLibC: boolean;
|
||||
var
|
||||
t: longint;
|
||||
t: time_t;
|
||||
tt: Ptm;
|
||||
begin
|
||||
t:=fptime;
|
||||
tt:=localtime(@t);
|
||||
ReadTimeZoneFromLibC:=False;
|
||||
tzname[false]:=c_tzname[0];
|
||||
tzname[true]:=c_tzname[1];
|
||||
t:=fptime;
|
||||
tt:=localtime(@t);
|
||||
if tt <> nil then
|
||||
begin
|
||||
tzdaylight:=tt^.tm_isdst <> 0;
|
||||
tzseconds:=tt^.tm_gmtoff;
|
||||
ReadTimeZoneFromLibC:=tzname[false] <> nil;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure InitLocalTime;
|
||||
begin
|
||||
if SystemApiLevel > 10 then
|
||||
ReadTimeZoneFromLibC;
|
||||
// If cuurent Android version is too old and does not support timezone
|
||||
// in libc, use ICU library.
|
||||
if tzname[false] = nil then
|
||||
if (SystemApiLevel <= 10) or not ReadTimeZoneFromLibC then
|
||||
// If current Android version is too old and does not support timezone
|
||||
// in libc, use ICU library.
|
||||
ReadTimeZoneFromICU;
|
||||
end;
|
||||
|
249
rtl/android/x86_64/sysnr.inc
Normal file
249
rtl/android/x86_64/sysnr.inc
Normal file
@ -0,0 +1,249 @@
|
||||
// Available syscalls for x86_64-android.
|
||||
// This file is autogenerated by the genandroidsyscalls.py script.
|
||||
// Script location: https://svn.freepascal.org/svn/fpcbuild/scripts/android
|
||||
|
||||
const
|
||||
syscall_nr_read = 0;
|
||||
syscall_nr_write = 1;
|
||||
syscall_nr_close = 3;
|
||||
syscall_nr_fstat = 5;
|
||||
syscall_nr_fstat64 = syscall_nr_fstat;
|
||||
syscall_nr_lseek = 8;
|
||||
syscall_nr_mmap = 9;
|
||||
syscall_nr_mmap64 = syscall_nr_mmap;
|
||||
syscall_nr_mprotect = 10;
|
||||
syscall_nr_munmap = 11;
|
||||
syscall_nr_brk = 12;
|
||||
syscall_nr_rt_sigaction = 13;
|
||||
syscall_nr_rt_sigprocmask = 14;
|
||||
syscall_nr_rt_sigreturn = 15;
|
||||
syscall_nr_ioctl = 16;
|
||||
syscall_nr_pread64 = 17;
|
||||
syscall_nr_pwrite64 = 18;
|
||||
syscall_nr_readv = 19;
|
||||
syscall_nr_writev = 20;
|
||||
syscall_nr_sched_yield = 24;
|
||||
syscall_nr_mremap = 25;
|
||||
syscall_nr_msync = 26;
|
||||
syscall_nr_mincore = 27;
|
||||
syscall_nr_madvise = 28;
|
||||
syscall_nr_dup = 32;
|
||||
syscall_nr_nanosleep = 35;
|
||||
syscall_nr_getitimer = 36;
|
||||
syscall_nr_setitimer = 38;
|
||||
syscall_nr_getpid = 39;
|
||||
syscall_nr_sendfile = 40;
|
||||
syscall_nr_socket = 41;
|
||||
syscall_nr_connect = 42;
|
||||
syscall_nr_sendto = 44;
|
||||
syscall_nr_recvfrom = 45;
|
||||
syscall_nr_sendmsg = 46;
|
||||
syscall_nr_recvmsg = 47;
|
||||
syscall_nr_shutdown = 48;
|
||||
syscall_nr_bind = 49;
|
||||
syscall_nr_listen = 50;
|
||||
syscall_nr_getsockname = 51;
|
||||
syscall_nr_getpeername = 52;
|
||||
syscall_nr_socketpair = 53;
|
||||
syscall_nr_setsockopt = 54;
|
||||
syscall_nr_getsockopt = 55;
|
||||
syscall_nr_clone = 56;
|
||||
syscall_nr_vfork = 58;
|
||||
syscall_nr_execve = 59;
|
||||
syscall_nr_exit = 60;
|
||||
syscall_nr_wait4 = 61;
|
||||
syscall_nr_kill = 62;
|
||||
syscall_nr_uname = 63;
|
||||
syscall_nr_fcntl = 72;
|
||||
syscall_nr_flock = 73;
|
||||
syscall_nr_fsync = 74;
|
||||
syscall_nr_fdatasync = 75;
|
||||
syscall_nr_truncate = 76;
|
||||
syscall_nr_ftruncate = 77;
|
||||
syscall_nr_ftruncate64 = syscall_nr_ftruncate;
|
||||
syscall_nr_getcwd = 79;
|
||||
syscall_nr_chdir = 80;
|
||||
syscall_nr_fchdir = 81;
|
||||
syscall_nr_fchmod = 91;
|
||||
syscall_nr_fchown = 93;
|
||||
syscall_nr_umask = 95;
|
||||
syscall_nr_gettimeofday = 96;
|
||||
syscall_nr_getrlimit = 97;
|
||||
syscall_nr_getrusage = 98;
|
||||
syscall_nr_sysinfo = 99;
|
||||
syscall_nr_times = 100;
|
||||
syscall_nr_ptrace = 101;
|
||||
syscall_nr_getuid = 102;
|
||||
syscall_nr_getgid = 104;
|
||||
syscall_nr_geteuid = 107;
|
||||
syscall_nr_getegid = 108;
|
||||
syscall_nr_setpgid = 109;
|
||||
syscall_nr_getppid = 110;
|
||||
syscall_nr_setsid = 112;
|
||||
syscall_nr_setregid = 114;
|
||||
syscall_nr_getgroups = 115;
|
||||
syscall_nr_setresuid = 117;
|
||||
syscall_nr_getresuid = 118;
|
||||
syscall_nr_getresgid = 120;
|
||||
syscall_nr_getpgid = 121;
|
||||
syscall_nr_getsid = 124;
|
||||
syscall_nr_capget = 125;
|
||||
syscall_nr_capset = 126;
|
||||
syscall_nr_rt_sigpending = 127;
|
||||
syscall_nr_rt_sigtimedwait = 128;
|
||||
syscall_nr_rt_sigqueueinfo = 129;
|
||||
syscall_nr_rt_sigsuspend = 130;
|
||||
syscall_nr_sigaltstack = 131;
|
||||
syscall_nr_personality = 135;
|
||||
syscall_nr_statfs = 137;
|
||||
syscall_nr_fstatfs = 138;
|
||||
syscall_nr_getpriority = 140;
|
||||
syscall_nr_setpriority = 141;
|
||||
syscall_nr_sched_setparam = 142;
|
||||
syscall_nr_sched_getparam = 143;
|
||||
syscall_nr_sched_setscheduler = 144;
|
||||
syscall_nr_sched_getscheduler = 145;
|
||||
syscall_nr_sched_get_priority_max = 146;
|
||||
syscall_nr_sched_get_priority_min = 147;
|
||||
syscall_nr_sched_rr_get_interval = 148;
|
||||
syscall_nr_mlock = 149;
|
||||
syscall_nr_munlock = 150;
|
||||
syscall_nr_mlockall = 151;
|
||||
syscall_nr_munlockall = 152;
|
||||
syscall_nr_pivot_root = 155;
|
||||
syscall_nr_prctl = 157;
|
||||
syscall_nr_arch_prctl = 158;
|
||||
syscall_nr_setrlimit = 160;
|
||||
syscall_nr_sync = 162;
|
||||
syscall_nr_quotactl = 179;
|
||||
syscall_nr_gettid = 186;
|
||||
syscall_nr_readahead = 187;
|
||||
syscall_nr_setxattr = 188;
|
||||
syscall_nr_lsetxattr = 189;
|
||||
syscall_nr_fsetxattr = 190;
|
||||
syscall_nr_getxattr = 191;
|
||||
syscall_nr_lgetxattr = 192;
|
||||
syscall_nr_fgetxattr = 193;
|
||||
syscall_nr_listxattr = 194;
|
||||
syscall_nr_llistxattr = 195;
|
||||
syscall_nr_flistxattr = 196;
|
||||
syscall_nr_removexattr = 197;
|
||||
syscall_nr_lremovexattr = 198;
|
||||
syscall_nr_fremovexattr = 199;
|
||||
syscall_nr_tkill = 200;
|
||||
syscall_nr_futex = 202;
|
||||
syscall_nr_sched_setaffinity = 203;
|
||||
syscall_nr_sched_getaffinity = 204;
|
||||
syscall_nr_io_setup = 206;
|
||||
syscall_nr_io_destroy = 207;
|
||||
syscall_nr_io_getevents = 208;
|
||||
syscall_nr_io_submit = 209;
|
||||
syscall_nr_io_cancel = 210;
|
||||
syscall_nr_getdents64 = 217;
|
||||
syscall_nr_set_tid_address = 218;
|
||||
syscall_nr_restart_syscall = 219;
|
||||
syscall_nr_fadvise64 = 221;
|
||||
syscall_nr_timer_create = 222;
|
||||
syscall_nr_timer_settime = 223;
|
||||
syscall_nr_timer_gettime = 224;
|
||||
syscall_nr_timer_getoverrun = 225;
|
||||
syscall_nr_timer_delete = 226;
|
||||
syscall_nr_clock_gettime = 228;
|
||||
syscall_nr_clock_getres = 229;
|
||||
syscall_nr_clock_nanosleep = 230;
|
||||
syscall_nr_exit_group = 231;
|
||||
syscall_nr_epoll_ctl = 233;
|
||||
syscall_nr_tgkill = 234;
|
||||
syscall_nr_waitid = 247;
|
||||
syscall_nr_ioprio_set = 251;
|
||||
syscall_nr_ioprio_get = 252;
|
||||
syscall_nr_inotify_add_watch = 254;
|
||||
syscall_nr_inotify_rm_watch = 255;
|
||||
syscall_nr_openat = 257;
|
||||
syscall_nr_mkdirat = 258;
|
||||
syscall_nr_mknodat = 259;
|
||||
syscall_nr_fchownat = 260;
|
||||
syscall_nr_newfstatat = 262;
|
||||
syscall_nr_fstatat = syscall_nr_newfstatat;
|
||||
syscall_nr_fstatat64 = syscall_nr_newfstatat;
|
||||
syscall_nr_unlinkat = 263;
|
||||
syscall_nr_renameat = 264;
|
||||
syscall_nr_linkat = 265;
|
||||
syscall_nr_symlinkat = 266;
|
||||
syscall_nr_readlinkat = 267;
|
||||
syscall_nr_fchmodat = 268;
|
||||
syscall_nr_faccessat = 269;
|
||||
syscall_nr_pselect6 = 270;
|
||||
syscall_nr_ppoll = 271;
|
||||
syscall_nr_unshare = 272;
|
||||
syscall_nr_splice = 275;
|
||||
syscall_nr_tee = 276;
|
||||
syscall_nr_sync_file_range = 277;
|
||||
syscall_nr_vmsplice = 278;
|
||||
syscall_nr_utimensat = 280;
|
||||
syscall_nr_epoll_pwait = 281;
|
||||
syscall_nr_timerfd_create = 283;
|
||||
syscall_nr_fallocate = 285;
|
||||
syscall_nr_fallocate64 = syscall_nr_fallocate;
|
||||
syscall_nr_timerfd_settime = 286;
|
||||
syscall_nr_timerfd_gettime = 287;
|
||||
syscall_nr_accept4 = 288;
|
||||
syscall_nr_signalfd4 = 289;
|
||||
syscall_nr_eventfd2 = 290;
|
||||
syscall_nr_eventfd = syscall_nr_eventfd2;
|
||||
syscall_nr_epoll_create1 = 291;
|
||||
syscall_nr_dup3 = 292;
|
||||
syscall_nr_pipe2 = 293;
|
||||
syscall_nr_inotify_init1 = 294;
|
||||
syscall_nr_preadv = 295;
|
||||
syscall_nr_pwritev = 296;
|
||||
syscall_nr_rt_tgsigqueueinfo = 297;
|
||||
syscall_nr_perf_event_open = 298;
|
||||
syscall_nr_recvmmsg = 299;
|
||||
syscall_nr_prlimit64 = 302;
|
||||
syscall_nr_prlimit = syscall_nr_prlimit64;
|
||||
syscall_nr_syncfs = 306;
|
||||
syscall_nr_sendmmsg = 307;
|
||||
syscall_nr_setns = 308;
|
||||
syscall_nr_getcpu = 309;
|
||||
syscall_nr_process_vm_readv = 310;
|
||||
syscall_nr_process_vm_writev = 311;
|
||||
syscall_nr_sched_setattr = 314;
|
||||
syscall_nr_sched_getattr = 315;
|
||||
syscall_nr_renameat2 = 316;
|
||||
syscall_nr_seccomp = 317;
|
||||
syscall_nr_getrandom = 318;
|
||||
syscall_nr_memfd_create = 319;
|
||||
syscall_nr_execveat = 322;
|
||||
syscall_nr_mlock2 = 325;
|
||||
syscall_nr_copy_file_range = 326;
|
||||
syscall_nr_preadv2 = 327;
|
||||
syscall_nr_pwritev2 = 328;
|
||||
|
||||
// The following syscalls are blocked by SECCOMP starting from Android 8.
|
||||
// Do not use them, unless you know what you are doing.
|
||||
const
|
||||
syscall_nr_syslog = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_klogctl = 103 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setuid = 105 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgid = 106 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setreuid = 113 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setgroups = 116 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setresgid = 119 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsuid = 122 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setfsgid = 123 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_adjtimex = 159 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_chroot = 161 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_acct = 163 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_settimeofday = 164 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_mount = 165 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_umount2 = 166 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapon = 167 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_swapoff = 168 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_reboot = 169 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_sethostname = 170 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_setdomainname = 171 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_init_module = 175 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_delete_module = 176 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_settime = 227 deprecated 'This syscall is blocked on Android 8+';
|
||||
syscall_nr_clock_adjtime = 305 deprecated 'This syscall is blocked on Android 8+';
|
@ -88,7 +88,7 @@
|
||||
|
||||
{$pop}
|
||||
|
||||
{$ELSEIF defined(UNIX)}
|
||||
{$ELSEIF defined(UNIX) and not defined(android)}
|
||||
|
||||
function getTempDir: string;
|
||||
var
|
||||
|
@ -42,6 +42,11 @@ type
|
||||
uc_flags : cULong;
|
||||
uc_link : PUContext;
|
||||
uc_stack : stack_t;
|
||||
uc_mcontext : TSigContext;
|
||||
uc_sigmask : sigset_t;
|
||||
__padding : array[1..128 - sizeof(sigset_t)] of byte;
|
||||
__pad : cULong;
|
||||
{ The following field should be 16-byte-aligned. Currently the
|
||||
directive for specifying alignment is buggy, so the preceding
|
||||
field was added so that the record has the right size. }
|
||||
uc_mcontext : TSigContext;
|
||||
end;
|
||||
|
@ -15,21 +15,6 @@
|
||||
|
||||
**********************************************************************}
|
||||
|
||||
{$ifdef android}
|
||||
const
|
||||
syscall_nr_pread = syscall_nr_pread64;
|
||||
syscall_nr_pwrite = syscall_nr_pwrite64;
|
||||
{$ifndef cpumips}
|
||||
syscall_nr_getuid = syscall_nr_getuid32;
|
||||
syscall_nr_geteuid = syscall_nr_geteuid32;
|
||||
syscall_nr_getgid = syscall_nr_getgid32;
|
||||
syscall_nr_getegid = syscall_nr_getegid32;
|
||||
syscall_nr_setuid = syscall_nr_setuid32;
|
||||
syscall_nr_setgid = syscall_nr_setgid32;
|
||||
syscall_nr_getgroups = syscall_nr_getgroups32;
|
||||
{$endif cpumips}
|
||||
{$endif android}
|
||||
|
||||
Function fpKill(Pid:pid_t;Sig:cint):cint;
|
||||
{
|
||||
Send signal 'sig' to a process, or a group of processes.
|
||||
@ -52,11 +37,7 @@ Function fpSigPending(var nset: TSigSet):cint;
|
||||
signals is set in SSet
|
||||
}
|
||||
begin
|
||||
{$ifdef android}
|
||||
fpsigpending:=do_syscall(syscall_nr_sigpending,TSysParam(@nset));
|
||||
{$else}
|
||||
fpsigpending:=do_syscall(syscall_nr_rt_sigpending,TSysParam(@nset));
|
||||
{$endif android}
|
||||
end;
|
||||
|
||||
function fpsigsuspend(const sigmask:TSigSet):cint;
|
||||
@ -66,11 +47,7 @@ function fpsigsuspend(const sigmask:TSigSet):cint;
|
||||
}
|
||||
|
||||
begin
|
||||
{$ifdef android}
|
||||
fpsigsuspend:= do_syscall(syscall_nr_sigsuspend,TSysParam(@sigmask));
|
||||
{$else}
|
||||
fpsigsuspend:= do_syscall(syscall_nr_rt_sigsuspend,TSysParam(@sigmask),TSysParam(8));
|
||||
{$endif android}
|
||||
end;
|
||||
|
||||
function fpsigtimedwait(const sigset:TSigSet;info:Psiginfo;timeout:Ptimespec):cint;
|
||||
@ -320,7 +297,7 @@ end;
|
||||
function fpgetpgrp : pid_t;
|
||||
|
||||
begin
|
||||
{$if defined(generic_linux_syscalls) or defined(android)}
|
||||
{$if defined(generic_linux_syscalls)}
|
||||
fpgetpgrp:=do_syscall(syscall_nr_getpgid,0);
|
||||
{$else}
|
||||
fpgetpgrp:=do_syscall(syscall_nr_getpgrp);
|
||||
@ -336,11 +313,7 @@ end;
|
||||
function fpgetsid (pid:TPid): pid_t;
|
||||
|
||||
begin
|
||||
{$ifdef android}
|
||||
fpgetsid:=0;
|
||||
{$else}
|
||||
fpgetsid:=do_syscall(syscall_nr_getsid,pid);
|
||||
{$endif android}
|
||||
end;
|
||||
|
||||
Function fpumask(cmask:mode_t):mode_t;
|
||||
@ -389,7 +362,7 @@ end;
|
||||
Function fpchown(path:pchar;owner:uid_t;group:gid_t):cint;
|
||||
|
||||
begin
|
||||
{$if defined(generic_linux_syscalls) or defined(android)}
|
||||
{$if defined(generic_linux_syscalls)}
|
||||
fpChOwn:=do_syscall(syscall_nr_fchownat,AT_FDCWD,TSysParam(path),TSysParam(owner),TSysParam(group),0);
|
||||
{$else}
|
||||
fpChOwn:=do_syscall(syscall_nr_chown,TSysParam(path),TSysParam(owner),TSysParam(group));
|
||||
@ -487,7 +460,7 @@ Function fpSelect(N:cint;readfds,writefds,exceptfds:pfdSet;TimeOut:PTimeVal):cin
|
||||
Select checks whether the file descriptor sets in readfs/writefs/exceptfs
|
||||
have changed.
|
||||
}
|
||||
{$if defined(generic_linux_syscalls)}
|
||||
{$if defined(generic_linux_syscalls) and not defined(NO_SYSCALL_PSELECT6)}
|
||||
|
||||
var ts : timespec;
|
||||
pts : PTimeSpec;
|
||||
@ -522,7 +495,7 @@ end;
|
||||
{$endif}
|
||||
|
||||
function fpPoll(fds: ppollfd; nfds: cuint; timeout: clong): cint;
|
||||
{$if defined(generic_linux_syscalls)}
|
||||
{$if defined(generic_linux_syscalls) and not defined(NO_SYSCALL_PPOLL)}
|
||||
var ts : timespec;
|
||||
begin
|
||||
if timeout<0 then
|
||||
@ -569,12 +542,12 @@ function fpNice(N:cint):cint;
|
||||
Doesn't exist in BSD. Linux emu uses setpriority in a construct as below:
|
||||
}
|
||||
|
||||
{$if defined(generic_linux_syscalls) or defined(cpux86_64) or defined(android)}
|
||||
{$if defined(generic_linux_syscalls) or defined(cpux86_64)}
|
||||
var
|
||||
oldprio : cint;
|
||||
{$endif}
|
||||
begin
|
||||
{$if defined(generic_linux_syscalls) or defined(cpux86_64) or defined(android)}
|
||||
{$if defined(generic_linux_syscalls) or defined(cpux86_64)}
|
||||
oldprio:=fpGetPriority(Prio_Process,0);
|
||||
fpNice:=fpSetPriority(Prio_Process,0,oldprio+N);
|
||||
if fpNice=0 then
|
||||
|
@ -110,6 +110,7 @@ const
|
||||
wake UADDR2; }
|
||||
|
||||
{$ifndef FPC_USE_LIBC}
|
||||
{$ifndef android}
|
||||
function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec;addr2:Pcint;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
function futex(var uaddr;op,val:cint;timeout:Ptimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
function futex(var uaddr;op,val:cint;var timeout:Ttimespec;var addr2;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
@ -117,6 +118,7 @@ function futex(var uaddr;op,val:cint;var timeout:Ttimespec;var addr2;val3:cint):
|
||||
function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
function futex(var uaddr;op,val:cint;timeout:Ptimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
function futex(var uaddr;op,val:cint;var timeout:Ttimespec):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
{$endif android}
|
||||
{$else}
|
||||
// futex is currently not exposed by glibc
|
||||
//function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec;addr2:Pcint;val3:cint):cint; cdecl; external name 'futex';
|
||||
@ -624,6 +626,8 @@ begin
|
||||
fdatasync:=do_SysCall(syscall_nr_fdatasync, fd);
|
||||
end;
|
||||
|
||||
{$ifndef android}
|
||||
|
||||
function futex(uaddr:Pcint;op,val:cint;timeout:Ptimespec;addr2:Pcint;val3:cint):cint;{$ifdef SYSTEMINLINE}inline;{$endif}
|
||||
|
||||
begin
|
||||
@ -663,6 +667,8 @@ begin
|
||||
futex:=do_syscall(syscall_nr_futex,Tsysparam(@uaddr),Tsysparam(op),Tsysparam(val),Tsysparam(@timeout));
|
||||
end;
|
||||
|
||||
{$endif android}
|
||||
|
||||
{$else}
|
||||
|
||||
{Libc case.}
|
||||
@ -753,12 +759,6 @@ begin
|
||||
clock_settime:=do_SysCall(syscall_nr_clock_settime,tsysparam(clk_id),tsysparam(tp));
|
||||
end;
|
||||
|
||||
{$if defined(android) and not defined(cpumips)}
|
||||
const
|
||||
syscall_nr_setregid = syscall_nr_setregid32;
|
||||
syscall_nr_setreuid = syscall_nr_setreuid32;
|
||||
{$endif}
|
||||
|
||||
function setregid(rgid,egid : uid_t): cint;
|
||||
|
||||
begin
|
||||
|
@ -12,6 +12,8 @@
|
||||
**********************************************************************}
|
||||
|
||||
|
||||
{$ifndef generic_linux_syscalls}
|
||||
|
||||
{$define FPC_BASEUNIX_HAS_FPPIPE}
|
||||
Function fppipe(var fildes : tfildes):cint;assembler;
|
||||
{
|
||||
@ -46,3 +48,5 @@ asm
|
||||
sw $v1,4($t1)
|
||||
.L2:
|
||||
end;
|
||||
|
||||
{$endif generic_linux_syscalls}
|
||||
|
@ -95,12 +95,15 @@
|
||||
{$endif cpusparc64}
|
||||
|
||||
{$ifdef android}
|
||||
{$define generic_linux_syscalls}
|
||||
{$ifdef cpuarm}
|
||||
{$define NO_SYSCALL_PSELECT6}
|
||||
{$define NO_SYSCALL_PPOLL}
|
||||
{$endif cpuarm}
|
||||
{$define userenameat}
|
||||
{$undef usestime}
|
||||
{$undef OLDMMAP}
|
||||
{$define MMAP2}
|
||||
{$define NO_SYSCALL_UTIME}
|
||||
{$ifndef cpumips}
|
||||
{$define NO_SYSCALL_GETRLIMIT}
|
||||
{$ifndef cpu64}
|
||||
{$define MMAP2}
|
||||
{$endif}
|
||||
{$define FPC_USEGETTIMEOFDAY}
|
||||
{$endif android}
|
||||
|
@ -249,13 +249,21 @@ asm
|
||||
end;
|
||||
{$endif cpusparc or cpusparc64}
|
||||
|
||||
{$ifndef android}
|
||||
{$if defined(android)}
|
||||
|
||||
{$if defined(cpux86_64)}
|
||||
{$define NEED_USER_TRAMPOLINE}
|
||||
{$endif}
|
||||
|
||||
{$else not android}
|
||||
|
||||
{$if defined(cpui386) or defined(cpuarm) or defined(cpux86_64)}
|
||||
{$define NEED_USER_TRAMPOLINE}
|
||||
{$endif}
|
||||
{$if defined(cpui386) or defined(cpuarm)}
|
||||
{$define NEED_USER_TRAMPOLINE_RT_DIFFERENT}
|
||||
{$endif}
|
||||
|
||||
{$endif android}
|
||||
|
||||
{$ifdef NEED_USER_TRAMPOLINE}
|
||||
|
@ -274,7 +274,7 @@ procedure UnhookSignal(RtlSigNum: Integer; OnlyIfHooked: Boolean = True);
|
||||
fillchar(act,sizeof(act),0);
|
||||
pointer(act.sa_handler):=pointer(SIG_DFL);
|
||||
end;
|
||||
if (fpsigaction(rtlsig2ossig[RtlSigNum],@act,nil)=0) then
|
||||
if (fpsigaction(rtlsig2ossig[i],@act,nil)=0) then
|
||||
siginfo[i].hooked:=false;
|
||||
end;
|
||||
end;
|
||||
|
@ -16,9 +16,6 @@ Unit Unix;
|
||||
Interface
|
||||
|
||||
Uses
|
||||
{$ifdef android}
|
||||
cwstring,
|
||||
{$endif android}
|
||||
BaseUnix,UnixType;
|
||||
// If you deprecated new symbols, please annotate the version.
|
||||
// this makes it easier to decide if they can already be removed.
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -461,9 +461,7 @@ else
|
||||
ifeq ($(CPU_TARGET),i386)
|
||||
BINUTILSPREFIX=i686-linux-android-
|
||||
else
|
||||
ifeq ($(CPU_TARGET),mipsel)
|
||||
BINUTILSPREFIX=mipsel-linux-android-
|
||||
endif
|
||||
BINUTILSPREFIX=$(CPU_TARGET)-linux-android-
|
||||
endif
|
||||
endif
|
||||
endif
|
||||
|
@ -143,7 +143,7 @@ interface
|
||||
{ wii } ( false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
{ aix } ( false, false, true, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
{ java } ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, false, false, false, false),
|
||||
{ android } ( true, false, false, false, false, true, false, false, false, false, false, true, false, false, true, false, false, false, false),
|
||||
{ android } ( true, false, false, false, true, true, false, false, false, false, false, true, false, false, true, false, true, false, false),
|
||||
{ msdos } ( false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true , false, false, false),
|
||||
{ aros } ( true, false, false, false, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
{dragonfly} ( false, false, false, false, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false),
|
||||
|
Loading…
Reference in New Issue
Block a user