소스 검색

+ Added support for the aarch64-android target.

git-svn-id: trunk@39862 -
yury 6 년 전
부모
커밋
671d31df1d

+ 3 - 0
.gitattributes

@@ -8788,6 +8788,9 @@ 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/aarch64/dllprt0.as svneol=native#text/plain
+rtl/android/aarch64/prt0.as svneol=native#text/plain
+rtl/android/aarch64/sysnr.inc svneol=native#text/plain
 rtl/android/arm/dllprt0.as svneol=native#text/plain
 rtl/android/arm/prt0.as svneol=native#text/plain
 rtl/android/arm/sysnr.inc svneol=native#text/plain

+ 3 - 0
compiler/aarch64/cputarg.pas

@@ -41,6 +41,9 @@ implementation
     {$ifndef NOTARGETBSD}
       ,t_bsd
     {$endif}
+    {$ifndef NOTARGETANDROID}
+      ,t_android
+    {$endif}
 
 {**************************************
              Assemblers

+ 4 - 5
compiler/options.pas

@@ -3751,16 +3751,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 }

+ 2 - 1
compiler/systems.inc

@@ -185,7 +185,8 @@
              system_riscv32_linux,      { 96 }
              system_riscv64_linux,      { 97 }
              system_riscv64_embedded,   { 98 }
-             system_riscv32_embedded    { 99 }
+             system_riscv32_embedded,   { 99 }
+             system_aarch64_android     { 100 }
        );
 
      type

+ 5 - 1
compiler/systems.pas

@@ -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_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,
@@ -1028,6 +1028,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}

+ 71 - 0
compiler/systems/i_android.pas

@@ -161,6 +161,72 @@ 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_mipsel_android_info : tsysteminfo =
           (
             system       : system_mipsel_android;
@@ -239,6 +305,11 @@ initialization
     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);

+ 9 - 0
compiler/systems/t_android.pas

@@ -175,7 +175,11 @@ begin
      ExtDbgCmd[1]:='objcopy --only-keep-debug $EXE $DBG';
      ExtDbgCmd[2]:='objcopy --add-gnu-debuglink=$DBG $EXE';
      ExtDbgCmd[3]:='strip --strip-unneeded $EXE';
+{$ifdef cpu64bit}
+     DynamicLinker:='/system/bin/linker64';
+{$else}
      DynamicLinker:='/system/bin/linker';
+{$endif cpu64bit}
    end;
 end;
 
@@ -486,6 +490,11 @@ 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);

+ 2 - 1
compiler/utils/ppuutils/ppudump.pp

@@ -187,7 +187,8 @@ const
   { 96 }  'Linux-RiscV32',
   { 97 }  'Linux-RiscV64',
   { 98 }  'Embedded-RiscV32',
-  { 99 }  'Embedded-RiscV64'
+  { 99 }  'Embedded-RiscV64',
+  { 100 } 'Android-AArch64'
   );
 
 const

+ 1 - 1
packages/fpmkunit/src/fpmkunit.pp

@@ -218,7 +218,7 @@ Const
     { iphonesim}( false, true,  false, false, false, true,  false, false, 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,  false,  false),
     { java }    ( false, false, false, false, false, false, false, false, false, false, false, false, true , false, false, false,  false,  false),
-    { android } ( false, true,  false, false, false, false, true,  false, false, false, false, true,  true , false, false, false,  false,  false),
+    { android } ( false, true,  false, false, false, false, true,  false, false, false, false, true,  true , false, true,  false,  false,  false),
     { nativent }( false, true,  false, false, 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,  false,  false),
     { wii }     ( false, false, false, true , false, false, false, false, false, false, false, false, false, false, false, false,  false,  false),

+ 1 - 0
rtl/Makefile.fpc

@@ -40,6 +40,7 @@ dirs_aix=aix
 dirs_java=java
 dirs_i386_android=android
 dirs_arm_android=android
