Re:[pushed] [PATCH v2] LoongArch: initial ada support on linux
Pushed to r14-3669. 在 2023/9/4 上午10:42, Yang Yujie 写道: gcc/ChangeLog: * ada/Makefile.rtl: Add LoongArch support. * ada/libgnarl/s-linux__loongarch.ads: New. * ada/libgnat/system-linux-loongarch.ads: New. * config/loongarch/loongarch.h: mark normalized options passed from driver to gnat1 as explicit for multilib. --- gcc/ada/Makefile.rtl | 49 +++ gcc/ada/libgnarl/s-linux__loongarch.ads| 134 +++ gcc/ada/libgnat/system-linux-loongarch.ads | 145 + gcc/config/loongarch/loongarch.h | 4 +- 4 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 gcc/ada/libgnarl/s-linux__loongarch.ads create mode 100644 gcc/ada/libgnat/system-linux-loongarch.ads diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl index 96306f8cc9a..852a3324388 100644 --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -2111,6 +2111,55 @@ ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),) LIBRARY_VERSION := $(LIB_VERSION) endif +# LoongArch Linux +ifeq ($(strip $(filter-out loongarch% linux%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-exetim.adbhttp://www.gnu.org/licenses/>. -- +-- -- +-- + +-- This is the LoongArch version of this package + +-- This package encapsulates cpu specific differences between implementations +-- of GNU/Linux, in order to share s-osinte-linux.ads. + +-- PLEASE DO NOT add any with-clauses to this package or remove the pragma +-- Preelaborate. This package is designed to be a bottom-level (leaf) package + +with Interfaces.C; +with System.Parameters; + +package System.Linux is + pragma Preelaborate; + + -- + -- Time -- + -- + + subtype int is Interfaces.C.int; + subtype longis Interfaces.C.long; + subtype suseconds_t is Interfaces.C.long; + type time_t is range -2 ** (System.Parameters.time_t_bits - 1) + .. 2 ** (System.Parameters.time_t_bits - 1) - 1; + subtype clockid_t is Interfaces.C.int; + + type timespec is record + tv_sec : time_t; + tv_nsec : long; + end record; + pragma Convention (C, timespec); + + type timeval is record + tv_sec : time_t; + tv_usec : suseconds_t; + end record; + pragma Convention (C, timeval); + + --- + -- Errno -- + --- + + EAGAIN: constant := 11; + EINTR : constant := 4; + EINVAL: constant := 22; + ENOMEM: constant := 12; + EPERM : constant := 1; + ETIMEDOUT : constant := 110; + + - + -- Signals -- + - + + SIGHUP : constant := 1; -- hangup + SIGINT : constant := 2; -- interrupt (rubout) + SIGQUIT: constant := 3; -- quit (ASCD FS) + SIGILL : constant := 4; -- illegal instruction (not reset) + SIGTRAP: constant := 5; -- trace trap (not reset) + SIGIOT : constant := 6; -- IOT instruction + SIGABRT: constant := 6; -- used by abort, replace SIGIOT in the future + SIGBUS : constant := 7; -- bus error + SIGFPE : constant := 8; -- floating point exception + SIGKILL: constant := 9; -- kill (cannot be caught or ignored) + SIGUSR1: constant := 10; -- user defined signal 1 + SIGSEGV: constant := 11; -- segmentation violation + SIGUSR2: constant := 12; -- user defined signal 2 + SIGPIPE: constant := 13; -- write on a pipe with no one to read it + SIGALRM: constant := 14; -- alarm clock + SIGTERM: constant := 15; -- software termination signal from kill + SIGSTKFLT : constant := 16; -- coprocessor stack fault (Linux) + SIGCLD : constant := 17; -- alias for SIGCHLD + SIGCHLD: constant := 17; -- child status change + SIGCONT: constant := 18; -- stopped process has been continued + SIGSTOP: constant := 19; -- stop (cannot be caught or ignored) + SIGTSTP: constant := 20; -- user stop requested from tty + SIGTTIN: constant := 21; -- background tty read attempted + SIGTTOU: constant := 22; -- background tty write attempted + SIGURG : constant := 23; -- urgent condition on IO channel + SIGXCPU: constant := 24; -- CPU time limit exceeded + SIGXFSZ: constant := 25; -- filesize limit exceeded + SIGVTALRM : constant := 26; -- virtual timer expired + SIGPROF: constant := 27; -- profiling timer expired + SIGWINCH : constant := 28; -- window size change + SIGPOLL: constant := 29; -- pollable event occurred + SIGIO : constant := 29; -- I/O now possible (4.2 BSD) + SIGPWR : constant := 30; -- power-fail restart + SIGSYS : constant := 31; -- bad system call + SIG32 : constant := 32; -- glibc internal signal + SIG33 :
Re: [PATCH v2] LoongArch: initial ada support on linux
OK, thanks. > gcc/ChangeLog: > > * ada/Makefile.rtl: Add LoongArch support. > * ada/libgnarl/s-linux__loongarch.ads: New. > * ada/libgnat/system-linux-loongarch.ads: New. > * config/loongarch/loongarch.h: mark normalized options > passed from driver to gnat1 as explicit for multilib.
[PATCH v2] LoongArch: initial ada support on linux
gcc/ChangeLog: * ada/Makefile.rtl: Add LoongArch support. * ada/libgnarl/s-linux__loongarch.ads: New. * ada/libgnat/system-linux-loongarch.ads: New. * config/loongarch/loongarch.h: mark normalized options passed from driver to gnat1 as explicit for multilib. --- gcc/ada/Makefile.rtl | 49 +++ gcc/ada/libgnarl/s-linux__loongarch.ads| 134 +++ gcc/ada/libgnat/system-linux-loongarch.ads | 145 + gcc/config/loongarch/loongarch.h | 4 +- 4 files changed, 330 insertions(+), 2 deletions(-) create mode 100644 gcc/ada/libgnarl/s-linux__loongarch.ads create mode 100644 gcc/ada/libgnat/system-linux-loongarch.ads diff --git a/gcc/ada/Makefile.rtl b/gcc/ada/Makefile.rtl index 96306f8cc9a..852a3324388 100644 --- a/gcc/ada/Makefile.rtl +++ b/gcc/ada/Makefile.rtl @@ -2111,6 +2111,55 @@ ifeq ($(strip $(filter-out cygwin% mingw32% pe,$(target_os))),) LIBRARY_VERSION := $(LIB_VERSION) endif +# LoongArch Linux +ifeq ($(strip $(filter-out loongarch% linux%,$(target_cpu) $(target_os))),) + LIBGNAT_TARGET_PAIRS = \ + a-exetim.adbhttp://www.gnu.org/licenses/>. -- +-- -- +-- + +-- This is the LoongArch version of this package + +-- This package encapsulates cpu specific differences between implementations +-- of GNU/Linux, in order to share s-osinte-linux.ads. + +-- PLEASE DO NOT add any with-clauses to this package or remove the pragma +-- Preelaborate. This package is designed to be a bottom-level (leaf) package + +with Interfaces.C; +with System.Parameters; + +package System.Linux is + pragma Preelaborate; + + -- + -- Time -- + -- + + subtype int is Interfaces.C.int; + subtype longis Interfaces.C.long; + subtype suseconds_t is Interfaces.C.long; + type time_t is range -2 ** (System.Parameters.time_t_bits - 1) + .. 2 ** (System.Parameters.time_t_bits - 1) - 1; + subtype clockid_t is Interfaces.C.int; + + type timespec is record + tv_sec : time_t; + tv_nsec : long; + end record; + pragma Convention (C, timespec); + + type timeval is record + tv_sec : time_t; + tv_usec : suseconds_t; + end record; + pragma Convention (C, timeval); + + --- + -- Errno -- + --- + + EAGAIN: constant := 11; + EINTR : constant := 4; + EINVAL: constant := 22; + ENOMEM: constant := 12; + EPERM : constant := 1; + ETIMEDOUT : constant := 110; + + - + -- Signals -- + - + + SIGHUP : constant := 1; -- hangup + SIGINT : constant := 2; -- interrupt (rubout) + SIGQUIT: constant := 3; -- quit (ASCD FS) + SIGILL : constant := 4; -- illegal instruction (not reset) + SIGTRAP: constant := 5; -- trace trap (not reset) + SIGIOT : constant := 6; -- IOT instruction + SIGABRT: constant := 6; -- used by abort, replace SIGIOT in the future + SIGBUS : constant := 7; -- bus error + SIGFPE : constant := 8; -- floating point exception + SIGKILL: constant := 9; -- kill (cannot be caught or ignored) + SIGUSR1: constant := 10; -- user defined signal 1 + SIGSEGV: constant := 11; -- segmentation violation + SIGUSR2: constant := 12; -- user defined signal 2 + SIGPIPE: constant := 13; -- write on a pipe with no one to read it + SIGALRM: constant := 14; -- alarm clock + SIGTERM: constant := 15; -- software termination signal from kill + SIGSTKFLT : constant := 16; -- coprocessor stack fault (Linux) + SIGCLD : constant := 17; -- alias for SIGCHLD + SIGCHLD: constant := 17; -- child status change + SIGCONT: constant := 18; -- stopped process has been continued + SIGSTOP: constant := 19; -- stop (cannot be caught or ignored) + SIGTSTP: constant := 20; -- user stop requested from tty + SIGTTIN: constant := 21; -- background tty read attempted + SIGTTOU: constant := 22; -- background tty write attempted + SIGURG : constant := 23; -- urgent condition on IO channel + SIGXCPU: constant := 24; -- CPU time limit exceeded + SIGXFSZ: constant := 25; -- filesize limit exceeded + SIGVTALRM : constant := 26; -- virtual timer expired + SIGPROF: constant := 27; -- profiling timer expired + SIGWINCH : constant := 28; -- window size change + SIGPOLL: constant := 29; -- pollable event occurred + SIGIO : constant := 29; -- I/O now possible (4.2 BSD) + SIGPWR : constant := 30; -- power-fail restart + SIGSYS : constant := 31; -- bad system call + SIG32 : constant := 32; -- glibc internal signal + SIG33 : constant := 33; -- glibc internal signal + SIG34 : constant :=