+dirs_aarch64_android=android
 dirs_mipsel_android=android
 dirs_jvm_android=android/jvm
 dirs_msdos=msdos

+ 84 - 0
rtl/android/aarch64/dllprt0.as

@@ -0,0 +1,84 @@
+#
+#   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-ARM target.
+#
+
+.file   "dllprt0.as"
+.text
+.align 2
+        .globl  FPC_SHARED_LIB_START
+        .type   FPC_SHARED_LIB_START,#function
+FPC_SHARED_LIB_START:
+        stp	x29,x30,[sp, #-16]!
+
+        /* Save initial stackpointer */
+        adrp x14,:got:__stkptr
+        ldr	x14,[x14,#:got_lo12:__stkptr]
+        mov x13,sp
+        str x13,[x14]
+
+        /* Get environment info from libc */
+        adrp x14,:got:environ
+        ldr	x14,[x14,#:got_lo12:environ]
+        ldr x13,[x14]
+        /* Check if environment is NULL */
+        cmp x13,#0
+        b.ne .Lenvok
+
+        adrp x14,:got:EmptyEnv
+        ldr	x13,[x14,#:got_lo12:EmptyEnv]
+
+.Lenvok:
+        adrp x14,:got:operatingsystem_parameter_envp
+        ldr	x14,[x14,#:got_lo12:operatingsystem_parameter_envp]
+        str x13,[x14]
+
+        /* Call main */
+        bl FPC_LIB_MAIN_ANDROID
+        /* Call library init */
+        bl FPC_LIB_INIT_ANDROID
+
+        ldp	x29,x30,[sp], #16
+        ret
+
+/* --------------------------------------------------------- */
+        .globl  _haltproc
+        .type   _haltproc,#function
+_haltproc:
+        /* Simply call libc exit(). _haltproc has the same declaration as exit. */
+        bl exit
+
+/* --------------------------------------------------------- */
+.data
+        .comm __stkptr,8
+        .comm operatingsystem_parameter_envp,8
+operatingsystem_parameter_argc:
+        .global operatingsystem_parameter_argc
+        .long 1
+operatingsystem_parameter_argv:
+        .global operatingsystem_parameter_argv
+        .quad EmptyCmdLine
+EmptyCmdLine:
+        .quad EmptyCmdStr
+EmptyCmdStr:
+        .ascii "\0"
+EmptyEnv:
+        .quad 0
+        .quad 0
+        .quad 0
+
+/* --------------------------------------------------------- */
+      	.section .init_array, "aw"
+	      .quad FPC_SHARED_LIB_START

+ 91 - 0
rtl/android/aarch64/prt0.as

@@ -0,0 +1,91 @@
+#
+#   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-aarch64 target.
+#
+
+/* At this entry point, most registers' values are unspecified, except:
+
+   sp           The stack contains the arguments and environment:
+                0(sp)                   argc
+                8(sp)                   argv[0]
+                ...
+                (8*argc)(sp)            NULL
+                (8*(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".
+*/
+
+.file   "prt0.as"
+.text
+.align 2
+        .globl _fpc_start
+        .type _fpc_start,#function
+_fpc_start:
+        /* Clear the frame pointer since this is the outermost frame.  */
+        mov x29,#0
+        /* Save initial stackpointer and slightly adjust it */
+        adrp x14,:got:__stkptr
+        ldr	x14,[x14,#:got_lo12:__stkptr]
+        mov x0,sp
+        add x1,x0,#-64
+        str x1,[x14]
+        /* Get argc off the stack and save a pointer to argv */
+        ldr w1,[x0]
+        adrp x14,:got:operatingsystem_parameter_argc
+        ldr	x14,[x14,#:got_lo12:operatingsystem_parameter_argc]
+        str w1,[x14]
+        adrp x14,:got:operatingsystem_parameter_argv
+        ldr	x14,[x14,#:got_lo12:operatingsystem_parameter_argv]
+        add x0,x0,#8
+        str x0,[x14]
+
+        /* calc envp */
+        add x1,x1,#1
+        add x1,x0,x1,LSL #3
+        adrp x14,:got:operatingsystem_parameter_envp
+        ldr	x14,[x14,#:got_lo12:operatingsystem_parameter_envp]
+        str x1,[x14]
+        
+        /* Finally go to libc startup code. It will call "PASCALMAIN" via alias "main" */
+        b _start
+
+/* --------------------------------------------------------- */
+        .globl  _haltproc
+        .type   _haltproc,#function
+_haltproc:
+        /* 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,8
+        .comm operatingsystem_parameter_envp,8
+        .comm operatingsystem_parameter_argc,4
+        .comm operatingsystem_parameter_argv,8

+ 243 - 0
rtl/android/aarch64/sysnr.inc

@@ -0,0 +1,243 @@
+// 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_umount2 = 39; // Blacklisted. Do not use.
+  syscall_nr_mount = 40; // Blacklisted. Do not use.
+  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_chroot = 51; // Blacklisted. Do not use.
+  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_acct = 89; // Blacklisted. Do not use.
+  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_init_module = 105; // Blacklisted. Do not use.
+  syscall_nr_delete_module = 106; // Blacklisted. Do not use.
+  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_settime = 112; // Blacklisted. Do not use.
+  syscall_nr_clock_gettime = 113;
+  syscall_nr_clock_getres = 114;
+  syscall_nr_clock_nanosleep = 115;
+  syscall_nr_syslog = 116; // Blacklisted. Do not use.
+  syscall_nr_klogctl = syscall_nr_syslog; // Blacklisted. Do not use.
+  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_reboot = 142; // Blacklisted. Do not use.
+  syscall_nr_setregid = 143;
+  syscall_nr_setgid = 144; // Blacklisted. Do not use.
+  syscall_nr_setreuid = 145; // Blacklisted. Do not use.
+  syscall_nr_setuid = 146; // Blacklisted. Do not use.
+  syscall_nr_setresuid = 147;
+  syscall_nr_getresuid = 148;
+  syscall_nr_setresgid = 149; // Blacklisted. Do not use.
+  syscall_nr_getresgid = 150;
+  syscall_nr_setfsuid = 151; // Blacklisted. Do not use.
+  syscall_nr_setfsgid = 152; // Blacklisted. Do not use.
+  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_setgroups = 159; // Blacklisted. Do not use.
+  syscall_nr_uname = 160;
+  syscall_nr_sethostname = 161; // Blacklisted. Do not use.
+  syscall_nr_setdomainname = 162; // Blacklisted. Do not use.
+  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_settimeofday = 170; // Blacklisted. Do not use.
+  syscall_nr_adjtimex = 171; // Blacklisted. Do not use.
+  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_swapon = 224; // Blacklisted. Do not use.
+  syscall_nr_swapoff = 225; // Blacklisted. Do not use.
+  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_clock_adjtime = 266; // Blacklisted. Do not use.
+  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;

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 166 - 167
utils/fpcm/fpcmake.inc


+ 1 - 3
utils/fpcm/fpcmake.ini

@@ -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

+ 1 - 1
utils/fpcm/fpcmmain.pp

@@ -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, false,  false),
         { aix }     ( false, false, true,  false, false, false, true,  false, false, 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, false,  false),
-        { android } ( true,  false, false, false, false, true,  false, false, false, false, false, true,  false, false,   true,  false, false, false, false, false,  false),
+        { android } ( true,  false, false, false, false, true,  false, false, false, false, false, true,  false, false,   true,  false, true,  false, false, false,  false),
         { msdos }   ( false, false, false, false, false, false, false, false, false, false, false, false, false, false,   false, true , false, false, false, false,  false),
         { aros }    ( true,  false, false, false, true,  true,  false, false, 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, false,  false),

이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.